dims 2003/01/07 11:41:58 Modified: java/src/org/apache/axis Constants.java java/src/org/apache/axis/message EnvelopeBuilder.java java/src/org/apache/axis/i18n resource.properties java/src/org/apache/axis/soap SOAP11Constants.java SOAP12Constants.java SOAPConstants.java Log: Patch for Bug 15850 - VersionMismacth patch to reach soap 1.2 compliance from [EMAIL PROTECTED] (Andras Avar) Note: <just_kidding> :) Am sick of committing Andras's patches :) </just_kidding> Revision Changes Path 1.105 +6 -0 xml-axis/java/src/org/apache/axis/Constants.java Index: Constants.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/Constants.java,v retrieving revision 1.104 retrieving revision 1.105 diff -u -r1.104 -r1.105 --- Constants.java 6 Jan 2003 13:44:08 -0000 1.104 +++ Constants.java 7 Jan 2003 19:41:57 -0000 1.105 @@ -428,6 +428,8 @@ public static final String ELEM_FAULT = "Fault" ; public static final String ELEM_NOTUNDERSTOOD = "NotUnderstood"; + public static final String ELEM_UPGRADE = "Upgrade"; + public static final String ELEM_SUPPORTEDENVELOPE = "SupportedEnvelope"; public static final String ELEM_FAULT_CODE = "faultcode" ; public static final String ELEM_FAULT_STRING = "faultstring" ; @@ -466,6 +468,10 @@ public static final String FAULT_SERVER_USER = "Server.userException"; + + public static final QName FAULT_VERSIONMISMATCH = + new QName(URI_SOAP11_ENV, "VersionMismatch"); + public static final QName FAULT_MUSTUNDERSTAND = new QName(URI_SOAP11_ENV, "MustUnderstand"); 1.31 +28 -3 xml-axis/java/src/org/apache/axis/message/EnvelopeBuilder.java Index: EnvelopeBuilder.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/EnvelopeBuilder.java,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- EnvelopeBuilder.java 20 Nov 2002 18:05:44 -0000 1.30 +++ EnvelopeBuilder.java 7 Jan 2003 19:41:58 -0000 1.31 @@ -60,7 +60,7 @@ import org.apache.axis.utils.Messages; import org.xml.sax.Attributes; import org.xml.sax.SAXException; - +import org.apache.axis.AxisFault; import javax.xml.namespace.QName; /** @@ -69,6 +69,7 @@ * HeaderBuilder and BodyBuilders. * * @author Glen Daniels ([EMAIL PROTECTED]) + * @author Andras Avar ([EMAIL PROTECTED]) */ public class EnvelopeBuilder extends SOAPHandler { @@ -113,8 +114,32 @@ // SOAP 1.2 soapConstants = SOAPConstants.SOAP12_CONSTANTS; } else { - throw new SAXException( - Messages.getMessage("badNamespace00", namespace)); + soapConstants = Constants.DEFAULT_SOAP_VERSION; + + try { + AxisFault fault = new AxisFault(soapConstants.getVerMismatchFaultCodeQName(), + null, Messages.getMessage("versionMissmatch00"), null, null, null); + + SOAPHeaderElement newHeader = new + SOAPHeaderElement(soapConstants.getEnvelopeURI(), + Constants.ELEM_UPGRADE); + + // TODO: insert soap 1.1 upgrade header in case of soap 1.2 response if + // axis supports both simultaneously + MessageElement innerHeader = new + MessageElement(soapConstants.getEnvelopeURI(), + Constants.ELEM_SUPPORTEDENVELOPE); + innerHeader.addAttribute(null, Constants.ATTR_QNAME, + new QName(soapConstants.getEnvelopeURI(), Constants.ELEM_ENVELOPE)); + + newHeader.addChildElement(innerHeader); + fault.addHeader(newHeader); + + throw new SAXException(fault); + + } catch (javax.xml.soap.SOAPException e) { + throw new SAXException(e); + } } // Indicate what version of SOAP we're using to anyone else involved 1.42 +2 -0 xml-axis/java/src/org/apache/axis/i18n/resource.properties Index: resource.properties =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/i18n/resource.properties,v retrieving revision 1.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- resource.properties 6 Jan 2003 20:09:24 -0000 1.41 +++ resource.properties 7 Jan 2003 19:41:58 -0000 1.42 @@ -456,6 +456,8 @@ # NOTE: in noUnderstand00, do not translate "MustUnderstand" noUnderstand00=Did not understand "MustUnderstand" header(s):{0} +versionMissmatch00=Version Mismatch + # NOTE: in noValue00, do not translate "value", "RPCParam" noValue00=No value field for RPCParam to use?!? {0} 1.9 +9 -0 xml-axis/java/src/org/apache/axis/soap/SOAP11Constants.java Index: SOAP11Constants.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/soap/SOAP11Constants.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- SOAP11Constants.java 20 Dec 2002 17:28:23 -0000 1.8 +++ SOAP11Constants.java 7 Jan 2003 19:41:58 -0000 1.9 @@ -62,6 +62,7 @@ * SOAP 1.1 constants * * @author Glen Daniels ([EMAIL PROTECTED]) + * @author Andras Avar ([EMAIL PROTECTED]) */ public class SOAP11Constants implements SOAPConstants { private static QName headerQName = new QName(Constants.URI_SOAP11_ENV, @@ -127,5 +128,13 @@ public String getAttrItemType() { return Constants.ATTR_ARRAY_TYPE; } + + /** + * Obtain the Qname of VersionMismatch fault code + */ + public QName getVerMismatchFaultCodeQName() { + return Constants.FAULT_VERSIONMISMATCH; + } + } 1.10 +7 -0 xml-axis/java/src/org/apache/axis/soap/SOAP12Constants.java Index: SOAP12Constants.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/soap/SOAP12Constants.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- SOAP12Constants.java 20 Dec 2002 17:28:23 -0000 1.9 +++ SOAP12Constants.java 7 Jan 2003 19:41:58 -0000 1.10 @@ -62,6 +62,7 @@ * SOAP 1.2 constants * * @author Glen Daniels ([EMAIL PROTECTED]) + * @author Andras Avar ([EMAIL PROTECTED]) */ public class SOAP12Constants implements SOAPConstants { private static QName headerQName = new QName(Constants.URI_SOAP12_ENV, @@ -133,5 +134,11 @@ return Constants.ATTR_ITEM_TYPE; } + /** + * Obtain the Qname of VersionMismatch fault code + */ + public QName getVerMismatchFaultCodeQName() { + return Constants.FAULT_SOAP12_VERSIONMISMATCH; + } } 1.10 +5 -2 xml-axis/java/src/org/apache/axis/soap/SOAPConstants.java Index: SOAPConstants.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/soap/SOAPConstants.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- SOAPConstants.java 20 Dec 2002 17:28:23 -0000 1.9 +++ SOAPConstants.java 7 Jan 2003 19:41:58 -0000 1.10 @@ -67,6 +67,7 @@ * it just supplies common namespaces + QNames. * * @author Glen Daniels ([EMAIL PROTECTED]) + * @author Andras Avar ([EMAIL PROTECTED]) */ public interface SOAPConstants extends Serializable { /** SOAP 1.1 constants - thread-safe and shared */ @@ -124,7 +125,9 @@ */ public String getAttrItemType(); - - + /** + * Obtain the Qname of VersionMismatch fault code + */ + public QName getVerMismatchFaultCodeQName(); }