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.impl.wsdl.submit.filters.HttpAuthenticationRequestFilter;
19 import com.eviware.soapui.impl.wsdl.submit.filters.HttpProxyRequestFilter;
20 import com.eviware.soapui.impl.wsdl.submit.filters.HttpSettingsRequestFilter;
21 import com.eviware.soapui.impl.wsdl.submit.filters.PropertyExpansionRequestFilter;
22 import com.eviware.soapui.impl.wsdl.submit.filters.SoapHeadersRequestFilter;
23 import com.eviware.soapui.impl.wsdl.submit.filters.StripWhitespacesRequestFilter;
24 import com.eviware.soapui.impl.wsdl.submit.filters.WsSecurityAuthenticationRequestFilter;
25 import com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport;
26 import com.eviware.soapui.model.iface.SubmitContext;
27
28 /***
29 * Registry of available transports, currently hard-coded but should be configurable in the future.
30 *
31 * @author Ole.Matzura
32 */
33
34 public class RequestTransportRegistry
35 {
36 public static final String HTTP = "http";
37 public static final String HTTPS = "https";
38
39 private static Map<String,RequestTransport> transports = new HashMap<String,RequestTransport>();
40
41 static
42 {
43 HttpClientRequestTransport httpTransport = new HttpClientRequestTransport();
44
45 httpTransport.addRequestFilter( new HttpSettingsRequestFilter() );
46 httpTransport.addRequestFilter( new SoapHeadersRequestFilter() );
47 httpTransport.addRequestFilter( new HttpProxyRequestFilter() );
48 httpTransport.addRequestFilter( new HttpAuthenticationRequestFilter() );
49 httpTransport.addRequestFilter( new WsSecurityAuthenticationRequestFilter() );
50 httpTransport.addRequestFilter( new PropertyExpansionRequestFilter() );
51 httpTransport.addRequestFilter( new StripWhitespacesRequestFilter() );
52
53
54 transports.put( HTTP, httpTransport );
55 transports.put( HTTPS, httpTransport );
56 }
57
58 public static RequestTransport getTransport( String endpoint, SubmitContext submitContext ) throws MissingTransportException
59 {
60 int ix = endpoint.indexOf( "://" );
61 if( ix == -1 )
62 throw new MissingTransportException( "Missing protocol in endpoint [" + endpoint + "]" );
63
64 String protocol = endpoint.substring( 0, ix ).toLowerCase();
65 RequestTransport transport = transports.get( protocol );
66
67 if( transport == null )
68 throw new MissingTransportException( "Missing transport for protocol [" + protocol + "]" );
69
70 return transport;
71 }
72
73 public static class MissingTransportException extends Exception
74 {
75 public MissingTransportException(String msg)
76 {
77 super( msg );
78 }
79 }
80 }