View Javadoc

    1   /*
    2    *  soapUI, copyright (C) 2004-2007 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
    13  package com.eviware.soapui.impl.wsdl.support.soap;
    14
    15  import java.io.IOException;
    16
    17  import javax.xml.namespace.QName;
    18
    19  import org.apache.xmlbeans.SchemaType;
    20  import org.apache.xmlbeans.SchemaTypeLoader;
    21  import org.apache.xmlbeans.XmlBeans;
    22  import org.apache.xmlbeans.XmlException;
    23  import org.apache.xmlbeans.XmlObject;
    24  import org.w3.x2003.x05.soapEnvelope.EnvelopeDocument;
    25  import org.w3.x2003.x05.soapEnvelope.FaultDocument;
    26
    27  import com.eviware.soapui.SoapUI;
    28  import com.eviware.soapui.impl.wsdl.support.Constants;
    29
    30  /***
    31   * SoapVersion for SOAP 1.2
    32   *
    33   * @author ole.matzura
    34   */
    35
    36  public class SoapVersion12 extends AbstractSoapVersion
    37  {
    38     private final static QName envelopeQName  = new QName(Constants.SOAP12_ENVELOPE_NS, "Envelope");
    39     private final static QName bodyQName = new QName(Constants.SOAP12_ENVELOPE_NS, "Body");
    40     private final static QName faultQName = new QName(Constants.SOAP11_ENVELOPE_NS, "Fault");
    41     private final static QName headerQName = new QName(Constants.SOAP12_ENVELOPE_NS, "Header");
    42  	public final static SoapVersion12 instance = new SoapVersion12();
    43
    44     private SchemaTypeLoader soapSchema;
    45  	private XmlObject soapSchemaXml;
    46  	private XmlObject soapEncodingXml;
    47
    48     private SoapVersion12()
    49     {
    50     	ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
    51     	Thread.currentThread().setContextClassLoader( SoapUI.class.getClassLoader() );
    52
    53     	try
    54     	{
    55  			soapSchemaXml = XmlObject.Factory.parse(SoapUI.class.getResource("/soapEnvelope12.xsd"));
    56  			soapSchema = XmlBeans.loadXsd(new XmlObject[] { soapSchemaXml });
    57  	   	soapEncodingXml = XmlObject.Factory.parse(SoapUI.class.getResource("/soapEncoding12.xsd"));
    58     	}
    59     	catch( Exception e )
    60     	{
    61     		SoapUI.logError( e );
    62     	}
    63     	finally
    64     	{
    65     		Thread.currentThread().setContextClassLoader( contextClassLoader );
    66     	}
    67     }
    68
    69     public String getEncodingNamespace()
    70  	{
    71  		return "http://www.w3.org/2003/05/soap-encoding";
    72  	}
    73
    74  	public XmlObject getSoapEncodingSchema() throws XmlException, IOException
    75  	{
    76  		return soapEncodingXml;
    77  	}
    78
    79  	public XmlObject getSoapEnvelopeSchema() throws XmlException, IOException
    80  	{
    81  		return soapSchemaXml;
    82  	}
    83
    84  	public String getEnvelopeNamespace()
    85  	{
    86  		return Constants.SOAP12_ENVELOPE_NS;
    87  	}
    88
    89  	public SchemaType getEnvelopeType()
    90  	{
    91  		return EnvelopeDocument.type;
    92  	}
    93
    94  	public String toString()
    95  	{
    96  		return "SOAP 1.2";
    97  	}
    98
    99  	public String getContentTypeHttpHeader(String encoding, String soapAction)
    100 	{
    101 		String result = getContentType();
    102
    103 		if (encoding != null && encoding.trim().length() > 0)
    104 			result += ";charset=" + encoding;
    105
    106 		if( soapAction != null )
    107 			result += ";action=" + soapAction;
    108
    109 		return result;
    110 	}
    111
    112 	public String getSoapActionHeader( String soapAction )
    113 	{
    114 		// SOAP 1.2 has this in the contenttype
    115 		return null;
    116 	}
    117
    118 	public String getContentType()
    119 	{
    120 		return "application/soap+xml";
    121 	}
    122
    123 	public QName getBodyQName()
    124 	{
    125 		return bodyQName;
    126 	}
    127
    128 	public QName getEnvelopeQName()
    129 	{
    130 		return envelopeQName;
    131 	}
    132
    133 	public QName getHeaderQName()
    134 	{
    135 		return headerQName;
    136 	}
    137
    138 	protected SchemaTypeLoader getSoapEnvelopeSchemaLoader()
    139 	{
    140 		return soapSchema;
    141 	}
    142
    143 	public static QName getFaultQName()
    144 	{
    145 		return faultQName;
    146 	}
    147
    148 	public SchemaType getFaultType()
    149 	{
    150 		return FaultDocument.type;
    151 	}
    152
    153 	public String getName()
    154 	{
    155 		return "SOAP 1.2";
    156 	}
    157 }