axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Patrick Houbaux (JIRA)" <axis-...@ws.apache.org>
Subject [jira] Created: (AXIS-1746) [MultiRef] SerializationContext.isPrimitive return false for bean property of primitive type
Date Mon, 03 Jan 2005 23:31:14 GMT
[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


Mime
View raw message