tomj        2002/12/06 14:01:15

  Modified:    java/src/org/apache/axis/encoding/ser ArraySerializer.java
               java/src/org/apache/axis AxisEngine.java
  Log:
  Turn off 2-dimentional array serialization which .NET deserailizers
  do not support.
  
  This is now a globalConfiguration property, which can be turned on or off
  in the server-config.wsdd file:
   <globalConfiguration>
    <parameter name="enable2DArrayEncoding" value="true"/>
   </globalConfiguration>
  
  Revision  Changes    Path
  1.41      +18 -3     
xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializer.java
  
  Index: ArraySerializer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializer.java,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- ArraySerializer.java      3 Dec 2002 13:23:49 -0000       1.40
  +++ ArraySerializer.java      6 Dec 2002 22:01:15 -0000       1.41
  @@ -59,12 +59,14 @@
   import org.apache.axis.encoding.SerializationContext;
   import org.apache.axis.encoding.Serializer;
   import org.apache.axis.utils.Messages;
  +import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.wsdl.fromJava.Types;
   
   import org.apache.axis.components.logger.LogFactory;
   import org.apache.commons.logging.Log;
   
   import org.apache.axis.MessageContext;
  +import org.apache.axis.AxisEngine;
   import org.apache.axis.soap.SOAPConstants;
   import org.apache.axis.schema.SchemaVersion;
   
  @@ -186,16 +188,29 @@
           //     referenced.  Transforming into a 2-dim array will cause the
           //     multi-referenced information to be lost.  Plus there is no
           //     way to determine whether the arrays are multi-referenced.
  -        //     Thus the code is currently disabled (see enable2Dim below).
  +        //   - .NET currently (Dec 2002) does not support 2D SOAP-encoded arrays
           //
  -        // Currently the support is ENABLED because it is necessary for
  +        // OLD Comment as to why this was ENABLED:
  +        // It is necessary for
           // interoperability (echo2DStringArray).  It is 'safe' for now
           // because Axis treats arrays as non multi-ref (see the note
           // in SerializationContextImpl.isPrimitive(...) )
           // More complicated processing is necessary for 3-dim arrays, etc.
           //
  +        // Axis 1.1 - December 2002
  +        // Turned this OFF because Microsoft .NET can not deserialize
  +        // multi-dimensional SOAP-encoded arrays, and this interopability
  +        // is pretty high visibility. Make it a global configuration parameter:
  +        //  <parameter name="enable2DEncoding" value="true"/>    (tomj)
  +        //
  +
  +        // Check the message context to see if we should turn 2D processing ON
  +        // Default is OFF
  +        boolean enable2Dim =
  +            JavaUtils.isTrueExplicitly(context.getMessageContext().
  +                getAxisEngine().getOption(AxisEngine.PROP_TWOD_ARRAY_ENCODING));
  +
           int dim2Len = -1;
  -        boolean enable2Dim = true;  // Enabled 2-Dim processing
           if (enable2Dim && !dims.equals("")) {
               if (cls.isArray() && len > 0) {
                   boolean okay = true;
  
  
  
  1.99      +1 -3      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.98
  retrieving revision 1.99
  diff -u -r1.98 -r1.99
  --- AxisEngine.java   18 Sep 2002 16:10:31 -0000      1.98
  +++ AxisEngine.java   6 Dec 2002 22:01:15 -0000       1.99
  @@ -57,15 +57,12 @@
   
   import org.apache.axis.encoding.TypeMappingRegistry;
   import org.apache.axis.handlers.BasicHandler;
  -import org.apache.axis.handlers.HandlerChainImpl;
   import org.apache.axis.handlers.soap.SOAPService;
   import org.apache.axis.session.Session;
   import org.apache.axis.session.SimpleSession;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.Messages;
   import org.apache.axis.utils.cache.ClassCache;
  -import org.apache.axis.client.Service;
  -import org.apache.axis.client.Call;
   
   import org.apache.axis.components.logger.LogFactory;
   import org.apache.commons.logging.Log;
  @@ -103,6 +100,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_TWOD_ARRAY_ENCODING = "enable2DArrayEncoding";
   
       public static final String 
DEFAULT_ATTACHMENT_IMPL="org.apache.axis.attachments.AttachmentsImpl";
   
  
  
  


Reply via email to