You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by gd...@apache.org on 2003/04/08 06:11:38 UTC
cvs commit: xml-axis/java/src/org/apache/axis/message EnvelopeBuilder.java
gdaniels 2003/04/07 21:11:38
Modified: java/src/org/apache/axis MessageContext.java Constants.java
AxisEngine.java
java/src/org/apache/axis/message EnvelopeBuilder.java
Log:
SOAP 1.2 changes - allow a "singleSOAPVersion" property, which can
be set on the engine or a service, which causes the service/engine
to lock down to a single version. When this is set to 1.2, for instance,
we'll generate an Upgrade fault if we recieve SOAP 1.1 envelopes.
Revision Changes Path
1.131 +12 -0 xml-axis/java/src/org/apache/axis/MessageContext.java
Index: MessageContext.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/MessageContext.java,v
retrieving revision 1.130
retrieving revision 1.131
diff -u -r1.130 -r1.131
--- MessageContext.java 24 Mar 2003 15:56:29 -0000 1.130
+++ MessageContext.java 8 Apr 2003 04:11:36 -0000 1.131
@@ -376,6 +376,18 @@
if (defaultSOAPVersion != null && "1.2".equals(defaultSOAPVersion)) {
setSOAPConstants(SOAPConstants.SOAP12_CONSTANTS);
}
+
+ String singleSOAPVersion = (String)engine.getOption(
+ AxisEngine.PROP_SOAP_ALLOWED_VERSION);
+ if (singleSOAPVersion != null) {
+ if ("1.2".equals(singleSOAPVersion)) {
+ setProperty(Constants.MC_SINGLE_SOAP_VERSION,
+ SOAPConstants.SOAP12_CONSTANTS);
+ } else if ("1.1".equals(singleSOAPVersion)) {
+ setProperty(Constants.MC_SINGLE_SOAP_VERSION,
+ SOAPConstants.SOAP11_CONSTANTS);
+ }
+ }
}
}
1.119 +5 -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.118
retrieving revision 1.119
diff -u -r1.118 -r1.119
--- Constants.java 8 Apr 2003 02:22:36 -0000 1.118
+++ Constants.java 8 Apr 2003 04:11:37 -0000 1.119
@@ -675,6 +675,11 @@
// OperationDesc during deserialization. Set this property to any non-null
// value to prevent this behavior (only used by test.soap12.
public static final String MC_NO_OPERATION_OK = "NoOperationOK";
+
+ // This property indicates we're supporting only a single SOAP version.
+ // If set (by the service or engine), we'll only accept envelopes of the
+ // specified version. Value should be an org.apache.axis.soap.SOAPConstants
+ public static final String MC_SINGLE_SOAP_VERSION = "SingleSOAPVersion";
/**
* what the extension of JWS files is. If changing this, note that
1.103 +1 -0 xml-axis/java/src/org/apache/axis/AxisEngine.java
Index: AxisEngine.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/AxisEngine.java,v
retrieving revision 1.102
retrieving revision 1.103
diff -u -r1.102 -r1.103
--- AxisEngine.java 4 Mar 2003 01:02:55 -0000 1.102
+++ AxisEngine.java 8 Apr 2003 04:11:37 -0000 1.103
@@ -99,6 +99,7 @@
public static final String PROP_ATTACHMENT_CLEANUP = "attachment.DirectoryCleanUp";
public static final String PROP_DEFAULT_CONFIG_CLASS = "axis.engineConfigClass";
public static final String PROP_SOAP_VERSION = "defaultSOAPVersion";
+ public static final String PROP_SOAP_ALLOWED_VERSION = "singleSOAPVersion";
public static final String PROP_TWOD_ARRAY_ENCODING = "enable2DArrayEncoding";
public static final String PROP_SEND_MINIMIZED_ELEMENTS = "axis.sendMinimizedElements";
1.34 +24 -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.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- EnvelopeBuilder.java 2 Mar 2003 06:36:19 -0000 1.33
+++ EnvelopeBuilder.java 8 Apr 2003 04:11:37 -0000 1.34
@@ -61,6 +61,8 @@
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.apache.axis.AxisFault;
+import org.apache.axis.MessageContext;
+
import javax.xml.namespace.QName;
/**
@@ -106,6 +108,14 @@
if (!localName.equals(Constants.ELEM_ENVELOPE))
throw new SAXException(
Messages.getMessage("badTag00", localName));
+
+ // See if we're only supporting a single SOAP version at this endpoint
+ MessageContext msgContext = context.getMessageContext();
+ SOAPConstants singleVersion = null;
+ if (msgContext != null) {
+ singleVersion = (SOAPConstants)msgContext.getProperty(
+ Constants.MC_SINGLE_SOAP_VERSION);
+ }
if (namespace.equals(Constants.URI_SOAP11_ENV)) {
// SOAP 1.1
@@ -114,8 +124,19 @@
// SOAP 1.2
soapConstants = SOAPConstants.SOAP12_CONSTANTS;
} else {
- soapConstants = Constants.DEFAULT_SOAP_VERSION;
-
+ soapConstants = null;
+ }
+
+ if ((soapConstants == null) ||
+ (singleVersion != null && soapConstants != singleVersion)) {
+ // Mismatch of some sort, either an unknown namespace or not
+ // the one we want. Send back an appropriate fault.
+
+ // Right now we only send back SOAP 1.1 faults for this case. Do
+ // we want to send SOAP 1.2 faults back to SOAP 1.2 endpoints?
+ soapConstants = SOAPConstants.SOAP11_CONSTANTS;
+ if (singleVersion == null) singleVersion = soapConstants;
+
try {
AxisFault fault = new AxisFault(soapConstants.getVerMismatchFaultCodeQName(),
null, Messages.getMessage("versionMissmatch00"), null, null, null);
@@ -130,7 +151,7 @@
MessageElement(soapConstants.getEnvelopeURI(),
Constants.ELEM_SUPPORTEDENVELOPE);
innerHeader.addAttribute(null, Constants.ATTR_QNAME,
- new QName(soapConstants.getEnvelopeURI(), Constants.ELEM_ENVELOPE));
+ new QName(singleVersion.getEnvelopeURI(), Constants.ELEM_ENVELOPE));
newHeader.addChildElement(innerHeader);
fault.addHeader(newHeader);
Re: cvs commit: xml-axis/java/src/org/apache/axis/message EnvelopeBuilder.java
Posted by Steve Loughran <st...@iseran.com>.
----- Original Message -----
From: <gd...@apache.org>
To: <xm...@apache.org>
Sent: Monday, April 07, 2003 21:11
Subject: cvs commit: xml-axis/java/src/org/apache/axis/message
EnvelopeBuilder.java
> gdaniels 2003/04/07 21:11:38
>
> Modified: java/src/org/apache/axis MessageContext.java Constants.java
> AxisEngine.java
> java/src/org/apache/axis/message EnvelopeBuilder.java
> Log:
> SOAP 1.2 changes - allow a "singleSOAPVersion" property, which can
> be set on the engine or a service, which causes the service/engine
> to lock down to a single version. When this is set to 1.2, for
instance,
> we'll generate an Upgrade fault if we recieve SOAP 1.1 envelopes.
there is a section in reference.html to document all these configuration
options, BTW