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  import java.util.List;
17  
18  import javax.xml.namespace.QName;
19  
20  import org.apache.xmlbeans.SchemaType;
21  import org.apache.xmlbeans.XmlError;
22  import org.apache.xmlbeans.XmlException;
23  import org.apache.xmlbeans.XmlObject;
24  import org.apache.xmlbeans.XmlValidationError;
25  
26  import com.eviware.soapui.support.StringUtils;
27  
28  /***
29   * Public behaviour for a SOAP Version
30   * 
31   * @author ole.matzura
32   */
33  
34  public interface SoapVersion
35  {
36  	public static final SoapVersion11 Soap11 = SoapVersion11.instance;
37  	public static final SoapVersion12 Soap12 = SoapVersion12.instance; 
38  	
39     public QName getEnvelopeQName();
40     
41     public QName getBodyQName();
42     
43     public QName getHeaderQName();
44     
45     public void validateSoapEnvelope(String soapMessage, List<XmlError> errors);
46  
47  	public String getContentTypeHttpHeader( String encoding, String soapAction );
48  
49  	public String getEnvelopeNamespace();
50  
51  	public String getEncodingNamespace();
52  
53  	public XmlObject getSoapEncodingSchema() throws XmlException, IOException;
54  
55  	public XmlObject getSoapEnvelopeSchema() throws XmlException, IOException; 
56  	
57  	/***
58  	 * Checks if the specified validation error should be ignored for a message with
59  	 * this SOAP version. (The SOAP-spec may allow some constructions not allowed by 
60  	 * the corresponding XML-Schema) 
61  	 */
62  	
63  	public boolean shouldIgnore( XmlValidationError xmlError );
64  
65  	public String getContentType();
66  
67  	public SchemaType getEnvelopeType();
68  
69  	public SchemaType getFaultType();
70  
71  	public String getName();
72  	
73  	/***
74  	 * Utilities
75  	 * 
76  	 * @author ole.matzura
77  	 */
78  	
79  	public static class Utils
80  	{
81  		public static SoapVersion getSoapVersionForContentType( String contentType, SoapVersion def )
82  		{
83  			if( StringUtils.isNullOrEmpty( contentType ))
84  				return def;
85  			
86  			SoapVersion soapVersion = contentType.startsWith( SoapVersion.Soap11.getContentType() ) ? SoapVersion.Soap11 : null;
87  			soapVersion = soapVersion == null && contentType.startsWith( SoapVersion.Soap12.getContentType() ) ? SoapVersion.Soap12 : soapVersion;
88  	
89  			return soapVersion == null ? def : soapVersion;
90  		}
91  	}
92  
93  	public String getSoapActionHeader( String soapAction );
94  }