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