[MultiRef] SerializationContext.isPrimitive return false for bean property of
primitive type
---------------------------------------------------------------------------------------------
Key: AXIS-1746
URL: http://issues.apache.org/jira/browse/AXIS-1746
Project: Axis
Type: Bug
Components: Serialization/Deserialization
Versions: 1.2RC2
Environment: Tomcat 5.0.16
JDK 1.4.2_03
OS Windows 2000
Architecture x86
Reporter: Patrick Houbaux
Priority: Blocker
Using a RPC web service using complex data types (exposed java beans with
primitive type properties).
Using Multi-Ref because the data type model is a graph.
BUG: For the primitive type properties of the beans sent through the wire, Axis
sent them as multi ref.
Explanation:
After a debugging session with the Axis 1.2RC2 source, noticed that the
SerializationContext.isPrimitive method in org.apache.axis.encoding return
false for these simple types.
The method public void serialize(QName elemQName,
Attributes attributes,
Object value,
QName xmlType,
Boolean sendNull,
Boolean sendType)
at line 727 is called with a correct xmlType (i.e.
(http://www.w3.org/2001/XMLSchema)double for instance) parameter for the simple
type but in the body of this method the checking if the value is a primitive
(line 802) is not taking into account this correct xmlType.
In the method isPrimitive the following test(starting at line 609) fails:
// Note that java.lang wrapper classes (i.e. java.lang.Integer) are
// not primitives unless the corresponding type is an xsd type.
// (If the wrapper maps to a soap encoded primitive, it can be nillable
// and multi-ref'd).
QName qName = getQNameForClass(javaType);
if (qName != null && Constants.isSchemaXSD(qName.getNamespaceURI())) {
if (SchemaUtils.isSimpleSchemaType(qName)) {
return true;
}
}
During the debug runtime the values in the previous piece of code are the
following:
- javaType = java.lang.Double
- qName = (http://schemas.xmlsoap.org/soap/encoding/)double
Why qName don't get the value : (http://www.w3.org/2001/XMLSchema)double?
Following an example of what is sent through the wire.
p.s.: Orginally sent in the axis-user mailing list, thread:
"Axis 1.2RC2: multiref serialization of xsd simple types / interoperability
with .NET"
--
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
-
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira