Please try with a nightly build. There was a jira regarding this and now for
Elements it appends suffix E.

thanks,
Amila.

On Jan 8, 2008 9:01 PM, Richard Gaywood <[EMAIL PROTECTED]> wrote:

> Hello list!
>
> I'm using WSDL2Java to reverse engineer Java classes from a WSDL web
> service; I'm using Axis2 1.3 to do this. The web service in question is
> written by some .Net using colleagues of mine and as the only Java guy
> around here I've been asked to look it over before any of our Java using
> customers seeit. It all works swimmingly -- they were very impressed how all
> the data validation rules came over from the XSD correctly -- with one
> exception I've found so far.
>
> The web service in question defines lots of different types and then uses
> an instance of these types with the same name as the type itself. For
> example, in one of the sub XSD files referenced by the WSDL, I have the
> following ComplexType and Element defintions for one of the data types, the
> Locale of a geographical point:
>
> <xs:schema  ... >
> ...
>   <xs:complexType name="Locale">
>     <xs:annotation>
>       <xs:documentation>This type is used to define where somewhere
> actually is.</xs:documentation>
>     </xs:annotation>
>     <xs:sequence>
>       <xs:element name="CityGUID" type="ctgCommon:GUID">
>         <xs:annotation>
>           <xs:documentation>Reference to the city where the parent entity
> resides.</xs:documentation>
>         </xs:annotation>
>       </xs:element>
>       <xs:element name="DistictGUID" type="ctgCommon:GUID">
>         <xs:annotation>
>           <xs:documentation>The district in the city where the entity
> resides.</xs:documentation>
>         </xs:annotation>
>       </xs:element>
>       <xs:element name="ResortGUID" type="ctgCommon:GUID">
>         <xs:annotation>
>           <xs:documentation>Reference to the city where the parent entity
> resides.</xs:documentation>
>         </xs:annotation>
>       </xs:element>
>     </xs:sequence>
>   </xs:complexType>
> ...
>   <xs:element name="Locale" type="Locale">
>     <xs:annotation>
>       <xs:documentation>Instance of Locale which defines where the parent
> entity resides.</xs:documentation>
>     </xs:annotation>
>   </xs:element>
> ...
> </xs:schema>
>
> There are more ComplexType and SimpleType defintions, and more Element
> defintions, where I have put "..." in.
>
> When I reverse engineer this through WSDL2Java, I get two classes: one,
> Locale.java, is the ComplexType declaration. The other is called
> Locale120.java and is the instance of the datatype defined in the
> xs:element tag; in the class, I see:
>     protected net.ctg.schemas.v3_0.geography.Locale localLocale;
> i.e. the Locale120 class contains an instance of the Locale class. This
> makes sense to me.
>
> As far as I can see this all works perfectly with only one problem. I can
> understand that Axis had to change one of the two class names to avoid a
> conflict, but where did the number "120" come from? I'm concerned that, if I
> developed to the classes that come out of WSDL2Java, I would write code that
> performed work on Locale120.java; then, when a new version of the web
> service shipped and I regenerated my Java data classes, that "120" value may
> change and all my existing code against those classes would break. It would
> be ideal if I could specify the suffix, just the fixed string "Value" or
> something similar would do the job.
>
> So, am I right in thinking there is a problem here, and what can I do to
> address it? Is the underlying WSDL wrong or can I adjust Axis's behaviour to
> get around the problem?
>
>
>
>
>
>
>


-- 
Amila Suriarachchi,
WSO2 Inc.

Reply via email to