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.apache.log4j.Logger;
16
17 import com.eviware.soapui.impl.support.AbstractHttpRequest;
18 import com.eviware.soapui.impl.wsdl.WsdlOperation;
19 import com.eviware.soapui.impl.wsdl.WsdlRequest;
20 import com.eviware.soapui.impl.wsdl.submit.transports.http.BaseHttpRequestTransport;
21 import com.eviware.soapui.impl.wsdl.submit.transports.http.ExtendedHttpMethod;
22 import com.eviware.soapui.impl.wsdl.support.soap.SoapVersion;
23 import com.eviware.soapui.impl.wsdl.support.wsrm.WsrmContainer;
24 import com.eviware.soapui.impl.wsdl.support.wsrm.WsrmUtils;
25 import com.eviware.soapui.model.iface.SubmitContext;
26
27 public class WsrmRequestFilter extends AbstractRequestFilter
28 {
29 public final static Logger log = Logger.getLogger( WsrmRequestFilter.class );
30
31 public void filterAbstractHttpRequest( SubmitContext context, AbstractHttpRequest<?> wsdlRequest )
32 {
33 if( !( wsdlRequest instanceof WsrmContainer ) || !( ( WsrmContainer )wsdlRequest ).isWsrmEnabled()
34 || ( ( ( WsrmContainer )wsdlRequest ).getWsrmConfig().getSequenceIdentifier() == null ) )
35 return;
36
37 String content = ( String )context.getProperty( BaseHttpRequestTransport.REQUEST_CONTENT );
38 if( content == null )
39 {
40 log.warn( "Missing request content in context, skipping ws-addressing" );
41 }
42 else
43 {
44 ExtendedHttpMethod httpMethod = ( ExtendedHttpMethod )context
45 .getProperty( BaseHttpRequestTransport.HTTP_METHOD );
46 WsdlOperation operation = ( ( WsdlRequest )wsdlRequest ).getOperation();
47
48
49
50 SoapVersion soapVersion = operation.getInterface().getSoapVersion();
51 String identifier = ( ( WsdlRequest )wsdlRequest ).getWsrmConfig().getSequenceIdentifier();
52 long msgNumber = ( ( WsdlRequest )wsdlRequest ).getWsrmConfig().getLastMessageId();
53
54 content = new WsrmUtils( content, soapVersion, context ).createNewWSReliableMessagingRequest(
55 ( WsdlRequest )wsdlRequest, httpMethod, identifier, msgNumber, wsdlRequest.getEndpoint() );
56 if( content != null )
57 context.setProperty( BaseHttpRequestTransport.REQUEST_CONTENT, content );
58 }
59 }
60
61 }