View Javadoc

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