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.amfheader;
14  
15  import com.eviware.soapui.impl.wsdl.panels.teststeps.amf.AMFRequest;
16  import com.eviware.soapui.impl.wsdl.support.MessageExchangeModelItem;
17  import com.eviware.soapui.impl.wsdl.teststeps.AMFRequestTestStep;
18  import com.eviware.soapui.impl.wsdl.teststeps.AMFTestStepResult;
19  import com.eviware.soapui.model.ModelItem;
20  import com.eviware.soapui.support.editor.Editor;
21  import com.eviware.soapui.support.editor.EditorInspector;
22  import com.eviware.soapui.support.editor.inspectors.amfheader.AMFHeadersInspectorModel.AbstractHeadersModel;
23  import com.eviware.soapui.support.editor.registry.RequestInspectorFactory;
24  import com.eviware.soapui.support.editor.registry.ResponseInspectorFactory;
25  import com.eviware.soapui.support.types.StringToStringMap;
26  
27  public class AMFHeadersInspectorFactory implements RequestInspectorFactory, ResponseInspectorFactory
28  {
29  	public static final String INSPECTOR_ID = "AMF Headers";
30  
31  	public String getInspectorId()
32  	{
33  		return INSPECTOR_ID;
34  	}
35  
36  	public EditorInspector<?> createRequestInspector( Editor<?> editor, ModelItem modelItem )
37  	{
38  		if( modelItem instanceof AMFRequestTestStep )
39  		{
40  			AMFHeadersInspector inspector = new AMFHeadersInspector( new AMFRequestHeadersModel(
41  					( AMFRequestTestStep )modelItem ) );
42  			inspector.setEnabled( true );
43  			return inspector;
44  		}
45  		else if( modelItem instanceof MessageExchangeModelItem )
46  		{
47  			if( ( ( MessageExchangeModelItem )modelItem ).getMessageExchange() instanceof AMFTestStepResult )
48  			{
49  				AMFHeadersInspector inspector = new AMFHeadersInspector( new MessageExchangeRequestAMFHeadersModel(
50  						( MessageExchangeModelItem )modelItem ) );
51  				inspector.setEnabled( true );
52  				return inspector;
53  			}
54  		}
55  		return null;
56  	}
57  
58  	public EditorInspector<?> createResponseInspector( Editor<?> editor, ModelItem modelItem )
59  	{
60  
61  		if( modelItem instanceof AMFRequestTestStep )
62  		{
63  			AMFHeadersInspector inspector = new AMFHeadersInspector( new AMFResponseHeadersModel(
64  					( AMFRequestTestStep )modelItem ) );
65  			inspector.setEnabled( true );
66  			return inspector;
67  		}
68  		else if( modelItem instanceof MessageExchangeModelItem )
69  		{
70  			if( ( ( MessageExchangeModelItem )modelItem ).getMessageExchange() instanceof AMFTestStepResult )
71  			{
72  				AMFHeadersInspector inspector = new AMFHeadersInspector( new MessageExchangeResponseAMFHeadersModel(
73  						( MessageExchangeModelItem )modelItem ) );
74  				inspector.setEnabled( true );
75  				return inspector;
76  			}
77  		}
78  		return null;
79  	}
80  
81  	private class MessageExchangeRequestAMFHeadersModel extends AbstractHeadersModel<MessageExchangeModelItem>
82  	{
83  		public MessageExchangeRequestAMFHeadersModel( MessageExchangeModelItem request )
84  		{
85  			super( true, request, MessageExchangeModelItem.MESSAGE_EXCHANGE );
86  		}
87  
88  		public StringToStringMap getHeaders()
89  		{
90  			if( getModelItem().getMessageExchange() instanceof AMFTestStepResult )
91  			{
92  				AMFTestStepResult messageExchange = ( AMFTestStepResult )getModelItem().getMessageExchange();
93  				return ( ( AMFRequestTestStep )messageExchange.getTestStep() ).getAmfHeaders();
94  			}
95  			return new StringToStringMap();
96  		}
97  	}
98  
99  	private class MessageExchangeResponseAMFHeadersModel extends AbstractHeadersModel<MessageExchangeModelItem>
100 	{
101 		public MessageExchangeResponseAMFHeadersModel( MessageExchangeModelItem messageExchange )
102 		{
103 			super( true, messageExchange, MessageExchangeModelItem.MESSAGE_EXCHANGE );
104 		}
105 
106 		public StringToStringMap getHeaders()
107 		{
108 			if( getModelItem().getMessageExchange() instanceof AMFTestStepResult )
109 			{
110 				AMFTestStepResult messageExchange = ( AMFTestStepResult )getModelItem().getMessageExchange();
111 				if( ( ( AMFRequestTestStep )messageExchange.getTestStep() ).getAMFRequest().getResponse() != null )
112 				{
113 					return ( ( AMFRequestTestStep )messageExchange.getTestStep() ).getAMFRequest().getResponse()
114 							.getResponseAMFHeaders();
115 				}
116 				else
117 					return new StringToStringMap();
118 
119 			}
120 			return new StringToStringMap();
121 		}
122 	}
123 
124 	private class AMFRequestHeadersModel extends AbstractHeadersModel<AMFRequestTestStep>
125 	{
126 		public AMFRequestHeadersModel( AMFRequestTestStep testStep )
127 		{
128 			super( false, testStep, AMFRequestTestStep.AMF_HEADERS_PROPERTY );
129 		}
130 
131 		public StringToStringMap getHeaders()
132 		{
133 			return getModelItem().getAmfHeaders();
134 		}
135 
136 		public void setHeaders( StringToStringMap headers )
137 		{
138 			getModelItem().setAmfHeaders( headers );
139 		}
140 
141 		@Override
142 		public void release()
143 		{
144 			getModelItem().removePropertyChangeListener( AMFRequestTestStep.AMF_HEADERS_PROPERTY, this );
145 			super.release();
146 		}
147 
148 	}
149 
150 	private class AMFResponseHeadersModel extends AbstractHeadersModel<AMFRequestTestStep>
151 	{
152 		AMFRequest request;
153 
154 		public AMFResponseHeadersModel( AMFRequestTestStep testStep )
155 		{
156 			super( true, testStep, AMFRequestTestStep.AMF_HEADERS_PROPERTY );
157 			this.request = testStep.getAMFRequest();
158 			this.request.addPropertyChangeListener( AMFRequest.AMF_RESPONSE_PROPERTY, this );
159 		}
160 
161 		public StringToStringMap getHeaders()
162 		{
163 			if( getModelItem().getAMFRequest().getResponse() != null )
164 			{
165 				return getModelItem().getAMFRequest().getResponse().getResponseAMFHeaders();
166 			}
167 			else
168 			{
169 				return new StringToStringMap();
170 			}
171 		}
172 
173 		@Override
174 		public void release()
175 		{
176 			request.removePropertyChangeListener( AMFRequest.AMF_RESPONSE_PROPERTY, this );
177 			super.release();
178 		}
179 
180 	}
181 }