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