View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2007 eviware.com 
3    *
4    *  soapUI is free software; you can redistribute it and/or modify it under the 
5    *  terms of version 2.1 of the GNU Lesser General Public License as published by 
6    *  the Free Software Foundation.
7    *
8    *  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 
9    *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
10   *  See the GNU Lesser General Public License for more details at gnu.org.
11   */
12  
13  package com.eviware.soapui.impl.wsdl.panels.request.components.editor.inspectors.wss;
14  
15  import java.beans.PropertyChangeEvent;
16  import java.beans.PropertyChangeListener;
17  import java.util.Vector;
18  
19  import com.eviware.soapui.impl.wsdl.WsdlRequest;
20  import com.eviware.soapui.impl.wsdl.mock.WsdlMockResponse;
21  import com.eviware.soapui.impl.wsdl.panels.request.components.editor.XmlEditor;
22  import com.eviware.soapui.impl.wsdl.panels.request.components.editor.XmlInspector;
23  import com.eviware.soapui.impl.wsdl.panels.request.components.editor.inspectors.registry.RequestInspectorFactory;
24  import com.eviware.soapui.impl.wsdl.panels.request.components.editor.inspectors.registry.ResponseInspectorFactory;
25  import com.eviware.soapui.impl.wsdl.support.MessageExchangeModelItem;
26  import com.eviware.soapui.model.ModelItem;
27  
28  public class WssInspectorFactory implements RequestInspectorFactory, ResponseInspectorFactory
29  {
30  	public static final String INSPECTOR_ID = "WSS";
31  
32  	public String getInspectorId()
33  	{
34  		return INSPECTOR_ID;
35  	}
36  
37  	public XmlInspector createRequestInspector( XmlEditor editor, ModelItem modelItem )
38  	{
39  		if( modelItem instanceof WsdlMockResponse )
40  		{
41  			return new WsdlMockRequestWssInspector( (WsdlMockResponse)modelItem );
42  		}
43  		else if( modelItem instanceof MessageExchangeModelItem )
44  		{
45  			return new RequestMessageExchangeWssInspector( (MessageExchangeModelItem)modelItem );
46  		}
47  		
48  		return null;
49  	}
50  
51  	public XmlInspector createResponseInspector( XmlEditor editor, ModelItem modelItem )
52  	{
53  		if( modelItem instanceof WsdlRequest )
54  		{
55  			return new WsdlResponseWssInspector( (WsdlRequest)modelItem ) ;
56  		}
57  		else if( modelItem instanceof MessageExchangeModelItem )
58  		{
59  			return new ResponseMessageExchangeWssInspector( (MessageExchangeModelItem)modelItem );
60  		}
61  		
62  		return null;
63  	}
64  	
65  	public class WsdlMockRequestWssInspector extends AbstractWssInspector implements XmlInspector, PropertyChangeListener
66  	{
67  		private final WsdlMockResponse response;
68  
69  		public WsdlMockRequestWssInspector( WsdlMockResponse response )
70  		{
71  			this.response = response;
72  			
73  			response.addPropertyChangeListener( WsdlMockResponse.MOCKRESULT_PROPERTY, this );
74  		}
75  
76  		@Override
77  		public Vector getWssResults()
78  		{
79  			return response.getMockResult() == null ? null : response.getMockResult().getRequestWssResult();
80  		}
81  
82  		public void propertyChange( PropertyChangeEvent evt )
83  		{
84  			update();
85  		}
86  
87  		@Override
88  		public void release()
89  		{
90  			response.removePropertyChangeListener( WsdlMockResponse.MOCKRESULT_PROPERTY, this );
91  		}
92  	}
93  	
94  	public class RequestMessageExchangeWssInspector extends AbstractWssInspector implements XmlInspector, PropertyChangeListener
95  	{
96  		private final MessageExchangeModelItem item;
97  
98  		public RequestMessageExchangeWssInspector( MessageExchangeModelItem item )
99  		{
100 			this.item = item;
101 			
102 			item.addPropertyChangeListener( MessageExchangeModelItem.MESSAGE_EXCHANGE, this );
103 		}
104 
105 		@Override
106 		public Vector getWssResults()
107 		{
108 			return item.getMessageExchange() == null ? null : item.getMessageExchange().getRequestWssResult();
109 		}
110 
111 		public void propertyChange( PropertyChangeEvent evt )
112 		{
113 			update();
114 		}
115 
116 		@Override
117 		public void release()
118 		{
119 			item.removePropertyChangeListener(MessageExchangeModelItem.MESSAGE_EXCHANGE, this );
120 		}
121 	}
122 	
123 	public class WsdlResponseWssInspector extends AbstractWssInspector implements XmlInspector, PropertyChangeListener
124 	{
125 		private final WsdlRequest response;
126 
127 		public WsdlResponseWssInspector( WsdlRequest response )
128 		{
129 			this.response = response;
130 			
131 			response.addPropertyChangeListener( WsdlRequest.RESPONSE_PROPERTY, this );
132 		}
133 
134 		@Override
135 		public Vector getWssResults()
136 		{
137 			return response.getResponse() == null ? null : response.getResponse().getWssResult();
138 		}
139 
140 		public void propertyChange( PropertyChangeEvent evt )
141 		{
142 			update();
143 		}
144 
145 		@Override
146 		public void release()
147 		{
148 			response.removePropertyChangeListener(  WsdlRequest.RESPONSE_PROPERTY, this );
149 		}
150 	}
151 	
152 	public class ResponseMessageExchangeWssInspector extends AbstractWssInspector implements XmlInspector, PropertyChangeListener
153 	{
154 		private final MessageExchangeModelItem item;
155 
156 		public ResponseMessageExchangeWssInspector( MessageExchangeModelItem item )
157 		{
158 			this.item = item;
159 			
160 			item.addPropertyChangeListener( MessageExchangeModelItem.MESSAGE_EXCHANGE, this );
161 		}
162 
163 		@Override
164 		public Vector getWssResults()
165 		{
166 			return item.getMessageExchange() == null ? null : item.getMessageExchange().getResponseWssResult();
167 		}
168 
169 		public void propertyChange( PropertyChangeEvent evt )
170 		{
171 			update();
172 		}
173 
174 		@Override
175 		public void release()
176 		{
177 			item.removePropertyChangeListener(MessageExchangeModelItem.MESSAGE_EXCHANGE, this );
178 		}
179 	}
180 }