1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.impl.wsdl.submit;
14
15 import java.util.HashMap;
16 import java.util.Map;
17
18 import com.eviware.soapui.SoapUI;
19 import com.eviware.soapui.impl.wsdl.submit.filters.EndpointRequestFilter;
20 import com.eviware.soapui.impl.wsdl.submit.filters.EndpointStrategyRequestFilter;
21 import com.eviware.soapui.impl.wsdl.submit.filters.HttpAuthenticationRequestFilter;
22 import com.eviware.soapui.impl.wsdl.submit.filters.HttpCompressionRequestFilter;
23 import com.eviware.soapui.impl.wsdl.submit.filters.HttpProxyRequestFilter;
24 import com.eviware.soapui.impl.wsdl.submit.filters.HttpRequestFilter;
25 import com.eviware.soapui.impl.wsdl.submit.filters.HttpSettingsRequestFilter;
26 import com.eviware.soapui.impl.wsdl.submit.filters.PostPackagingRequestFilter;
27 import com.eviware.soapui.impl.wsdl.submit.filters.PropertyExpansionRequestFilter;
28 import com.eviware.soapui.impl.wsdl.submit.filters.RemoveEmptyContentRequestFilter;
29 import com.eviware.soapui.impl.wsdl.submit.filters.RestRequestFilter;
30 import com.eviware.soapui.impl.wsdl.submit.filters.SoapHeadersRequestFilter;
31 import com.eviware.soapui.impl.wsdl.submit.filters.StripWhitespacesRequestFilter;
32 import com.eviware.soapui.impl.wsdl.submit.filters.WsaRequestFilter;
33 import com.eviware.soapui.impl.wsdl.submit.filters.WsdlPackagingRequestFilter;
34 import com.eviware.soapui.impl.wsdl.submit.filters.WsdlPackagingResponseFilter;
35 import com.eviware.soapui.impl.wsdl.submit.filters.WsrmRequestFilter;
36 import com.eviware.soapui.impl.wsdl.submit.filters.WssAuthenticationRequestFilter;
37 import com.eviware.soapui.impl.wsdl.submit.filters.WssRequestFilter;
38 import com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport;
39 import com.eviware.soapui.model.iface.SubmitContext;
40
41 /***
42 * Registry of available transports, currently hard-coded but should be
43 * configurable in the future.
44 *
45 * @author Ole.Matzura
46 */
47
48 public class RequestTransportRegistry
49 {
50 public static final String HTTP = "http";
51 public static final String HTTPS = "https";
52
53 private static Map<String, RequestTransport> transports = new HashMap<String, RequestTransport>();
54
55 static
56 {
57 HttpClientRequestTransport httpTransport = new HttpClientRequestTransport();
58
59 httpTransport.addRequestFilter( new EndpointRequestFilter() );
60 httpTransport.addRequestFilter( new HttpSettingsRequestFilter() );
61 httpTransport.addRequestFilter( new HttpRequestFilter() );
62 httpTransport.addRequestFilter( new RestRequestFilter() );
63 httpTransport.addRequestFilter( new SoapHeadersRequestFilter() );
64 httpTransport.addRequestFilter( new HttpProxyRequestFilter() );
65 httpTransport.addRequestFilter( new HttpAuthenticationRequestFilter() );
66 httpTransport.addRequestFilter( new WssAuthenticationRequestFilter() );
67 httpTransport.addRequestFilter( new PropertyExpansionRequestFilter() );
68 httpTransport.addRequestFilter( new RemoveEmptyContentRequestFilter() );
69 httpTransport.addRequestFilter( new StripWhitespacesRequestFilter() );
70 httpTransport.addRequestFilter( new EndpointStrategyRequestFilter() );
71 httpTransport.addRequestFilter( new WsaRequestFilter() );
72 httpTransport.addRequestFilter( new WsrmRequestFilter() );
73 httpTransport.addRequestFilter( new WssRequestFilter() );
74
75 for( RequestFilter filter : SoapUI.getListenerRegistry().getListeners( RequestFilter.class ) )
76 {
77 httpTransport.addRequestFilter( filter );
78 }
79
80 httpTransport.addRequestFilter( new WsdlPackagingRequestFilter() );
81 httpTransport.addRequestFilter( new HttpCompressionRequestFilter() );
82 httpTransport.addRequestFilter( new WsdlPackagingResponseFilter() );
83 httpTransport.addRequestFilter( new PostPackagingRequestFilter() );
84
85 transports.put( HTTP, httpTransport );
86 transports.put( HTTPS, httpTransport );
87 }
88
89 public static RequestTransport getTransport( String endpoint, SubmitContext submitContext )
90 throws MissingTransportException
91 {
92 int ix = endpoint.indexOf( "://" );
93 if( ix == -1 )
94 throw new MissingTransportException( "Missing protocol in endpoint [" + endpoint + "]" );
95
96 String protocol = endpoint.substring( 0, ix ).toLowerCase();
97 RequestTransport transport = transports.get( protocol );
98
99 if( transport == null )
100 throw new MissingTransportException( "Missing transport for protocol [" + protocol + "]" );
101
102 return transport;
103 }
104
105 public static void addTransport( String key, RequestTransport rt )
106 {
107 transports.put( key, rt );
108 }
109
110 public static class MissingTransportException extends Exception
111 {
112 public MissingTransportException( String msg )
113 {
114 super( msg );
115 }
116 }
117 }