Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 70174 invoked from network); 29 Nov 2003 05:17:35 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 29 Nov 2003 05:17:35 -0000 Received: (qmail 43562 invoked by uid 500); 29 Nov 2003 05:17:12 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 43540 invoked by uid 500); 29 Nov 2003 05:17:11 -0000 Mailing-List: contact axis-dev-help@ws.apache.org; run by ezmlm Precedence: bulk Reply-To: axis-dev@ws.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list axis-dev@ws.apache.org Received: (qmail 43529 invoked from network); 29 Nov 2003 05:17:11 -0000 Message-ID: <20031129051722.3667.qmail@web12826.mail.yahoo.com> Date: Fri, 28 Nov 2003 21:17:22 -0800 (PST) From: Davanum Srinivas Reply-To: dims@yahoo.com Subject: Bug 22213 / 24524 (was Re: cvs commit: ws-axis/java/test/RPCDispatch TestSerializedRPC.java) To: axis-dev@ws.apache.org In-Reply-To: <20031128233913.88053.qmail@minotaur.apache.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N Glen, Can you please take a stab at Bug 22213 (Axis 1.1 array deserialization: SAXException Invalid element) as well? i attached a stand-alone test case to the bug report. You will need to run W2J on the arraytest.wsdl in the zip file as the test case uses the generated code. Also any impact on 24524? Thanks, dims --- gdaniels@apache.org wrote: > gdaniels 2003/11/28 15:39:13 > > Modified: java/src/org/apache/axis Constants.java > java/src/org/apache/axis/encoding > DefaultSOAPEncodingTypeMappingImpl.java > DefaultTypeMappingImpl.java TypeMapping.java > TypeMappingDelegate.java TypeMappingImpl.java > TypeMappingRegistryImpl.java > java/src/org/apache/axis/wsdl/symbolTable Utils.java > java/src/org/apache/axis/wsdl/toJava Emitter.java > java/test/RPCDispatch TestSerializedRPC.java > Log: > Fix a number of inconsistencies/issues in the type mapping > system. > > * Refactor TypeMappingDelegate. Now it does NOT inherit from > TypeMappingImpl, but just implements TypeMapping. Since the > whole point of the delegate class is just to act as a proxy > for a "real" typemapping in order to keep chains updated in > the face of changes, it doesn't make sense for it to have > all the "real" functionality. Now this is explicit, which > should make debugging easier in the future. > > * Refactor getXMLType() up to TypeMapping interface. > > * Instead of putting the soap encoding typedefs into the default > type mapping, put them (and only them) into the default SOAP > type mappings, which delegate to the "raw" default type mapping. > This cleans up a lot of weird problems we were having mixing up > soap encoded types with schema types. > > * Fix type mapping chaining bug in register() - now we actually > have the new mapping delegate to the old one, which makes the > scoping work. > > * When checking for serializers or looking up QNames by class, > walk the delegate chain *before* doing the funky array-checking > logic. This enables explicit mappings of, say, "int[]", to > override the default abstract array processing. > > * DefaultTypeMappings used to throw exceptions if they were > modified after initialization - but I don't think this really > makes sense - you should be able to change the defaults. So the > exception throwing has been commented out for now. > > * Comment out testEncodedArrayConversion in TestSerializedRPC. > In this context, there is no way that string could > schema-validate against the service (since it's using SOAP-encoded > arrays and thus must have child elements). > > * Comment out calls to getNillableQName() in wsdl.symbolTable.Utils. > This prevents changing the schema types to potentially incompatible > ones (I don't believe SOAP processors are required to understand > the soapenc types, therefore we can't replace the schema ones, > esp. in a doc/lit environment). > > * Change ordering of schema types to make sure 2001 schema is > registered last (this means class->XSD mappings will by default > return 2001 versions) > > Revision Changes Path > 1.128 +2 -2 ws-axis/java/src/org/apache/axis/Constants.java > > Index: Constants.java > =================================================================== > RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/Constants.java,v > retrieving revision 1.127 > retrieving revision 1.128 > diff -u -r1.127 -r1.128 > --- Constants.java 4 Nov 2003 18:07:22 -0000 1.127 > +++ Constants.java 28 Nov 2003 23:39:12 -0000 1.128 > @@ -315,9 +315,9 @@ > public static final String URI_DEFAULT_SCHEMA_XSD = URI_2001_SCHEMA_XSD; > > public static final String[] URIS_SCHEMA_XSD = { > - URI_2001_SCHEMA_XSD, > + URI_1999_SCHEMA_XSD, > URI_2000_SCHEMA_XSD, > - URI_1999_SCHEMA_XSD > + URI_2001_SCHEMA_XSD > }; > public static final QName [] QNAMES_NIL = { > SchemaVersion2001.QNAME_NIL, > > > > 1.3 +42 -1 > ws-axis/java/src/org/apache/axis/encoding/DefaultSOAPEncodingTypeMappingImpl.java > > Index: DefaultSOAPEncodingTypeMappingImpl.java > =================================================================== > RCS file: > /home/cvs/ws-axis/java/src/org/apache/axis/encoding/DefaultSOAPEncodingTypeMappingImpl.java,v > retrieving revision 1.2 > retrieving revision 1.3 > diff -u -r1.2 -r1.3 > --- DefaultSOAPEncodingTypeMappingImpl.java 22 Apr 2003 19:34:24 -0000 1.2 > +++ DefaultSOAPEncodingTypeMappingImpl.java 28 Nov 2003 23:39:12 -0000 1.3 > @@ -55,6 +55,10 @@ > > package org.apache.axis.encoding; > > +import org.apache.axis.Constants; > +import org.apache.axis.encoding.ser.Base64SerializerFactory; > +import org.apache.axis.encoding.ser.Base64DeserializerFactory; > + > /** > * @author Rich Scheuerle (scheu@us.ibm.com) > * > @@ -74,8 +78,45 @@ > } > return tm; > } > + > + public static TypeMapping createWithDelegate() { > + TypeMapping ret = new DefaultSOAPEncodingTypeMappingImpl(); > + ret.setDelegate(DefaultTypeMappingImpl.getSingleton()); > + return ret; > + } > > protected DefaultSOAPEncodingTypeMappingImpl() { > - super(true); > + registerSOAPTypes(); > + } > + > + /** > + * Register the SOAP encoding data types. This is split out into a > + * method so it can happen either before or after the XSD mappings. > + */ > + private void registerSOAPTypes() { > + // SOAP Encoded strings are treated as primitives. > + // Everything else is not. > + myRegisterSimple(Constants.SOAP_STRING, java.lang.String.class); > + myRegisterSimple(Constants.SOAP_BOOLEAN, java.lang.Boolean.class); > + myRegisterSimple(Constants.SOAP_DOUBLE, java.lang.Double.class); > + myRegisterSimple(Constants.SOAP_FLOAT, java.lang.Float.class); > + myRegisterSimple(Constants.SOAP_INT, java.lang.Integer.class); > + myRegisterSimple(Constants.SOAP_INTEGER, java.math.BigInteger.class); > + myRegisterSimple(Constants.SOAP_DECIMAL, java.math.BigDecimal.class); > + myRegisterSimple(Constants.SOAP_LONG, java.lang.Long.class); > + myRegisterSimple(Constants.SOAP_SHORT, java.lang.Short.class); > + myRegisterSimple(Constants.SOAP_BYTE, java.lang.Byte.class); > + myRegister(Constants.SOAP_BASE64, byte[].class, > + new Base64SerializerFactory(byte[].class, > + Constants.SOAP_BASE64 ), > + new Base64DeserializerFactory(byte[].class, > + Constants.SOAP_BASE64) > + ); > + myRegister(Constants.SOAP_BASE64BINARY, byte[].class, > + new Base64SerializerFactory(byte[].class, > + Constants.SOAP_BASE64 ), > + new Base64DeserializerFactory(byte[].class, > + Constants.SOAP_BASE64) > + ); > } > } > > > > 1.75 +10 -52 ws-axis/java/src/org/apache/axis/encoding/DefaultTypeMappingImpl.java > > Index: DefaultTypeMappingImpl.java > =================================================================== > RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/encoding/DefaultTypeMappingImpl.java,v > retrieving revision 1.74 > retrieving revision 1.75 > diff -u -r1.74 -r1.75 > --- DefaultTypeMappingImpl.java 25 Nov 2003 06:07:02 -0000 1.74 > +++ DefaultTypeMappingImpl.java 28 Nov 2003 23:39:12 -0000 1.75 > @@ -127,10 +127,6 @@ > } > > protected DefaultTypeMappingImpl() { > - this(false); > - } > - > - protected DefaultTypeMappingImpl(boolean encoded) { > super(null); > delegate = null; > > @@ -160,10 +156,6 @@ > Constants.MIME_PLAINTEXT)); > } > > - if (!encoded) { > - registerSOAPTypes(); > - } > - > // HexBinary binary data needs to use the hex binary serializer/deserializer > myRegister(Constants.XSD_HEXBIN, HexBinary.class, > new HexSerializerFactory( > @@ -643,45 +635,10 @@ > SchemaVersion.SCHEMA_2000.registerSchemaSpecificTypes(this); > SchemaVersion.SCHEMA_2001.registerSchemaSpecificTypes(this); > > - if (encoded) { > - registerSOAPTypes(); > - } > - > doneInit = true; > } > === message truncated === ===== Davanum Srinivas - http://webservices.apache.org/~dims/