Package com.eviware.soapui.impl.wsdl.mock

Source Code of com.eviware.soapui.impl.wsdl.mock.WsdlMockRequest

/*
* 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.mock;

import com.eviware.soapui.SoapUI;
import com.eviware.soapui.impl.support.AbstractMockRequest;
import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.impl.wsdl.support.soap.SoapUtils;
import com.eviware.soapui.impl.wsdl.support.soap.SoapVersion;
import com.eviware.soapui.impl.wsdl.support.wss.IncomingWss;
import com.eviware.soapui.support.StringUtils;
import com.eviware.soapui.support.xml.XmlUtils;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
import org.w3c.dom.Document;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Vector;

/**
* Request-class created when receiving an external request to a WsdlMockService
*
* @author ole.matzura
*/

public class WsdlMockRequest extends AbstractMockRequest {
    private SoapVersion soapVersion;
    private String soapAction;
    private Vector<Object> wssResult;

    public WsdlMockRequest(HttpServletRequest request, HttpServletResponse response, WsdlMockRunContext context)
            throws Exception {

        super(request, response, context);

    }


    public SoapVersion getSoapVersion() {
        return soapVersion;
    }

    public String getProtocol() {
        return super.getProtocol();
    }

    public Vector<?> getWssResult() {
        return wssResult;
    }


    public void setRequestContent(String requestContent) {
        super.setRequestContent(requestContent);
        setRequestXmlObject(null);

        try {
            soapVersion = SoapUtils.deduceSoapVersion(getRequest().getContentType(), getRequestXmlObject());
        } catch (XmlException e) {
            SoapUI.logError(e);
        }

        if (soapVersion == null) {
            soapVersion = SoapVersion.Soap11;
        }
    }


    public XmlObject getContentElement() throws XmlException {
        return SoapUtils.getContentElement(getRequestXmlObject(), soapVersion);
    }

    public String getSoapAction() {
        return soapAction;
    }

    public void setSoapAction(String soapAction) {
        this.soapAction = soapAction;
    }

    protected void initProtocolSpecificPostContent(WsdlMockRunContext context, String contentType) throws IOException {
        if (!isMultiPart(contentType)) {
            addWSSResult(context, getRequestContent());
        }
        initSoapVersion(contentType);

        soapAction = SoapUtils.getSoapAction(soapVersion, getRequestHeaders());
    }

    private void addWSSResult(WsdlMockRunContext context, String requestContent) throws IOException {
        WsdlMockService mockService = (WsdlMockService) context.getMockService();
        if (StringUtils.hasContent(mockService.getIncomingWss())) {
            IncomingWss incoming = mockService.getProject().getWssContainer()
                    .getIncomingWssByName(mockService.getIncomingWss());
            if (incoming != null) {
                Document dom = XmlUtils.parseXml(requestContent);
                try {
                    wssResult = incoming.processIncoming(dom, context);
                    if (wssResult != null && wssResult.size() > 0) {
                        StringWriter writer = new StringWriter();
                        XmlUtils.serialize(dom, writer);
                        setActualRequestContent(requestContent);
                        super.setRequestContent(writer.toString());
                    }
                } catch (Exception e) {
                    if (wssResult == null) {
                        wssResult = new Vector<Object>();
                    }
                    wssResult.add(e);
                }
            }
        }
    }

    private void initSoapVersion(String contentType) {
        try {
            soapVersion = SoapUtils.deduceSoapVersion(contentType, getRequestXmlObject());
        } catch (Exception e) {
            // ignore non xml requests
        }

        if (soapVersion == null) {
            soapVersion = SoapVersion.Soap11;
        }
    }


}
TOP

Related Classes of com.eviware.soapui.impl.wsdl.mock.WsdlMockRequest

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.