1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.model.tree.nodes;
14
15 import java.util.ArrayList;
16 import java.util.List;
17
18 import com.eviware.soapui.model.iface.Interface;
19 import com.eviware.soapui.model.iface.InterfaceListener;
20 import com.eviware.soapui.model.iface.Operation;
21 import com.eviware.soapui.model.iface.Request;
22 import com.eviware.soapui.model.tree.AbstractModelItemTreeNode;
23 import com.eviware.soapui.model.tree.SoapUITreeModel;
24 import com.eviware.soapui.model.tree.SoapUITreeNode;
25
26 /***
27 * SoapUITreeNode for Interface implementations
28 *
29 * @author Ole.Matzura
30 */
31
32 public class InterfaceTreeNode extends AbstractModelItemTreeNode<Interface>
33 {
34 private InternalInterfaceListener interfaceListener;
35 private List<OperationTreeNode> operationNodes = new ArrayList<OperationTreeNode>();
36
37 public InterfaceTreeNode( Interface iface, SoapUITreeModel treeModel )
38 {
39 super( iface, iface.getProject(), treeModel );
40
41 interfaceListener = new InternalInterfaceListener();
42 iface.addInterfaceListener( interfaceListener);
43
44 for( int c = 0; c < iface.getOperationCount(); c++ )
45 {
46 operationNodes.add( new OperationTreeNode( iface.getOperationAt( c ), getTreeModel() ));
47 }
48
49 treeModel.mapModelItems( operationNodes );
50 }
51
52 public void release()
53 {
54 super.release();
55
56 getInterface().removeInterfaceListener( interfaceListener );
57
58 for( OperationTreeNode treeNode : operationNodes )
59 treeNode.release();
60 }
61
62 public Interface getInterface()
63 {
64 return (Interface) getModelItem();
65 }
66
67 public int getChildCount()
68 {
69 return operationNodes.size();
70 }
71
72 public int getIndexOfChild(Object child)
73 {
74 return operationNodes.indexOf( child );
75 }
76
77 public SoapUITreeNode getChildNode(int index)
78 {
79 return operationNodes.get( index );
80 }
81
82 private class InternalInterfaceListener implements InterfaceListener
83 {
84 public void requestAdded(Request request)
85 {
86 OperationTreeNode operationTreeNode = (OperationTreeNode) getTreeModel().getTreeNode( request.getOperation() );
87 if( operationTreeNode != null )
88 operationTreeNode.requestAdded( request );
89 }
90
91 public void requestRemoved(Request request)
92 {
93 OperationTreeNode operationTreeNode = (OperationTreeNode) getTreeModel().getTreeNode( request.getOperation() );
94 if( operationTreeNode != null )
95 operationTreeNode.requestRemoved( request );
96 }
97
98 public void operationAdded(Operation operation)
99 {
100 OperationTreeNode operationTreeNode = new OperationTreeNode( operation, getTreeModel() );
101 operationNodes.add( operationTreeNode );
102 getTreeModel().notifyNodeInserted( operationTreeNode );
103 }
104
105 public void operationRemoved(Operation operation)
106 {
107 SoapUITreeNode treeNode = getTreeModel().getTreeNode( operation );
108 if( operationNodes.contains( treeNode))
109 {
110 getTreeModel().notifyNodeRemoved( treeNode );
111 operationNodes.remove( treeNode );
112 }
113 else throw new RuntimeException( "Removing unkown operation" );
114 }
115
116 public void operationUpdated( Operation operation )
117 {
118 }
119 }
120 }