Package com.eviware.soapui.impl.wsdl.support.wsmc

Source Code of com.eviware.soapui.impl.wsdl.support.wsmc.WsmcUtils

/*
*  soapUI, copyright (C) 2004-2011 eviware.com
*
*  soapUI is free software; you can redistribute it and/or modify it under the
*  terms of version 2.1 of the GNU Lesser General Public License as published by
*  the Free Software Foundation.
*
*  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
*  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*  See the GNU Lesser General Public License for more details at gnu.org.
*/

package com.eviware.soapui.impl.wsdl.support.wsmc;

import org.apache.log4j.Logger;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;

import com.eviware.soapui.SoapUI;
import com.eviware.soapui.config.HttpRequestConfig;
import com.eviware.soapui.config.WsaConfigConfig;
import com.eviware.soapui.config.WsrmConfigConfig;
import com.eviware.soapui.impl.support.wsa.WsaRequest;
import com.eviware.soapui.impl.wsdl.WsdlOperation;
import com.eviware.soapui.impl.wsdl.WsdlSubmit;
import com.eviware.soapui.impl.wsdl.WsdlSubmitContext;
import com.eviware.soapui.impl.wsdl.support.soap.SoapMessageBuilder;
import com.eviware.soapui.impl.wsdl.support.soap.SoapVersion;
import com.eviware.soapui.impl.wsdl.support.wsa.WsaConfig;
import com.eviware.soapui.impl.wsdl.support.wsa.WsaContainer;
import com.eviware.soapui.impl.wsdl.support.wsa.WsaContainerImpl;
import com.eviware.soapui.impl.wsdl.support.wsa.WsaUtils;
import com.eviware.soapui.impl.wsdl.support.wsrm.WsrmConfig;
import com.eviware.soapui.model.iface.Request.SubmitException;
import com.eviware.soapui.model.iface.Response;
import com.eviware.soapui.model.iface.Submit.Status;
import com.eviware.soapui.model.propertyexpansion.DefaultPropertyExpansionContext;
import com.eviware.soapui.support.xml.XmlUtils;

public class WsmcUtils
{
  private static final String WSMC_ACTION = "http://docs.oasis-open.org/ws-rx/wsmc/200702/MakeConnection";
  private static final String WSMC_NAMESPACE = "http://docs.oasis-open.org/ws-rx/wsmc/200702";

  public void sendMakeConnectionRequest( String endpoint, SoapVersion soapVersion, WsdlOperation operation, String uuid )
  {
    String identifier = null;

    HttpRequestConfig httpRequestConfig = ( HttpRequestConfig )( XmlObject.Factory.newInstance()
        .changeType( HttpRequestConfig.type ) );
    httpRequestConfig.setEndpoint( endpoint );

    WsaConfigConfig wsaConfigConfig = ( WsaConfigConfig )( XmlObject.Factory.newInstance()
        .changeType( WsaConfigConfig.type ) );
    WsaContainer wsaContainer = new WsaContainerImpl();
    wsaContainer.setOperation( operation );
    WsaConfig wsaConfig = new WsaConfig( wsaConfigConfig, wsaContainer );

    WsrmConfigConfig wsrmConfigConfig = ( WsrmConfigConfig )( XmlObject.Factory.newInstance()
        .changeType( WsrmConfigConfig.type ) );
    WsrmConfig wsrmConfig = new WsrmConfig( wsrmConfigConfig, null );

    WsaRequest makeConnectionRequest = new WsaRequest( httpRequestConfig, wsaConfig, wsrmConfig, false );
    makeConnectionRequest.setOperation( operation );

    String makeConnectionMessageContent = SoapMessageBuilder.buildEmptyMessage( soapVersion );

    makeConnectionRequest.getWsaConfig().setWsaEnabled( true );
    makeConnectionRequest.getWsaConfig().setAction( WSMC_ACTION );

    makeConnectionRequest.getWsaConfig().setTo(
        WsaUtils.getNamespace( makeConnectionRequest.getWsaConfig().getVersion() ) + "/anonymous" );
    makeConnectionRequest.getWsaConfig().setGenerateMessageId( true );

    try
    {
      // XmlObject object = XmlObject.Factory.parse(
      // makeConnectionMessageContent );
      XmlObject object = XmlUtils.createXmlObject( makeConnectionMessageContent );
      XmlCursor cursor = object.newCursor();

      cursor.toFirstContentToken();
      cursor.toFirstChild();
      cursor.toNextSibling();

      cursor.toNextToken();
      cursor.insertNamespace( "wsmc", WSMC_NAMESPACE );

      cursor.beginElement( "MakeConnection", WSMC_NAMESPACE );
      cursor.beginElement( "Address", WSMC_NAMESPACE );
      cursor.insertChars( WsaUtils.getNamespace( makeConnectionRequest.getWsaConfig().getVersion() )
          + "/anonymous?id=" + uuid );

      cursor.dispose();

      cursor.dispose();

      WsaUtils wsaUtils = new WsaUtils( object.xmlText(), soapVersion, null, new DefaultPropertyExpansionContext(
          makeConnectionRequest ) );
      String content = wsaUtils.addWSAddressingRequest( makeConnectionRequest );

      makeConnectionRequest.setRequestContent( content );

    }
    catch( XmlException e )
    {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    try
    {

      WsdlSubmit wsdlSubmit = makeConnectionRequest.submit( new WsdlSubmitContext( null ), true );

      // startSequenceRequest.getWsaConfig().setWsaEnabled(false);
      while( wsdlSubmit.getStatus() != Status.FINISHED )
      {
        wsdlSubmit.waitUntilFinished();
      }
      Response response = wsdlSubmit.getResponse();
      String responseContent = response.getContentAsString();
      // XmlObject xml = XmlObject.Factory.parse( responseContent );
      XmlObject xml = XmlUtils.createXmlObject( responseContent );
      XmlCursor cursor = xml.newCursor();
      cursor.toFirstContentToken();
      cursor.toFirstChild();
      cursor.toNextSibling();
      cursor.toFirstChild();

      String sequenceIdentifier = cursor.getTextValue();
      Logger.getLogger( "wsrm" ).info( "Sequence response Received, sequence ID: " + sequenceIdentifier );

      // WsmcInjection receiveInjection = new WsmcInjection(request);
      // request.setAfterRequestInjection(receiveInjection);

    }
    catch( SubmitException e1 )
    {
      SoapUI.logError( e1 );
    }
    catch( XmlException e )
    {
      SoapUI.logError( e );
    }
  }
}
TOP

Related Classes of com.eviware.soapui.impl.wsdl.support.wsmc.WsmcUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.