gdaniels 2002/10/07 13:18:58 Modified: java/src/org/apache/axis/description Tag: interop4 OperationDesc.java java/src/org/apache/axis/encoding Tag: interop4 DeserializerImpl.java java/src/org/apache/axis/encoding/ser Tag: interop4 ArrayDeserializer.java BeanDeserializer.java java/src/org/apache/axis/message Tag: interop4 SOAPFaultDetailsBuilder.java java/src/org/apache/axis/utils Tag: interop4 BeanUtils.java java/src/org/apache/axis/wsdl/toJava Tag: interop4 JavaBeanHelperWriter.java java/test/wsdl/faults Tag: interop4 FaultServiceTestCase.java Log: Further progress towards functional-tests passage Revision Changes Path No revision No revision 1.23.2.4 +17 -4 xml-axis/java/src/org/apache/axis/description/OperationDesc.java Index: OperationDesc.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/OperationDesc.java,v retrieving revision 1.23.2.3 retrieving revision 1.23.2.4 diff -u -r1.23.2.3 -r1.23.2.4 --- OperationDesc.java 7 Oct 2002 02:23:27 -0000 1.23.2.3 +++ OperationDesc.java 7 Oct 2002 20:18:57 -0000 1.23.2.4 @@ -364,12 +364,25 @@ if (faults == null || cls == null) { return null; } - for (Iterator iterator = faults.iterator(); iterator.hasNext();) { - FaultDesc desc = (FaultDesc) iterator.next(); - if (cls.getName().equals(desc.getClassName())) { - return desc; + + while (cls != null) { + // Check each class in the inheritance hierarchy, stopping at + // java.* or javax.* classes. + + for (Iterator iterator = faults.iterator(); iterator.hasNext();) { + FaultDesc desc = (FaultDesc) iterator.next(); + if (cls.getName().equals(desc.getClassName())) { + return desc; + } + } + + cls = cls.getSuperclass(); + if (cls != null && (cls.getName().startsWith("java.") || + cls.getName().startsWith("javax."))) { + cls = null; } } + return null; } No revision No revision 1.30.2.6 +5 -4 xml-axis/java/src/org/apache/axis/encoding/DeserializerImpl.java Index: DeserializerImpl.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializerImpl.java,v retrieving revision 1.30.2.5 retrieving revision 1.30.2.6 diff -u -r1.30.2.5 -r1.30.2.6 --- DeserializerImpl.java 7 Oct 2002 17:10:57 -0000 1.30.2.5 +++ DeserializerImpl.java 7 Oct 2002 20:18:57 -0000 1.30.2.6 @@ -303,7 +303,7 @@ // lets us know when it's done so we can take it off our list. dSer.registerValueTarget(new CallbackTarget(this, dSer)); } - + protected boolean isHref = false; protected boolean isNil = false; // xsd:nil attribute is set to true protected String id = null; // Set to the id of the element @@ -446,12 +446,13 @@ DeserializationContext context) throws SAXException { + QName type = context.getTypeFromAttributes(namespace, + localName, + attributes); + // If I'm the base class, try replacing myself with an // appropriate deserializer gleaned from type info. if (this.getClass().equals(DeserializerImpl.class)) { - QName type = context.getTypeFromAttributes(namespace, - localName, - attributes); // If no type is specified, use the defaultType if available. // xsd:string is used if no type is provided. if (type == null) { No revision No revision 1.30.2.3 +1 -1 xml-axis/java/src/org/apache/axis/encoding/ser/ArrayDeserializer.java Index: ArrayDeserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ArrayDeserializer.java,v retrieving revision 1.30.2.2 retrieving revision 1.30.2.3 diff -u -r1.30.2.2 -r1.30.2.3 --- ArrayDeserializer.java 7 Oct 2002 03:42:28 -0000 1.30.2.2 +++ ArrayDeserializer.java 7 Oct 2002 20:18:57 -0000 1.30.2.3 @@ -391,7 +391,7 @@ // Get the deserializer for the type. Deserializer dSer = null; - if (itemType != null) { + if (itemType != null && (context.getCurElement().getHref() == null)) { dSer = context.getDeserializerForType(itemType); } 1.55.4.2 +1 -1 xml-axis/java/src/org/apache/axis/encoding/ser/BeanDeserializer.java Index: BeanDeserializer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanDeserializer.java,v retrieving revision 1.55.4.1 retrieving revision 1.55.4.2 diff -u -r1.55.4.1 -r1.55.4.2 --- BeanDeserializer.java 7 Oct 2002 02:23:28 -0000 1.55.4.1 +++ BeanDeserializer.java 7 Oct 2002 20:18:57 -0000 1.55.4.2 @@ -432,7 +432,7 @@ Deserializer dSer = null; - if (xmlType != null) { + if (xmlType != null && href == null) { // Use the xmlType to get the deserializer. dSer = context.getDeserializerForType(xmlType); } else { No revision No revision 1.1.2.6 +8 -1 xml-axis/java/src/org/apache/axis/message/Attic/SOAPFaultDetailsBuilder.java Index: SOAPFaultDetailsBuilder.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/Attic/SOAPFaultDetailsBuilder.java,v retrieving revision 1.1.2.5 retrieving revision 1.1.2.6 diff -u -r1.1.2.5 -r1.1.2.6 --- SOAPFaultDetailsBuilder.java 5 Oct 2002 05:26:07 -0000 1.1.2.5 +++ SOAPFaultDetailsBuilder.java 7 Oct 2002 20:18:58 -0000 1.1.2.6 @@ -62,6 +62,7 @@ import org.apache.axis.encoding.Deserializer; import org.apache.axis.encoding.Callback; import org.apache.axis.encoding.CallbackTarget; +import org.apache.axis.encoding.DeserializerImpl; import org.apache.axis.utils.ClassUtils; import org.xml.sax.Attributes; import org.xml.sax.SAXException; @@ -113,7 +114,13 @@ builder.setFaultClass(faultDesc.getClass()); builder.setWaiting(true); // register callback for the data, use the xmlType from fault info - Deserializer dser = context.getDeserializerForType(faultDesc.getXmlType()); + Deserializer dser = null; + if (attributes.getValue("href") == null) { + dser = context.getDeserializerForType(faultDesc.getXmlType()); + } else { + dser = new DeserializerImpl(); + dser.setDefaultType(faultDesc.getXmlType()); + } if (dser != null) { dser.registerValueTarget(new CallbackTarget(this, "faultData")); } No revision No revision 1.15.2.2 +1 -1 xml-axis/java/src/org/apache/axis/utils/BeanUtils.java Index: BeanUtils.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/BeanUtils.java,v retrieving revision 1.15.2.1 retrieving revision 1.15.2.2 diff -u -r1.15.2.1 -r1.15.2.2 --- BeanUtils.java 3 Oct 2002 18:58:07 -0000 1.15.2.1 +++ BeanUtils.java 7 Oct 2002 20:18:58 -0000 1.15.2.2 @@ -122,7 +122,7 @@ result = Introspector. getBeanInfo(secJavaType,Exception.class). getPropertyDescriptors(); - } else if (superClass == AxisFault.class) { + } else if (AxisFault.class.isAssignableFrom(secJavaType)) { // Don't include AxisFault data result = Introspector. getBeanInfo(secJavaType,AxisFault.class). No revision No revision 1.24.2.1 +5 -1 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanHelperWriter.java Index: JavaBeanHelperWriter.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanHelperWriter.java,v retrieving revision 1.24 retrieving revision 1.24.2.1 diff -u -r1.24 -r1.24.2.1 --- JavaBeanHelperWriter.java 19 Sep 2002 20:25:12 -0000 1.24 +++ JavaBeanHelperWriter.java 7 Oct 2002 20:18:58 -0000 1.24.2.1 @@ -272,7 +272,11 @@ QName xmlName = elem.getName(); // Some special handling for arrays - QName xmlType = elem.getType().getQName(); + TypeEntry elemType = elem.getType(); + if (elemType.getRefType() != null) { + elemType = elemType.getRefType(); + } + QName xmlType = elemType.getQName(); if (xmlType != null && xmlType.getLocalPart().indexOf("[") > 0) { // Skip array types, because they are special xmlType = null; No revision No revision 1.4.8.2 +6 -6 xml-axis/java/test/wsdl/faults/FaultServiceTestCase.java Index: FaultServiceTestCase.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/wsdl/faults/FaultServiceTestCase.java,v retrieving revision 1.4.8.1 retrieving revision 1.4.8.2 diff -u -r1.4.8.1 -r1.4.8.2 --- FaultServiceTestCase.java 3 Oct 2002 14:51:50 -0000 1.4.8.1 +++ FaultServiceTestCase.java 7 Oct 2002 20:18:58 -0000 1.4.8.2 @@ -76,12 +76,12 @@ // that it throws a DerivedFault, but we know the impl actually // throws DerivedFault2 which extends DerivedFault) catch (DerivedFault2 e) { - //assertEquals("Param A in DerivedFault2 doesn't match original", - // a, e.getA()); - //assertEquals("Param B in DerivedFault2 doesn't match original", - // b, e.getB()); - //assertEquals("Param C in DerivedFault2 doesn't match original", - // c, e.getC(), 0.01F); + assertEquals("Param A in DerivedFault2 doesn't match original", + a, e.getA()); + assertEquals("Param B in DerivedFault2 doesn't match original", + b, e.getB()); + assertEquals("Param C in DerivedFault2 doesn't match original", + c, e.getC(), 0.01F); } catch (DerivedFault e) { throw new junit.framework.