View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2008 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  
16  import com.eviware.soapui.impl.support.AbstractHttpRequest;
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 AbstractHttpRequest<?> )
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( (MessageExchangeModelItem)modelItem ) );
46  		
47  		return null;
48  	}
49  
50  	public EditorInspector<?> createResponseInspector( Editor<?> editor, ModelItem modelItem )
51  	{
52  		if( modelItem instanceof AbstractHttpRequest<?> )
53  			return new HttpHeadersInspector( new WsdlRequestResponseHeadersModel( ( AbstractHttpRequest<?> ) modelItem ) );
54  		else if( modelItem instanceof WsdlMockResponse )
55  			return new HttpHeadersInspector( new WsdlMockResponseHeadersModel( ( WsdlMockResponse ) modelItem ) );
56  		else if( modelItem instanceof MessageExchangeModelItem )
57  			return new HttpHeadersInspector( new WsdlMessageExchangeResponseHeadersModel( (MessageExchangeModelItem)modelItem ) );
58  		
59  		return null;
60  	}
61  	
62  	private class WsdlMessageExchangeRequestHeadersModel extends AbstractHeadersModel<MessageExchangeModelItem>
63  	{
64  		public WsdlMessageExchangeRequestHeadersModel( MessageExchangeModelItem request )
65  		{
66  			super( true, request, MessageExchangeModelItem.MESSAGE_EXCHANGE );
67  		}
68  
69  		public StringToStringMap getHeaders()
70  		{
71  			MessageExchange messageExchange = getModelItem().getMessageExchange();
72  			return messageExchange == null ? new StringToStringMap() : messageExchange.getRequestHeaders();
73  		}
74  	}
75  	
76  	private class WsdlMessageExchangeResponseHeadersModel extends AbstractHeadersModel<MessageExchangeModelItem>
77  	{
78  		public WsdlMessageExchangeResponseHeadersModel( MessageExchangeModelItem response )
79  		{
80  			super( true, response, MessageExchangeModelItem.MESSAGE_EXCHANGE );
81  		}
82  
83  		public StringToStringMap getHeaders()
84  		{
85  			MessageExchange messageExchange = getModelItem().getMessageExchange();
86  			return messageExchange == null ? new StringToStringMap() : messageExchange.getResponseHeaders();
87  		}
88  	}
89  	
90  	private class WsdlRequestHeadersModel extends AbstractHeadersModel<AbstractHttpRequest<?>>
91  	{
92  		public WsdlRequestHeadersModel( AbstractHttpRequest<?> abstractHttpRequest )
93  		{
94  			super( false, abstractHttpRequest, AbstractHttpRequest.REQUEST_HEADERS_PROPERTY );
95  		}
96  
97  		public StringToStringMap getHeaders()
98  		{
99  			return getModelItem().getRequestHeaders();
100 		}
101 
102 		public void setHeaders( StringToStringMap headers )
103 		{
104 			getModelItem().setRequestHeaders( headers );
105 		}
106 	}
107 	
108 	private class WsdlMockResponseHeadersModel extends AbstractHeadersModel<WsdlMockResponse>
109 	{
110 		public WsdlMockResponseHeadersModel( WsdlMockResponse request )
111 		{
112 			super( false, request, WsdlMockResponse.HEADERS_PROPERTY );
113 		}
114 
115 		public StringToStringMap getHeaders()
116 		{
117 			return getModelItem().getResponseHeaders();
118 		}
119 
120 		public void setHeaders( StringToStringMap headers )
121 		{
122 			getModelItem().setResponseHeaders( headers );
123 		}
124 	}
125 	
126 	private class WsdlRequestResponseHeadersModel extends AbstractHeadersModel<AbstractHttpRequest<?>>
127 	{
128 		public WsdlRequestResponseHeadersModel( AbstractHttpRequest<?> request )
129 		{
130 			super( true, request, WsdlRequest.RESPONSE_PROPERTY );
131 		}
132 
133 		public StringToStringMap getHeaders()
134 		{
135 			AbstractHttpRequest<?> request = getModelItem();
136 			return request.getResponse() == null ? new StringToStringMap()	: request.getResponse().getResponseHeaders();
137 		}
138 	}
139 	
140 	private class WsdlMockResponseRequestHeadersModel extends AbstractHeadersModel<WsdlMockResponse>
141 	{
142 		public WsdlMockResponseRequestHeadersModel( WsdlMockResponse request )
143 		{
144 			super( true, request, WsdlMockResponse.MOCKRESULT_PROPERTY );
145 		}
146 
147 		public StringToStringMap getHeaders()
148 		{
149 			WsdlMockResponse request = getModelItem();
150 			return request.getMockResult() == null ? new StringToStringMap()	: request.getMockResult().getMockRequest().getRequestHeaders();
151 		}
152 	}
153 }