igors 02/03/06 06:49:49 Modified: java/src/org/apache/axis/wsdl/toJava JavaStubWriter.java SchemaUtils.java Log: Taken care of simple types derived from base types (not enumerations) For example like this <xsd:simpleType name="myLong"> <xsd:restriction base="xsd:long"/> </xsd:simpleType> Previously such derived types were not registered for deserialization, so when a SOAP reply comes with myLong it would result in a failure. Revision Changes Path 1.40 +15 -1 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java Index: JavaStubWriter.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- JavaStubWriter.java 5 Mar 2002 14:02:13 -0000 1.39 +++ JavaStubWriter.java 6 Mar 2002 14:49:49 -0000 1.40 @@ -397,7 +397,10 @@ private void writeSerializationInit(TypeEntry type) throws IOException { // Don't need to register base types or // our special collection types for indexed properties - if (type.getBaseType() != null || + // Note that we still have to register types derived from base types + // This is necessary to be able to properly identify such derived types + // during deserialization + if ((type.getBaseType() != null && type.getRefType() == null) || type instanceof CollectionType) { return; } @@ -437,6 +440,17 @@ pw.println(" cachedDeserFactories.add(enumdf);"); } else if (type.isSimpleType()) { pw.println(" cachedSerFactories.add(simplesf);"); + pw.println(" cachedDeserFactories.add(simpledf);"); + } else if (type.getBaseType() != null) { + // serializers are not required for types derived from base types + // java type to qname mapping is anyway established by default + // note that we have to add null to the serfactories vector to + // keep the order of other entries, this is not going to screw + // up because if type mapping returns null for a serialization + // factory, it is assumed to be not-defined and the delegate + // will be checked, the end delegate is DefaultTypeMappingImpl + // that'll get it right with the base type name + pw.println(" cachedSerFactories.add(null);"); pw.println(" cachedDeserFactories.add(simpledf);"); } else { pw.println(" cachedSerFactories.add(beansf);"); 1.12 +7 -2 xml-axis/java/src/org/apache/axis/wsdl/toJava/SchemaUtils.java Index: SchemaUtils.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/SchemaUtils.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- SchemaUtils.java 27 Feb 2002 13:41:28 -0000 1.11 +++ SchemaUtils.java 6 Mar 2002 14:49:49 -0000 1.12 @@ -479,8 +479,7 @@ // Process the enumeration elements underneath the restriction node if (baseEType != null && restrictionNode != null) { - Vector v = new Vector(); - v.add(baseEType); + Vector v = new Vector(); NodeList enums = restrictionNode.getChildNodes(); for (int i=0; i < enums.getLength(); i++) { QName enumKind = Utils.getNodeQName(enums.item(i)); @@ -496,6 +495,12 @@ } } } + + // is this really an enumeration? + if(v.isEmpty()) return null; + + // The first element in the vector is the base type (an TypeEntry). + v.add(0,baseEType); return v; } }