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