[ http://issues.apache.org/jira/browse/AXIS-2383?page=comments#action_12365172 ]
Jongjin Choi commented on AXIS-2383: ------------------------------------ Your proposed patch was already applied by dims at rev. 345958. (Nov 22, 2005) I added test case for AXIS-2280 in test/wsdl/extension2. Please check the latest svn repositry against your web service. Let me know if it is resolved. This patch will be included next release. Thanks. > Is this a serialization bug introduced in axis 1.3? > --------------------------------------------------- > > Key: AXIS-2383 > URL: http://issues.apache.org/jira/browse/AXIS-2383 > Project: Apache Axis > Type: Bug > Components: Serialization/Deserialization > Versions: 1.3 > Environment: Dell Station, W2000, WSAD 5.1.2, Websphere > Reporter: Weian Deng > Assignee: Jongjin Choi > Priority: Critical > > We are working in a project that try to migrate our > web services from axis 1.1 to axis 1.3 where we found > a potential bug in SerializationContext that is > introduced after axis 1.2. > Given the following scenario: > 1. Define a complex type AbstractType, > 2. Define two complex types ConcretType1 and > ConcretType2 which extend type AbstractType > 3. Define complex type D that contains an element E of > type AbstractType > E can be assigned an element of type ConcretType1 or > ConcretType2. > Serializing an Object of type D that contains an > element E of type ConcretType1 should use the > serializer for ConcretType1 to serialize element E. > This is the behavior on axis 1.1. But Axis 1.3 uses > the serializer for AbstracType to do the serialization > which I think is a bug. > Or, is there any setup parameter that can change this > serialization behaviors? > After checking the source code of > SerializationContext. 1.3 introduced a new method > getActualClass(). The logic there doesn't take care > of the case that if clz is a sub-class of javaType, we > should return clz. > private Class getActualJavaClassBug(QName xmlType, > Class javaType, Object obj) { > Class cls = obj.getClass(); > > if ((xmlType != null > && > Constants.isSchemaXSD(xmlType.getNamespaceURI()) && > "anyType".equals(xmlType.getLocalPart())) > || (javaType != null > && (javaType.isArray() || > javaType == > Object.class))) { > return cls; > } > > if (javaType != null && cls != javaType && > !cls.isArray()) { > return javaType; > } > > return cls; > } > Should the second if statement rewrite as follows: > if (javaType != null && > !(javaType.isAssignableFrom(cls)) && !cls.isArray()) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
