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";