[ 
https://issues.apache.org/jira/browse/AXIS2-2594?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul Chisholm updated AXIS2-2594:
---------------------------------

    Description: 
When the schema that appears in the wsdl:types section of a WSDL file specifies 
attributeFormDefault="qualified" then the the getter corresponding to an 
attribute returns null even though an attribute value is specified in the XML.

Example:

Schema is

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
           attributeFormDefault="qualified"
           elementFormDefault="qualified"
           targetNamespace="http://quickstart.samples/xsd";>
  <xs:element name="attribute">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="value" nillable="true" type="xs:string" />
      </xs:sequence>
      <xs:attribute name="status" type="xs:string" />
    </xs:complexType>
  </xs:element>
  <xs:element name="attributeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="value" nillable="true" type="xs:string" />
      </xs:sequence>
      <xs:attribute name="status" type="xs:string" />
    </xs:complexType>
  </xs:element>
</xs:schema>

Message/port definition is

<wsdl:message name="attributeMessage">
  <wsdl:part name="part1" element="ns:attribute"/>
</wsdl:message> 
<wsdl:message name="attributeResponseMessage">
  <wsdl:part name="part1" element="ns:attributeResponse"/> 
</wsdl:message>
<wsdl:portType name="MyServicePortType">
  <wsdl:operation name="attribute">
    <wsdl:input message="axis2:attributeMessage"/>
    <wsdl:output message="axis2:attributeResponseMessage"/>
  </wsdl:operation>
</wsdl:portType>

Client code is

   public static void attribute(MyServiceStub stub){
        try{
            AttributeDocument reqDoc = AttributeDocument.Factory.newInstance();
            AttributeDocument.Attribute req = reqDoc.addNewAttribute();
            req.setStatus("OK");
            req.setValue("Testing");
            AttributeResponseDocument res = stub.attribute(reqDoc);
            
System.err.println("Status="+res.getAttributeResponse().getStatus());
            System.err.println("Value="+res.getAttributeResponse().getValue());
        } catch(Exception e){
            e.printStackTrace();
            System.err.println("\n\n\n");
        }
   }

Service code is

    public AttributeResponseDocument attribute(AttributeDocument param1) {
        String status = param1.getAttribute().getStatus();
        String value = param1.getAttribute().getValue();
        System.err.println();
        System.err.println("Status="+status);
        System.err.println("Value="+value);
        AttributeResponseDocument resDoc =
                AttributeResponseDocument.Factory.newInstance();
        AttributeResponseDocument.AttributeResponse res =
                resDoc.addNewAttributeResponse();
        res.setStatus(status);
        res.setValue(value);
        return resDoc;
    }

When the client is run tracing of the element values displays as expected, but 
tracing of the attributes always shows null.

If the schema is changed to attributeFormDefault="unqualified" the attribute 
values are displayed successfully.

  was:
When the schema that appears in the wsdl:types section of a WSDL file specifies 
attributeFormDefault="qualified" then the the getter corresponding to an 
attribute returns null even though an attribute value is specified in the XML.

Example:

Schema is

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
           attributeFormDefault="qualified"
           elementFormDefault="qualified"
           targetNamespace="http://quickstart.samples/xsd";>
  <xs:element name="attribute">
    <xs:complexType>
      <xs:attribute name="status" type="xs:string" />
      <xs:sequence>
        <xs:element name="value" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="attributeResponse">
    <xs:complexType>
      <xs:attribute name="status" type="xs:string" />
      <xs:sequence>
        <xs:element name="value" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Message/port definition is

<wsdl:message name="attributeMessage">
  <wsdl:part name="part1" element="ns:attribute"/>
</wsdl:message> 
<wsdl:message name="attributeResponseMessage">
  <wsdl:part name="part1" element="ns:attributeResponse"/> 
</wsdl:message>
<wsdl:portType name="MyServicePortType">
  <wsdl:operation name="attribute">
    <wsdl:input message="axis2:attributeMessage"/>
    <wsdl:output message="axis2:attributeResponseMessage"/>
  </wsdl:operation>
</wsdl:portType>

Client code is

   public static void attribute(MyServiceStub stub){
        try{
            AttributeDocument reqDoc = AttributeDocument.Factory.newInstance();
            AttributeDocument.Attribute req = reqDoc.addNewAttribute();
            req.setStatus("OK");
            req.setValue("Testing");
            AttributeResponseDocument res = stub.attribute(reqDoc);
            
System.err.println("Status="+res.getAttributeResponse().getStatus());
            System.err.println("Value="+res.getAttributeResponse().getValue());
        } catch(Exception e){
            e.printStackTrace();
            System.err.println("\n\n\n");
        }
   }

Service code is

    public AttributeResponseDocument attribute(AttributeDocument param1) {
        String status = param1.getAttribute().getStatus();
        String value = param1.getAttribute().getValue();
        System.err.println();
        System.err.println("Status="+status);
        System.err.println("Value="+value);
        AttributeResponseDocument resDoc =
                AttributeResponseDocument.Factory.newInstance();
        AttributeResponseDocument.AttributeResponse res =
                resDoc.addNewAttributeResponse();
        res.setStatus(status);
        res.setValue(value);
        return resDoc;
    }

When the client is run tracing of the element values displays as expected, but 
tracing of the attributes always shows null.

If the schema is changed to attributeFormDefault="unqualified" the attribute 
values are displayed successfully.


> Using attributeFormDefault="qualified" in a schema causes null attribute 
> values in Java objects
> -----------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-2594
>                 URL: https://issues.apache.org/jira/browse/AXIS2-2594
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>    Affects Versions: 1.1.1
>         Environment: Windows XP
> Java 1.6.0
> XMLBeans data binding
>            Reporter: Paul Chisholm
>            Priority: Minor
>
> When the schema that appears in the wsdl:types section of a WSDL file 
> specifies attributeFormDefault="qualified" then the the getter corresponding 
> to an attribute returns null even though an attribute value is specified in 
> the XML.
> Example:
> Schema is
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
>            attributeFormDefault="qualified"
>            elementFormDefault="qualified"
>            targetNamespace="http://quickstart.samples/xsd";>
>   <xs:element name="attribute">
>     <xs:complexType>
>       <xs:sequence>
>         <xs:element name="value" nillable="true" type="xs:string" />
>       </xs:sequence>
>       <xs:attribute name="status" type="xs:string" />
>     </xs:complexType>
>   </xs:element>
>   <xs:element name="attributeResponse">
>     <xs:complexType>
>       <xs:sequence>
>         <xs:element name="value" nillable="true" type="xs:string" />
>       </xs:sequence>
>       <xs:attribute name="status" type="xs:string" />
>     </xs:complexType>
>   </xs:element>
> </xs:schema>
> Message/port definition is
> <wsdl:message name="attributeMessage">
>   <wsdl:part name="part1" element="ns:attribute"/>
> </wsdl:message> 
> <wsdl:message name="attributeResponseMessage">
>   <wsdl:part name="part1" element="ns:attributeResponse"/> 
> </wsdl:message>
> <wsdl:portType name="MyServicePortType">
>   <wsdl:operation name="attribute">
>     <wsdl:input message="axis2:attributeMessage"/>
>     <wsdl:output message="axis2:attributeResponseMessage"/>
>   </wsdl:operation>
> </wsdl:portType>
> Client code is
>    public static void attribute(MyServiceStub stub){
>         try{
>             AttributeDocument reqDoc = 
> AttributeDocument.Factory.newInstance();
>             AttributeDocument.Attribute req = reqDoc.addNewAttribute();
>             req.setStatus("OK");
>             req.setValue("Testing");
>             AttributeResponseDocument res = stub.attribute(reqDoc);
>             
> System.err.println("Status="+res.getAttributeResponse().getStatus());
>             
> System.err.println("Value="+res.getAttributeResponse().getValue());
>         } catch(Exception e){
>             e.printStackTrace();
>             System.err.println("\n\n\n");
>         }
>    }
> Service code is
>     public AttributeResponseDocument attribute(AttributeDocument param1) {
>         String status = param1.getAttribute().getStatus();
>         String value = param1.getAttribute().getValue();
>         System.err.println();
>         System.err.println("Status="+status);
>         System.err.println("Value="+value);
>         AttributeResponseDocument resDoc =
>                 AttributeResponseDocument.Factory.newInstance();
>         AttributeResponseDocument.AttributeResponse res =
>                 resDoc.addNewAttributeResponse();
>         res.setStatus(status);
>         res.setValue(value);
>         return resDoc;
>     }
> When the client is run tracing of the element values displays as expected, 
> but tracing of the attributes always shows null.
> If the schema is changed to attributeFormDefault="unqualified" the attribute 
> values are displayed successfully.

-- 
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