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

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

/*
* Copyright 2004-2014 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/

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.