View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2010 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.support.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.submit.WsdlMessageExchange;
22  import com.eviware.soapui.impl.wsdl.support.MessageExchangeModelItem;
23  import com.eviware.soapui.model.ModelItem;
24  import com.eviware.soapui.support.editor.Editor;
25  import com.eviware.soapui.support.editor.EditorInspector;
26  import com.eviware.soapui.support.editor.registry.RequestInspectorFactory;
27  import com.eviware.soapui.support.editor.registry.ResponseInspectorFactory;
28  import com.eviware.soapui.support.editor.xml.XmlInspector;
29  
30  public class WssInspectorFactory implements RequestInspectorFactory, ResponseInspectorFactory
31  {
32  	public static final String INSPECTOR_ID = "WSS";
33  
34  	public String getInspectorId()
35  	{
36  		return INSPECTOR_ID;
37  	}
38  
39  	public EditorInspector<?> createRequestInspector( Editor<?> editor, ModelItem modelItem )
40  	{
41  		if( modelItem instanceof WsdlMockResponse )
42  		{
43  			return new WsdlMockRequestWssInspector( ( WsdlMockResponse )modelItem );
44  		}
45  		else if( modelItem instanceof MessageExchangeModelItem )
46  		{
47  			return new RequestMessageExchangeWssInspector( ( MessageExchangeModelItem )modelItem );
48  		}
49  
50  		return null;
51  	}
52  
53  	public EditorInspector<?> createResponseInspector( Editor<?> editor, ModelItem modelItem )
54  	{
55  		if( modelItem instanceof WsdlRequest )
56  		{
57  			return new WsdlResponseWssInspector( ( WsdlRequest )modelItem );
58  		}
59  		else if( modelItem instanceof MessageExchangeModelItem )
60  		{
61  			return new ResponseMessageExchangeWssInspector( ( MessageExchangeModelItem )modelItem );
62  		}
63  
64  		return null;
65  	}
66  
67  	public class WsdlMockRequestWssInspector extends AbstractWssInspector implements XmlInspector,
68  			PropertyChangeListener
69  	{
70  		private final WsdlMockResponse response;
71  
72  		public WsdlMockRequestWssInspector( WsdlMockResponse response )
73  		{
74  			this.response = response;
75  
76  			response.addPropertyChangeListener( WsdlMockResponse.MOCKRESULT_PROPERTY, this );
77  		}
78  
79  		@Override
80  		public Vector<?> getWssResults()
81  		{
82  			return response.getMockResult() == null ? null : response.getMockResult().getRequestWssResult();
83  		}
84  
85  		public void propertyChange( PropertyChangeEvent evt )
86  		{
87  			update();
88  		}
89  
90  		@Override
91  		public void release()
92  		{
93  			response.removePropertyChangeListener( WsdlMockResponse.MOCKRESULT_PROPERTY, this );
94  		}
95  	}
96  
97  	public class RequestMessageExchangeWssInspector extends AbstractWssInspector implements XmlInspector,
98  			PropertyChangeListener
99  	{
100 		private final MessageExchangeModelItem item;
101 
102 		public RequestMessageExchangeWssInspector( MessageExchangeModelItem item )
103 		{
104 			this.item = item;
105 
106 			item.addPropertyChangeListener( MessageExchangeModelItem.MESSAGE_EXCHANGE, this );
107 		}
108 
109 		@Override
110 		public Vector<?> getWssResults()
111 		{
112 			return item.getMessageExchange() instanceof WsdlMessageExchange ? ( ( WsdlMessageExchange )item
113 					.getMessageExchange() ).getRequestWssResult() : null;
114 		}
115 
116 		public void propertyChange( PropertyChangeEvent evt )
117 		{
118 			update();
119 		}
120 
121 		@Override
122 		public void release()
123 		{
124 			item.removePropertyChangeListener( MessageExchangeModelItem.MESSAGE_EXCHANGE, this );
125 		}
126 	}
127 
128 	public class WsdlResponseWssInspector extends AbstractWssInspector implements XmlInspector, PropertyChangeListener
129 	{
130 		private final WsdlRequest response;
131 
132 		public WsdlResponseWssInspector( WsdlRequest response )
133 		{
134 			this.response = response;
135 
136 			response.addPropertyChangeListener( WsdlRequest.RESPONSE_PROPERTY, this );
137 		}
138 
139 		@Override
140 		public Vector<?> getWssResults()
141 		{
142 			return response.getResponse() == null ? null : response.getResponse().getWssResult();
143 		}
144 
145 		public void propertyChange( PropertyChangeEvent evt )
146 		{
147 			update();
148 		}
149 
150 		@Override
151 		public void release()
152 		{
153 			response.removePropertyChangeListener( WsdlRequest.RESPONSE_PROPERTY, this );
154 		}
155 	}
156 
157 	public class ResponseMessageExchangeWssInspector extends AbstractWssInspector implements XmlInspector,
158 			PropertyChangeListener
159 	{
160 		private final MessageExchangeModelItem item;
161 
162 		public ResponseMessageExchangeWssInspector( MessageExchangeModelItem item )
163 		{
164 			this.item = item;
165 
166 			item.addPropertyChangeListener( MessageExchangeModelItem.MESSAGE_EXCHANGE, this );
167 		}
168 
169 		@Override
170 		public Vector<?> getWssResults()
171 		{
172 			return item.getMessageExchange() instanceof WsdlMessageExchange ? ( ( WsdlMessageExchange )item
173 					.getMessageExchange() ).getResponseWssResult() : null;
174 		}
175 
176 		public void propertyChange( PropertyChangeEvent evt )
177 		{
178 			update();
179 		}
180 
181 		@Override
182 		public void release()
183 		{
184 			item.removePropertyChangeListener( MessageExchangeModelItem.MESSAGE_EXCHANGE, this );
185 		}
186 	}
187 }