[ 
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to