1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.impl.wsdl.submit.filters;
14
15 import java.io.StringWriter;
16
17 import org.w3c.dom.Document;
18
19 import com.eviware.soapui.config.EndpointConfig;
20 import com.eviware.soapui.impl.wsdl.WsdlRequest;
21 import com.eviware.soapui.impl.wsdl.endpoint.DefaultEndpointStrategy;
22 import com.eviware.soapui.impl.wsdl.endpoint.DefaultEndpointStrategy.EndpointDefaults;
23 import com.eviware.soapui.impl.wsdl.submit.RequestFilter;
24 import com.eviware.soapui.impl.wsdl.submit.transports.http.BaseHttpRequestTransport;
25 import com.eviware.soapui.impl.wsdl.support.wss.IncomingWss;
26 import com.eviware.soapui.impl.wsdl.support.wss.OutgoingWss;
27 import com.eviware.soapui.impl.wsdl.support.wss.WssContainer;
28 import com.eviware.soapui.model.iface.SubmitContext;
29 import com.eviware.soapui.support.StringUtils;
30 import com.eviware.soapui.support.xml.XmlUtils;
31
32 public class WssRequestFilter extends AbstractWssRequestFilter implements RequestFilter
33 {
34 public final static String INCOMING_WSS_PROPERTY = "WssRequestFilter#IncomingWss";
35
36 public void filterRequest( SubmitContext context, WsdlRequest wsdlRequest )
37 {
38 WssContainer wssContainer = wsdlRequest.getOperation().getInterface().getProject().getWssContainer();
39 OutgoingWss outgoingWss = wssContainer.getOutgoingWssByName( wsdlRequest.getOutgoingWss() );
40
41 DefaultEndpointStrategy des = ( DefaultEndpointStrategy ) wsdlRequest.getOperation().getInterface().getProject().getEndpointStrategy();
42 EndpointDefaults endpointDefaults = des.getEndpointDefaults( wsdlRequest.getEndpoint() );
43 if( StringUtils.hasContent( endpointDefaults.getOutgoingWss() ) &&
44 (outgoingWss == null || endpointDefaults.getMode() != EndpointConfig.Mode.COMPLEMENT ))
45 {
46 outgoingWss = wssContainer.getOutgoingWssByName( endpointDefaults.getOutgoingWss() );
47 }
48
49 if( outgoingWss != null )
50 {
51 try
52 {
53 Document wssDocument = getWssDocument( context );
54 outgoingWss.processOutgoing( wssDocument, context );
55 StringWriter writer = new StringWriter();
56 XmlUtils.serialize( wssDocument, writer );
57 context.setProperty( BaseHttpRequestTransport.REQUEST_CONTENT, writer.toString() );
58 }
59 catch( Exception e )
60 {
61 e.printStackTrace();
62 }
63 }
64
65 IncomingWss incomingWss = wssContainer.getIncomingWssByName( wsdlRequest.getIncomingWss() );
66
67 if( StringUtils.hasContent( endpointDefaults.getIncomingWss() ) &&
68 (incomingWss == null || endpointDefaults.getMode() != EndpointConfig.Mode.COMPLEMENT ))
69 {
70 incomingWss = wssContainer.getIncomingWssByName( endpointDefaults.getIncomingWss() );
71 }
72
73 if( incomingWss != null )
74 {
75 context.setProperty( INCOMING_WSS_PROPERTY, incomingWss );
76 }
77 }
78 }