[
https://issues.apache.org/jira/browse/AXIS2-3651?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12592251#action_12592251
]
nadir amra commented on AXIS2-3651:
-----------------------------------
This seems like a reasonable fix and I want to do further testing but my
initial tests look good. Anyone have any feedback on this? Just to
summarize, if a simple POJO service such as
public class WeatherService{
Weather weather = new Weather();
public void setWeather(Weather weather){
this.weather = weather;
}
public Weather getWeather(){
return this.weather;
}
}
was deployed, the SOAP response that would be returned by the Axis 2 engine
would be something like the following:
=====================
<getWeatherResponse xmlns:ns="http://service.pojo.sample">
<ns:return xmlns:ax21="http://data.pojo.sample/xsd"
type="sample.pojo.data.Weather">
<ax21:forecast>Sunny</ax21:forecast>
<ax21:howMuchRain>1.0</ax21:howMuchRain>
<ax21:rain>true</ax21:rain>
<ax21:temperature>9.5</ax21:temperature>
</ns:return>
</getWeatherResponse>
======================
The above response has 2 problems:
(1) "type" is missing xsi qualifier and namespace declaration for xsi
(2) "sample.pojo.data.Weather" is used instead of "ax21:Weather"
With the fix the response now looks like the following:
======================
<getWeatherResponse xmlns:ns="http://service.pojo.sample">
<ns:return xmlns:ax21="http://data.pojo.sample/xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax21:Weather">
<ax21:forecast>Sunny</ax21:forecast>
<ax21:howMuchRain>1.0</ax21:howMuchRain>
<ax21:rain>true</ax21:rain>
<ax21:temperature>9.5</ax21:temperature>
</ns:return>
</getWeatherResponse>
=======================
I think it would have been beneficial to incude this in 1.4, but oh well...:-(
This fix should also knock some several related JIRAs....
> 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]