View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2010 eviware.com 
3    *
4    *  soapUI is free software; you can redistribute it and/or modify it under the 
5    *  terms of version 2.1 of the GNU Lesser General Public License as published by 
6    *  the Free Software Foundation.
7    *
8    *  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 
9    *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
10   *  See the GNU Lesser General Public License for more details at gnu.org.
11   */
12  package com.eviware.soapui.impl.wsdl.support.wsmc;
13  
14  import org.apache.xmlbeans.XmlCursor;
15  import org.apache.xmlbeans.XmlException;
16  import org.apache.xmlbeans.XmlObject;
17  
18  import com.eviware.soapui.SoapUI;
19  import com.eviware.soapui.config.HttpRequestConfig;
20  import com.eviware.soapui.config.WsaConfigConfig;
21  import com.eviware.soapui.config.WsrmConfigConfig;
22  import com.eviware.soapui.impl.support.wsa.WsaRequest;
23  import com.eviware.soapui.impl.wsdl.WsdlOperation;
24  import com.eviware.soapui.impl.wsdl.WsdlSubmitContext;
25  import com.eviware.soapui.impl.wsdl.submit.transports.http.support.methods.IAfterRequestInjection;
26  import com.eviware.soapui.impl.wsdl.support.soap.SoapMessageBuilder;
27  import com.eviware.soapui.impl.wsdl.support.soap.SoapVersion;
28  import com.eviware.soapui.impl.wsdl.support.wsa.WsaConfig;
29  import com.eviware.soapui.impl.wsdl.support.wsa.WsaContainer;
30  import com.eviware.soapui.impl.wsdl.support.wsa.WsaContainerImpl;
31  import com.eviware.soapui.impl.wsdl.support.wsa.WsaUtils;
32  import com.eviware.soapui.impl.wsdl.support.wsrm.WsrmConfig;
33  import com.eviware.soapui.model.iface.Request.SubmitException;
34  import com.eviware.soapui.model.propertyexpansion.DefaultPropertyExpansionContext;
35  
36  public class WsmcInjection implements IAfterRequestInjection
37  {
38  
39  	private static final String WSMC_ACTION = "http://docs.oasis-open.org/ws-rx/wsmc/200702/MakeConnection";
40  	private static final String WSMC_NAMESPACE = "http://docs.oasis-open.org/ws-rx/wsmc/200702";
41  
42  	private String endpoint;
43  	private WsdlOperation operation;
44  	private SoapVersion soapVersion;
45  	private String uuid;
46  
47  	public WsmcInjection( String endpoint, WsdlOperation operation, SoapVersion soapVersion, String uuid )
48  	{
49  		this.endpoint = endpoint;
50  		this.operation = operation;
51  		this.soapVersion = soapVersion;
52  		this.uuid = uuid;
53  	}
54  
55  	public String executeAfterRequest()
56  	{
57  
58  		/*HttpRequestConfig httpRequestConfig = ( HttpRequestConfig )( XmlObject.Factory.newInstance()
59  				.changeType( HttpRequestConfig.type ) );
60  		httpRequestConfig.setEndpoint( endpoint );
61  
62  		WsaConfigConfig wsaConfigConfig = ( WsaConfigConfig )( XmlObject.Factory.newInstance()
63  				.changeType( WsaConfigConfig.type ) );
64  		WsaContainer wsaContainer = new WsaContainerImpl();
65  		wsaContainer.setOperation( operation );
66  		WsaConfig wsaConfig = new WsaConfig( wsaConfigConfig, wsaContainer );
67  
68  		WsrmConfigConfig wsrmConfigConfig = ( WsrmConfigConfig )( XmlObject.Factory.newInstance()
69  				.changeType( WsrmConfigConfig.type ) );
70  		WsrmConfig wsrmConfig = new WsrmConfig( wsrmConfigConfig, null );
71  
72  		WsaRequest makeConnectionRequest = new WsaRequest( httpRequestConfig, wsaConfig, wsrmConfig, false );
73  		makeConnectionRequest.setOperation( operation );
74  
75  		String content = SoapMessageBuilder.buildEmptyMessage( soapVersion );
76  
77  		makeConnectionRequest.getWsaConfig().setWsaEnabled( true );
78  		makeConnectionRequest.getWsaConfig().setAction( WSMC_ACTION );
79  		makeConnectionRequest.getWsaConfig().setAddDefaultTo( true );
80  		makeConnectionRequest.getWsaConfig().setGenerateMessageId( true );
81  
82  		try
83  		{
84  			XmlObject object = XmlObject.Factory.parse( content );
85  			XmlCursor cursor = object.newCursor();
86  
87  			cursor.toFirstContentToken();
88  			cursor.toFirstChild();
89  			cursor.toNextSibling();
90  
91  			cursor.toNextToken();
92  			cursor.insertNamespace( "wsmc", WSMC_NAMESPACE );
93  
94  			cursor.beginElement( "MakeConnection", WSMC_NAMESPACE );
95  			cursor.beginElement( "Address", WSMC_NAMESPACE );
96  			cursor.insertChars( WsaUtils.getNamespace( makeConnectionRequest.getWsaConfig().getVersion() ) + "/anonymous"
97  					+ "?id=" + uuid );
98  
99  			cursor.dispose();
100 
101 			makeConnectionRequest.getOperation().setAction( "" );
102 			makeConnectionRequest.setRequestContent( object.xmlText() );
103 
104 			WsaUtils wsaUtils = new WsaUtils( object.xmlText(), soapVersion, makeConnectionRequest.getOperation(),
105 					new DefaultPropertyExpansionContext( makeConnectionRequest ) );
106 			content = wsaUtils.addWSAddressingRequest( makeConnectionRequest );
107 
108 			makeConnectionRequest.setRequestContent( content );
109 		}
110 		catch( XmlException e )
111 		{
112 			// TODO Auto-generated catch block
113 			e.printStackTrace();
114 		}
115 
116 		try
117 		{
118 			makeConnectionRequest.submit( new WsdlSubmitContext( null ), true );
119 
120 		}
121 		catch( SubmitException e1 )
122 		{
123 			SoapUI.logError( e1 );
124 		}
125 */
126 		return null;
127 	}
128 
129 }