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

Source Code of com.eviware.soapui.impl.wsdl.support.soap.SoapVersion11

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

import java.io.IOException;

import javax.xml.namespace.QName;

import org.apache.xmlbeans.SchemaType;
import org.apache.xmlbeans.SchemaTypeLoader;
import org.apache.xmlbeans.XmlBeans;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
import org.xmlsoap.schemas.soap.envelope.EnvelopeDocument;

import com.eviware.soapui.SoapUI;
import com.eviware.soapui.SoapUIExtensionClassLoader;
import com.eviware.soapui.SoapUIExtensionClassLoader.SoapUIClassLoaderState;
import com.eviware.soapui.impl.wsdl.support.Constants;
import com.eviware.soapui.support.xml.XmlUtils;

/**
* SoapVersion for SOAP 1.1
*
* @author ole.matzura
*/

public class SoapVersion11 extends AbstractSoapVersion
{
  private final static QName envelopeQName = new QName( Constants.SOAP11_ENVELOPE_NS, "Envelope" );
  private final static QName bodyQName = new QName( Constants.SOAP11_ENVELOPE_NS, "Body" );
  private final static QName faultQName = new QName( Constants.SOAP11_ENVELOPE_NS, "Fault" );
  private final static QName headerQName = new QName( Constants.SOAP11_ENVELOPE_NS, "Header" );

  SchemaTypeLoader soapSchema;
  SchemaType soapEnvelopeType;
  private XmlObject soapSchemaXml;
  private XmlObject soapEncodingXml;
  private SchemaType soapFaultType;

  public final static SoapVersion11 instance = new SoapVersion11();

  private SoapVersion11()
  {
    SoapUIClassLoaderState state = SoapUIExtensionClassLoader.ensure();

    try
    {
      XmlOptions options = new XmlOptions();
      options.setCompileNoValidation();
      options.setCompileNoPvrRule();
      options.setCompileDownloadUrls();
      options.setCompileNoUpaRule();
      options.setValidateTreatLaxAsSkip();

      // soapSchemaXml = XmlObject.Factory.parse(
      // SoapUI.class.getResource(
      // "/com/eviware/soapui/resources/xsds/soapEnvelope.xsd" ), options );
      soapSchemaXml = XmlUtils.createXmlObject(
          SoapUI.class.getResource( "/com/eviware/soapui/resources/xsds/soapEnvelope.xsd" ), options );
      soapSchema = XmlBeans.loadXsd( new XmlObject[] { soapSchemaXml } );

      soapEnvelopeType = soapSchema.findDocumentType( envelopeQName );
      soapFaultType = soapSchema.findDocumentType( faultQName );

      // soapEncodingXml = XmlObject.Factory.parse(
      // SoapUI.class.getResource(
      // "/com/eviware/soapui/resources/xsds/soapEncoding.xsd" ), options );
      soapEncodingXml = XmlUtils.createXmlObject(
          SoapUI.class.getResource( "/com/eviware/soapui/resources/xsds/soapEncoding.xsd" ), options );
    }
    catch( Exception e )
    {
      SoapUI.logError( e );
    }
    finally
    {
      state.restore();
    }
  }

  public SchemaType getEnvelopeType()
  {
    return EnvelopeDocument.type;
  }

  public String getEnvelopeNamespace()
  {
    return Constants.SOAP11_ENVELOPE_NS;
  }

  public String getEncodingNamespace()
  {
    return Constants.SOAP_ENCODING_NS;
  }

  public XmlObject getSoapEncodingSchema() throws XmlException, IOException
  {
    return soapEncodingXml;
  }

  public XmlObject getSoapEnvelopeSchema() throws XmlException, IOException
  {
    return soapSchemaXml;
  }

  public String toString()
  {
    return "SOAP 1.1";
  }

  public String getContentTypeHttpHeader( String encoding, String soapAction )
  {
    if( encoding == null || encoding.trim().length() == 0 )
      return getContentType();
    else
      return getContentType() + ";charset=" + encoding;
  }

  public String getSoapActionHeader( String soapAction )
  {
    if( soapAction == null || soapAction.length() == 0 )
    {
      soapAction = "\"\"";
    }
    else
    {
      soapAction = "\"" + soapAction + "\"";
    }

    return soapAction;
  }

  public String getContentType()
  {
    return "text/xml";
  }

  public QName getBodyQName()
  {
    return bodyQName;
  }

  public QName getEnvelopeQName()
  {
    return envelopeQName;
  }

  public QName getHeaderQName()
  {
    return headerQName;
  }

  protected SchemaTypeLoader getSoapEnvelopeSchemaLoader()
  {
    return soapSchema;
  }

  public SchemaType getFaultType()
  {
    return soapFaultType;
  }

  public String getName()
  {
    return "SOAP 1.1";
  }

  public String getFaultDetailNamespace()
  {
    return "";
  }
}
TOP

Related Classes of com.eviware.soapui.impl.wsdl.support.soap.SoapVersion11

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.