[ 
https://issues.apache.org/jira/browse/AXIS2-3017?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12553952
 ] 

Roel Verbunt commented on AXIS2-3017:
-------------------------------------

Hi,

I'm experiencing the same kind of problem with Axis2 1.3, but coming from 
another aspect. This time I have to create a webservice based on a WSDL using 
all capitalized properties. This works fine for top-level leaves but not for 
leaves on a lower level. I looked at the 1.4 fixes but didn't find a fix for 
this issue among them.
The argument that property names should follow Java coding conventions is not 
valid in my opinion. SOAP services are a good interface for connecting all kind 
of applications, both Java and non-Java. Because this WSDL applies to other 
providers, changing the interface (eg. with the underscore trick) is not an 
option.

In my case our middleware (BizTalk -> M$) needs a callback service for 
recieving pdf-documents with this schema:
:
    <s:schema elementFormDefault="qualified" targetNamespace="...">
      <s:element name="DeliverDocumentsCallback">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="TrackingID" 
type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="CorrelationID" 
type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="Result" 
type="tns:Result" />
            <s:element minOccurs="0" maxOccurs="1" name="Documents" 
type="tns:ArrayOfDocument" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="Result">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="Code" type="s:int" />
          <s:element minOccurs="0" maxOccurs="1" name="Description" 
type="s:string" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfDocument">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="Document" 
nillable="true" type="tns:Document" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="Document">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="ID" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="Data" 
type="s:base64Binary" />
        </s:sequence>
      </s:complexType>
      <s:element name="DeliverDocumentsCallbackResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" 
name="DeliverDocumentsCallbackResult" type="tns:Result" />
          </s:sequence>
        </s:complexType>
      </s:element>
    </s:schema>
:
I created some POJO's for this structure and build a webservice to do the job. 
To meet the capitalized properties I defined my attributes with capitals as 
well, like:
:
public class ResultWrapper {
   private String Code;
   private String Description;

   public String getCode() {
      return Code;
   }
   public void setCode(String Code) {
       this.Code = Code;
   }
   public String getDescription() {
      return Description;
   }
   public void setDescription(String Description) {
      this.Description = Description;
   }
}
:

But the WSDL Axis2 produces for this part converts the first letter to 
lowercase for all property names for sub-level leaves. (code, description, 
data, iD), but respects the capitalize property names for top-level leaves.
:
 <xs:element name="DeliverDocumentsCallback">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="TrackingID" minOccurs="0" type="xs:string" 
nillable="true" /> 
    <xs:element name="CorrelationID" minOccurs="0" type="xs:string" 
nillable="true" /> 
    <xs:element name="Result" minOccurs="0" type="ns1:ResultWrapper" 
nillable="true" /> 
    <xs:element name="Documents" maxOccurs="unbounded" minOccurs="0" 
type="ns1:DocumentWrapper" nillable="true" /> 
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="DeliverDocumentsCallbackResponse">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="return" minOccurs="0" type="ns1:ResultWrapper" 
nillable="true" /> 
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:schema xmlns:ax235=".../xsd" targetNamespace=".../xsd" 
attributeFormDefault="qualified" elementFormDefault="qualified">
  <xs:complexType name="ResultWrapper">
   <xs:sequence>
    <xs:element name="code" minOccurs="0" type="xs:string" nillable="true" /> 
    <xs:element name="description" minOccurs="0" type="xs:string" 
nillable="true" /> 
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="DocumentWrapper">
   <xs:sequence>
    <xs:element name="data" minOccurs="0" type="xs:string" nillable="true" /> 
    <xs:element name="iD" minOccurs="0" type="xs:string" nillable="true" /> 
   </xs:sequence>
  </xs:complexType>
 </xs:schema>
:

Any idea how to get this working on Axis2?


> WSDL generation error - lowercasing 1st char in element names
> -------------------------------------------------------------
>
>                 Key: AXIS2-3017
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3017
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: wsdl
>            Reporter: nadir amra
>            Assignee: Deepal Jayasinghe
>            Priority: Critical
>         Attachments: ConvertTemp.zip
>
>
> Here is the problem.  I deploy a POJO and when AXIS2 (using nightly build 
> 2007/07/25) automatically generated WSDL via ?wsdl it produces a WSDL file 
> the includes the following:
> <xs:complexType name="CONVERTTEMPInput">
>       <xs:sequence>
>                 <xs:element minOccurs="0" name="tEMPIN" nillable="true"  
> type="xs:string"/>
>                 <xs:element minOccurs="0" name="tEMPOUT" nillable="true" 
> type="xs:string"/>
>       </xs:sequence>
> </xs:complexType>
> <xs:complexType name="CONVERTTEMPResult">
>       <xs:sequence>
>                 <xs:element minOccurs="0" name="tEMPIN" nillable="true" 
> type="xs:string"/>
>                 <xs:element minOccurs="0" name="tEMPOUT" nillable="true" 
> type="xs:string"/>
>       </xs:sequence>
> </xs:complexType>
> The problem is with the element names.  It seems that AXIS2 is lowercasing 
> the "t" in TEMPIN and TEMPOUT, which makes the service unusable. The 
> CONVERTTEMPInput class is as follows:
> public class CONVERTTEMPInput implements Serializable
> {
>     private static final long serialVersionUID = -884605419035002637L;
>     public CONVERTTEMPInput() { }
>      public void setTEMPIN( String TEMPIN )
>      {
>       _TEMPIN = TEMPIN;
>      }
>      public String getTEMPIN( )
>      {
>        return _TEMPIN;
>      }
>      public void setTEMPOUT( String TEMPOUT )
>      {
>       _TEMPOUT = TEMPOUT;
>      }
>      public String getTEMPOUT( )
>      {
>        return _TEMPOUT;
>      }
>    private String _TEMPIN =  "";
>    private String _TEMPOUT =  "";
> }
> If I add an underscore prior to TEMPIN and TEMPOUT in the method names, 
> things start to work. 

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