Glen, I'll let Dan comment on the patch.
-- dims --- Glen Daniels <[EMAIL PROTECTED]> wrote: > > Argh - I don't have time to get into this right now (sorry, am still slammed with > internal > stuff), but this looks weird to me - it seems to actually remove the hooks for > autoTyping to > work in the first place (i.e. the check for the trigger namespace). Am I missing > something > here? > > --Glen > > > -----Original Message----- > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > > Sent: Wednesday, July 02, 2003 12:48 PM > > To: [EMAIL PROTECTED] > > Subject: cvs commit: > > xml-axis/java/src/org/apache/axis/encoding TypeMappingImpl.java > > > > > > dims 2003/07/02 09:47:32 > > > > Modified: java/src/org/apache/axis/encoding TypeMappingImpl.java > > Log: > > Fix for Bug 18084 - Auto Typing in TypeMappingImpl only > > puts types in the default namespace > > from [EMAIL PROTECTED] (Dan Diephouse) > > > > Revision Changes Path > > 1.42 +56 -53 > > xml-axis/java/src/org/apache/axis/encoding/TypeMappingImpl.java > > > > Index: TypeMappingImpl.java > > =================================================================== > > RCS file: > > /home/cvs/xml-axis/java/src/org/apache/axis/encoding/TypeMappi > > ngImpl.java,v > > retrieving revision 1.41 > > retrieving revision 1.42 > > diff -u -r1.41 -r1.42 > > --- TypeMappingImpl.java 22 Apr 2003 19:34:25 -0000 1.41 > > +++ TypeMappingImpl.java 2 Jul 2003 16:47:32 -0000 1.42 > > @@ -57,10 +57,13 @@ > > > > import org.apache.axis.Constants; > > import org.apache.axis.components.logger.LogFactory; > > +import org.apache.axis.encoding.ser.ArrayDeserializerFactory; > > +import org.apache.axis.encoding.ser.ArraySerializerFactory; > > import org.apache.axis.encoding.ser.BeanDeserializerFactory; > > import org.apache.axis.encoding.ser.BeanSerializerFactory; > > -import org.apache.axis.utils.ClassUtils; > > import org.apache.axis.utils.Messages; > > +import org.apache.axis.wsdl.fromJava.Namespaces; > > +import org.apache.axis.wsdl.fromJava.Types; > > import org.apache.commons.logging.Log; > > > > import javax.xml.namespace.QName; > > @@ -139,10 +142,6 @@ > > protected TypeMapping delegate; // Pointer to > > delegate or null > > private ArrayList namespaces; // Supported namespaces > > > > - /** > > - * Should we "auto-type" classes we don't recognize > > into the "java:" > > - * namespace? > > - */ > > private boolean doAutoTypes = false; > > > > /** > > @@ -327,13 +326,6 @@ > > if (xmlType == null) { > > return null; > > } > > - > > - // If we're doing autoTyping, and we got a > > type in the right > > - // namespace, we can use the default serializer. > > - if (doAutoTypes && > > - > > xmlType.getNamespaceURI().equals(Constants.NS_URI_JAVA)) { > > - return new BeanSerializerFactory(javaType, > > xmlType); > > - } > > } > > > > // Try to get the serializer associated with this pair > > @@ -393,12 +385,6 @@ > > if (xmlType == null) { > > return null; > > } > > - > > - // If we're doing autoTyping, we can use the default. > > - if (doAutoTypes && > > - > > xmlType.getNamespaceURI().equals(Constants.NS_URI_JAVA)) { > > - return xmlType; > > - } > > } > > > > // Try to get the serializer associated with this pair > > @@ -458,16 +444,6 @@ > > if (javaType == null) { > > return null; > > } > > - > > - if (doAutoTypes && > > - > > Constants.NS_URI_JAVA.equals(xmlType.getNamespaceURI())) { > > - try { > > - javaType = > > ClassUtils.forName(xmlType.getLocalPart()); > > - } catch (ClassNotFoundException e) { > > - return null; > > - } > > - return new > > BeanDeserializerFactory(javaType, xmlType); > > - } > > } > > > > Pair pair = new Pair(javaType, xmlType); > > @@ -567,27 +543,63 @@ > > xmlType = pair.xmlType; > > } > > > > - if (xmlType == null && doAutoTypes) { > > - xmlType = new QName(Constants.NS_URI_JAVA, > > - javaType.getName()); > > - } > > - > > // Can only detect arrays via code > > if (xmlType == null && (javaType.isArray() || > > - javaType == List.class || > > - List.class.isAssignableFrom(javaType))) { > > + javaType == List.class || > > + List.class.isAssignableFrom(javaType))) { > > > > - // get the registered array if any > > - pair = (Pair) class2Pair.get(Object[].class); > > - // TODO: it always returns the last registered one, > > - // so that's why the soap 1.2 typemappings have to > > - // move to an other registry to differentiate them > > - if (pair != null) { > > - xmlType = pair.xmlType; > > - } else { > > - xmlType = Constants.SOAP_ARRAY; > > + /* If auto-typing is on, generate a namespace > > for this array > > + * intelligently, then register it's javaType > > and xmlType. Also > > + * make sure the class isn't derived from > > List, because they > > + * should be serialized as an anyType array. > > + */ > > + if ( doAutoTypes && > > + javaType != List.class && > > + !List.class.isAssignableFrom(javaType) ) > > + { > > + xmlType = new QName( > > + Namespaces.makeNamespace( javaType.getName() ), > > + Types.getLocalNameFromFullName( > > javaType.getName() ) ); > > + > > + register( javaType, > > + xmlType, > > + new ArraySerializerFactory(), > > + new ArrayDeserializerFactory() ); > > + } > > + else > > + { > > + // get the registered array if any > > + pair = (Pair) class2Pair.get(Object[].class); > > + // TODO: it always returns the last registered one, > > + // so that's why the soap 1.2 > > typemappings have to > > + // move to an other registry to differentiate them > > + if (pair != null) { > > + xmlType = pair.xmlType; > > + } else { > > + xmlType = Constants.SOAP_ARRAY; > > + } > > } > > } > > + > > + /* If the class isn't an array or List and > > auto-typing is turned on, > > + * register the class and it's type as beans. > > + */ > > + if (xmlType == null && doAutoTypes) > > + { > > + xmlType = new QName( > > + Namespaces.makeNamespace( javaType.getName() ), > > + Types.getLocalNameFromFullName( > > javaType.getName() ) ); > > + > > + /* If doAutoTypes is set, register a new type > > mapping for the > > + * java class with the above QName. This way, > > when getSerializer() > > + * and getDeserializer() are called, this > > QName is returned and > > + * these methods do not need to worry about > > creating a serializer. > > + */ > > + register( javaType, > === message truncated === ===== Davanum Srinivas - http://webservices.apache.org/~dims/ __________________________________ Do you Yahoo!? SBC Yahoo! DSL - Now only $29.95 per month! http://sbc.yahoo.com
