axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aaron Gourley (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AXIS2-3651) BeanUtil class should try and fill the xsi:type attribute with value from type table before defaulting to class name
Date Wed, 30 Apr 2008 14:48:07 GMT

    [ https://issues.apache.org/jira/browse/AXIS2-3651?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12593347#action_12593347
] 

Aaron Gourley commented on AXIS2-3651:
--------------------------------------

It is my feeling that if Datelin is right about this, then it is a problem with the deserialization
which in turn needs to be fixed.  It seems clear to me that from a SOAP perspective the xsi:type
attribute should be meaningful with regards to the WSDL (i.e. identify the schema type as
defined in the WSDL).  In general, the class name doesn't tell a generic SOAP client anything
about the elements type, since the class name doesn't appear in the WSDL.

> BeanUtil class should try and fill the xsi:type attribute with value from type table
before defaulting to class name
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-3651
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3651
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Improvement
>          Components: databinding
>    Affects Versions: 1.4, 1.3
>         Environment: Windows XP SP2, Java 6
>            Reporter: Aaron Gourley
>            Assignee: nadir amra
>            Priority: Minor
>
> Using the type table to fill the xsi:type attribute would help make it possible to successfully
validate SOAP response messages against the WSDL.  Although the class name approach may be
sufficient for POJO services, it provides meaningless information when other approaches are
used.
> I suggest replacing the following lines of BeanUtil.java
>              // Added objectAttributes as a fix for issues AXIS2-2055 and AXIS2-1899
to 
>             // support polymorphism in POJO approach.
>             // For some reason, using QName(Constants.XSI_NAMESPACE, "type", "xsi") does
not generate
>             // an xsi:type attribtue properly for inner objects. So just using a simple
QName("type").
>             ArrayList objectAttributes = new ArrayList();
>             objectAttributes.add(new QName("type"));
>             objectAttributes.add(beanObject.getClass().getName());
> With this (or similar ... not sure if qualified check should be there):
>             ArrayList objectAttributes = new ArrayList();
>             objectAttributes.add(new QName(Constants.XSI_NAMESPACE, "type", "xsi"));
>             if( typeTable != null && qualified )
>             {
>                 QName qNamefortheType =
>                     typeTable.getQNamefortheType(beanObject.getClass().getName());
>                 if (qNamefortheType == null) {
>                     // Added objectAttributes as a fix for issues AXIS2-2055 and AXIS2-1899
to 
>                     // support polymorphism in POJO approach.
>                     objectAttributes.add(beanObject.getClass().getName());
>                 }
>                 else
>                 {
>                     objectAttributes.add(qNamefortheType);    
>                 }
>             }
>             else
>             {
>                 objectAttributes.add(beanObject.getClass().getName());
>             }
> Note that I had no issues with generating the xsi:type attribute for inner elements in
my testing (as was mentioned by the existing comment).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Mime
View raw message