View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2009 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.httpheaders;
14  
15  import com.eviware.soapui.impl.support.AbstractHttpRequest;
16  import com.eviware.soapui.impl.support.AbstractHttpRequestInterface;
17  import com.eviware.soapui.impl.wsdl.WsdlRequest;
18  import com.eviware.soapui.impl.wsdl.mock.WsdlMockResponse;
19  import com.eviware.soapui.impl.wsdl.support.MessageExchangeModelItem;
20  import com.eviware.soapui.model.ModelItem;
21  import com.eviware.soapui.model.iface.MessageExchange;
22  import com.eviware.soapui.support.editor.Editor;
23  import com.eviware.soapui.support.editor.EditorInspector;
24  import com.eviware.soapui.support.editor.inspectors.httpheaders.HttpHeadersInspectorModel.AbstractHeadersModel;
25  import com.eviware.soapui.support.editor.registry.RequestInspectorFactory;
26  import com.eviware.soapui.support.editor.registry.ResponseInspectorFactory;
27  import com.eviware.soapui.support.types.StringToStringMap;
28  
29  public class HttpHeadersInspectorFactory implements RequestInspectorFactory, ResponseInspectorFactory
30  {
31  	public static final String INSPECTOR_ID = "HTTP Headers";
32  
33  	public String getInspectorId()
34  	{
35  		return INSPECTOR_ID;
36  	}
37  
38  	public EditorInspector<?> createRequestInspector( Editor<?> editor, ModelItem modelItem )
39  	{
40  		if( modelItem instanceof AbstractHttpRequestInterface<?> )
41  			return new HttpHeadersInspector( new WsdlRequestHeadersModel( ( AbstractHttpRequest<?> )modelItem ) );
42  		else if( modelItem instanceof WsdlMockResponse )
43  			return new HttpHeadersInspector( new WsdlMockResponseRequestHeadersModel( ( WsdlMockResponse )modelItem ) );
44  		else if( modelItem instanceof MessageExchangeModelItem )
45  			return new HttpHeadersInspector( new WsdlMessageExchangeRequestHeadersModel(
46  					( MessageExchangeModelItem )modelItem ) );
47  
48  		return null;
49  	}
50  
51  	public EditorInspector<?> createResponseInspector( Editor<?> editor, ModelItem modelItem )
52  	{
53  		if( modelItem instanceof AbstractHttpRequestInterface<?> )
54  			return new HttpHeadersInspector( new WsdlRequestResponseHeadersModel( ( AbstractHttpRequest<?> )modelItem ) );
55  		else if( modelItem instanceof WsdlMockResponse )
56  			return new HttpHeadersInspector( new WsdlMockResponseHeadersModel( ( WsdlMockResponse )modelItem ) );
57  		else if( modelItem instanceof MessageExchangeModelItem )
58  			return new HttpHeadersInspector( new WsdlMessageExchangeResponseHeadersModel(
59  					( MessageExchangeModelItem )modelItem ) );
60  
61  		return null;
62  	}
63  
64  	private class WsdlMessageExchangeRequestHeadersModel extends AbstractHeadersModel<MessageExchangeModelItem>
65  	{
66  		public WsdlMessageExchangeRequestHeadersModel( MessageExchangeModelItem request )
67  		{
68  			super( true, request, MessageExchangeModelItem.MESSAGE_EXCHANGE );
69  		}
70  
71  		public StringToStringMap getHeaders()
72  		{
73  			MessageExchange messageExchange = getModelItem().getMessageExchange();
74  			return messageExchange == null ? new StringToStringMap() : messageExchange.getRequestHeaders();
75  		}
76  	}
77  
78  	private class WsdlMessageExchangeResponseHeadersModel extends AbstractHeadersModel<MessageExchangeModelItem>
79  	{
80  		public WsdlMessageExchangeResponseHeadersModel( MessageExchangeModelItem response )
81  		{
82  			super( true, response, MessageExchangeModelItem.MESSAGE_EXCHANGE );
83  		}
84  
85  		public StringToStringMap getHeaders()
86  		{
87  			MessageExchange messageExchange = getModelItem().getMessageExchange();
88  			return messageExchange == null ? new StringToStringMap() : messageExchange.getResponseHeaders();
89  		}
90  	}
91  
92  	private class WsdlRequestHeadersModel extends AbstractHeadersModel<AbstractHttpRequest<?>>
93  	{
94  		public WsdlRequestHeadersModel( AbstractHttpRequest<?> abstractHttpRequest )
95  		{
96  			super( false, abstractHttpRequest, AbstractHttpRequestInterface.REQUEST_HEADERS_PROPERTY );
97  		}
98  
99  		public StringToStringMap getHeaders()
100 		{
101 			return getModelItem().getRequestHeaders();
102 		}
103 
104 		public void setHeaders( StringToStringMap headers )
105 		{
106 			getModelItem().setRequestHeaders( headers );
107 		}
108 	}
109 
110 	private class WsdlMockResponseHeadersModel extends AbstractHeadersModel<WsdlMockResponse>
111 	{
112 		public WsdlMockResponseHeadersModel( WsdlMockResponse request )
113 		{
114 			super( false, request, WsdlMockResponse.HEADERS_PROPERTY );
115 		}
116 
117 		public StringToStringMap getHeaders()
118 		{
119 			return getModelItem().getResponseHeaders();
120 		}
121 
122 		public void setHeaders( StringToStringMap headers )
123 		{
124 			getModelItem().setResponseHeaders( headers );
125 		}
126 	}
127 
128 	private class WsdlRequestResponseHeadersModel extends AbstractHeadersModel<AbstractHttpRequest<?>>
129 	{
130 		public WsdlRequestResponseHeadersModel( AbstractHttpRequest<?> request )
131 		{
132 			super( true, request, WsdlRequest.RESPONSE_PROPERTY );
133 		}
134 
135 		public StringToStringMap getHeaders()
136 		{
137 			AbstractHttpRequestInterface<?> request = getModelItem();
138 			return request.getResponse() == null ? new StringToStringMap() : request.getResponse().getResponseHeaders();
139 		}
140 	}
141 
142 	private class WsdlMockResponseRequestHeadersModel extends AbstractHeadersModel<WsdlMockResponse>
143 	{
144 		public WsdlMockResponseRequestHeadersModel( WsdlMockResponse request )
145 		{
146 			super( true, request, WsdlMockResponse.MOCKRESULT_PROPERTY );
147 		}
148 
149 		public StringToStringMap getHeaders()
150 		{
151 			WsdlMockResponse request = getModelItem();
152 			return request.getMockResult() == null ? new StringToStringMap() : request.getMockResult().getMockRequest()
153 					.getRequestHeaders();
154 		}
155 	}
156 }