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