You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Martin Grotzke <ma...@javakaffee.de> on 2005/08/29 22:53:39 UTC

java to wsdl: How to generate minOccurs="0" instead of nillable="true"

Hello,

when creating the wsdl from java classes, is there's any way
to change the default behavior from generating nillable="true"
to minOccurs="0" (for interop with .net)?

thanx in advance,
martin


Re: java to wsdl: How to generate minOccurs="0" instead of nillable="true"

Posted by Martin Grotzke <ma...@javakaffee.de>.
On Fri, 2005-09-02 at 08:54 -0400, Anne Thomas Manes wrote:
> I suggest that you file a feature enhancement request to add a
> parameter to generate minOccurs="0".

Btw, where should this parameter be used? It would be used when
the schema generated, so it's related to the Serializer.writeSchema
and the ElementDesc.minOccurs. But i do not see the location where
the parameter would be introduced.

Do you have some suggestions?

Thanx,
Martin


> 
> Anne
> 
> On 8/31/05, Martin Grotzke <ma...@javakaffee.de> wrote:
>         On Wed, 2005-08-31 at 10:57 -0400, Mike Woinoski wrote:
>         > Martin Grotzke wrote:
>         > > Btw, the concrete problem that we had has to do with
>         C# / .NET 1.1:
>         > > if you send an empty xml-element (as you showed below)
>         for 
>         > > some primitive C#-type (e.g. int, long), then the .NET
>         > > deserializer crashes, as it cannot parse the empty value.
>         > > If you do not send this empty element (which is forced by
>         > > minOccurs="0" as it seems), the .NET deserializer does
>         his 
>         > > job.
>         >
>         > I've only seen Java2WSDL define nillable="true" on
>         non-primitives (Strings,
>         > value types, etc.) If Java2WSDL is adding nillable="true" to
>         primitives, it may
>         > be an Axis bug. You may want to look on Bugzilla to see if
>         anyone has reported
>         > it yet.
>         In java we use the wrapper types, not the primitives. But a
>         java Integer
>         is represented by an xsd:int, which is mapped to the C#
>         primitive int. 
>         So it's not an axis bug...
>         
>         Cheers,
>         Martin
>         
>         
>         >
>         > Regards,
>         > Mike
>         >
>         > >
>         > > Thanx again,
>         > > Martin
>         > >
>         > >
>         > >
>         > > On Tue, 2005-08-30 at 10:16 -0400, Mike Woinoski wrote: 
>         > >
>         > >>Martin,
>         > >>I don't think there is a Java2WSDL option that adds
>         minOccurs="0" to an element
>         > >>definition. However, you can edit the WSDL manually and
>         add it yourself (sounds 
>         > >>like a good job for an Ant task or shell script.)
>         > >>
>         > >>BTW, an element can have both nillable="true" and
>         minOccurs="0". The semantics
>         > >>of these attributes is different: nillable="true" allows
>         an XML element to have 
>         > >>a value equivalent to a Java null reference:
>         > >>         <...
>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>         > >>       <myelement xsi:nil="true"/>
>         > >>
>         > >>This is different than a plain empty element:
>         > >>    <myelement/>
>         > >>which is equivalent to a Java String object with length
>         0. 
>         > >>
>         > >>Mike
>         > >>
>         > >>Martin Grotzke wrote:
>         > >>
>         > >>>Hello,
>         > >>>
>         > >>>when creating the wsdl from java classes, is there's any
>         way 
>         > >>>to change the default behavior from generating
>         nillable="true"
>         > >>>to minOccurs="0" (for interop with .net)?
>         > >>>
>         > >>>thanx in advance, 
>         > >>>martin
>         > >>>
>         > >>
>         > >>
>         > >>
>         >
>         >
>         >
>         --
>         Martin Grotzke
>         Hohenesch 38, 22765 Hamburg
>         Tel.      +49 (0) 40.39905668
>         Mobil     +49 (0) 170.9365656
>         E-Mail    martin.grotzke@javakaffee.de
>         Online    http://www.javakaffee.de
>         
>         
>         -----BEGIN PGP SIGNATURE----- 
>         Version: GnuPG v1.4.2 (GNU/Linux)
>         
>         iD8DBQBDFf4R7FvOl7Te
>         +pYRAjTlAJwOEU5rLSqG27uBdANQYpJtf3v7DwCfVdg5
>         xfTXy/ZJKgVjB5E2GlN0rXM=
>         =ie28
>         -----END PGP SIGNATURE-----
>         
>         
> 
-- 
Martin Grotzke
Hohenesch 38, 22765 Hamburg
Tel.      +49 (0) 40.39905668
Mobil     +49 (0) 170.9365656
E-Mail    martin.grotzke@javakaffee.de
Online    http://www.javakaffee.de

Re: java to wsdl: How to generate minOccurs="0" instead of nillable="true"

Posted by Martin Grotzke <ma...@javakaffee.de>.
On Fri, 2005-09-02 at 08:54 -0400, Anne Thomas Manes wrote:
> I suggest that you file a feature enhancement request to add a
> parameter to generate minOccurs="0".

good idea, just submitted.

cheers,
martin


> 
> Anne
> 
> On 8/31/05, Martin Grotzke <ma...@javakaffee.de> wrote:
>         On Wed, 2005-08-31 at 10:57 -0400, Mike Woinoski wrote:
>         > Martin Grotzke wrote:
>         > > Btw, the concrete problem that we had has to do with
>         C# / .NET 1.1:
>         > > if you send an empty xml-element (as you showed below)
>         for 
>         > > some primitive C#-type (e.g. int, long), then the .NET
>         > > deserializer crashes, as it cannot parse the empty value.
>         > > If you do not send this empty element (which is forced by
>         > > minOccurs="0" as it seems), the .NET deserializer does
>         his 
>         > > job.
>         >
>         > I've only seen Java2WSDL define nillable="true" on
>         non-primitives (Strings,
>         > value types, etc.) If Java2WSDL is adding nillable="true" to
>         primitives, it may
>         > be an Axis bug. You may want to look on Bugzilla to see if
>         anyone has reported
>         > it yet.
>         In java we use the wrapper types, not the primitives. But a
>         java Integer
>         is represented by an xsd:int, which is mapped to the C#
>         primitive int. 
>         So it's not an axis bug...
>         
>         Cheers,
>         Martin
>         
>         
>         >
>         > Regards,
>         > Mike
>         >
>         > >
>         > > Thanx again,
>         > > Martin
>         > >
>         > >
>         > >
>         > > On Tue, 2005-08-30 at 10:16 -0400, Mike Woinoski wrote: 
>         > >
>         > >>Martin,
>         > >>I don't think there is a Java2WSDL option that adds
>         minOccurs="0" to an element
>         > >>definition. However, you can edit the WSDL manually and
>         add it yourself (sounds 
>         > >>like a good job for an Ant task or shell script.)
>         > >>
>         > >>BTW, an element can have both nillable="true" and
>         minOccurs="0". The semantics
>         > >>of these attributes is different: nillable="true" allows
>         an XML element to have 
>         > >>a value equivalent to a Java null reference:
>         > >>         <...
>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>         > >>       <myelement xsi:nil="true"/>
>         > >>
>         > >>This is different than a plain empty element:
>         > >>    <myelement/>
>         > >>which is equivalent to a Java String object with length
>         0. 
>         > >>
>         > >>Mike
>         > >>
>         > >>Martin Grotzke wrote:
>         > >>
>         > >>>Hello,
>         > >>>
>         > >>>when creating the wsdl from java classes, is there's any
>         way 
>         > >>>to change the default behavior from generating
>         nillable="true"
>         > >>>to minOccurs="0" (for interop with .net)?
>         > >>>
>         > >>>thanx in advance, 
>         > >>>martin
>         > >>>
>         > >>
>         > >>
>         > >>
>         >
>         >
>         >
>         --
>         Martin Grotzke
>         Hohenesch 38, 22765 Hamburg
>         Tel.      +49 (0) 40.39905668
>         Mobil     +49 (0) 170.9365656
>         E-Mail    martin.grotzke@javakaffee.de
>         Online    http://www.javakaffee.de
>         
>         
>         -----BEGIN PGP SIGNATURE----- 
>         Version: GnuPG v1.4.2 (GNU/Linux)
>         
>         iD8DBQBDFf4R7FvOl7Te
>         +pYRAjTlAJwOEU5rLSqG27uBdANQYpJtf3v7DwCfVdg5
>         xfTXy/ZJKgVjB5E2GlN0rXM=
>         =ie28
>         -----END PGP SIGNATURE-----
>         
>         
> 
-- 
Martin Grotzke
Hohenesch 38, 22765 Hamburg
Tel.      +49 (0) 40.39905668
Mobil     +49 (0) 170.9365656
E-Mail    martin.grotzke@javakaffee.de
Online    http://www.javakaffee.de

Re: java to wsdl: How to generate minOccurs="0" instead of nillable="true"

Posted by Anne Thomas Manes <at...@gmail.com>.
I suggest that you file a feature enhancement request to add a parameter to 
generate minOccurs="0".

Anne

On 8/31/05, Martin Grotzke <ma...@javakaffee.de> wrote:
> 
> On Wed, 2005-08-31 at 10:57 -0400, Mike Woinoski wrote:
> > Martin Grotzke wrote:
> > > Btw, the concrete problem that we had has to do with C# / .NET 1.1:
> > > if you send an empty xml-element (as you showed below) for
> > > some primitive C#-type (e.g. int, long), then the .NET
> > > deserializer crashes, as it cannot parse the empty value.
> > > If you do not send this empty element (which is forced by
> > > minOccurs="0" as it seems), the .NET deserializer does his
> > > job.
> >
> > I've only seen Java2WSDL define nillable="true" on non-primitives 
> (Strings,
> > value types, etc.) If Java2WSDL is adding nillable="true" to primitives, 
> it may
> > be an Axis bug. You may want to look on Bugzilla to see if anyone has 
> reported
> > it yet.
> In java we use the wrapper types, not the primitives. But a java Integer
> is represented by an xsd:int, which is mapped to the C# primitive int.
> So it's not an axis bug...
> 
> Cheers,
> Martin
> 
> 
> >
> > Regards,
> > Mike
> >
> > >
> > > Thanx again,
> > > Martin
> > >
> > >
> > >
> > > On Tue, 2005-08-30 at 10:16 -0400, Mike Woinoski wrote:
> > >
> > >>Martin,
> > >>I don't think there is a Java2WSDL option that adds minOccurs="0" to 
> an element
> > >>definition. However, you can edit the WSDL manually and add it 
> yourself (sounds
> > >>like a good job for an Ant task or shell script.)
> > >>
> > >>BTW, an element can have both nillable="true" and minOccurs="0". The 
> semantics
> > >>of these attributes is different: nillable="true" allows an XML 
> element to have
> > >>a value equivalent to a Java null reference:
> > >> <... xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> > >> <myelement xsi:nil="true"/>
> > >>
> > >>This is different than a plain empty element:
> > >> <myelement/>
> > >>which is equivalent to a Java String object with length 0.
> > >>
> > >>Mike
> > >>
> > >>Martin Grotzke wrote:
> > >>
> > >>>Hello,
> > >>>
> > >>>when creating the wsdl from java classes, is there's any way
> > >>>to change the default behavior from generating nillable="true"
> > >>>to minOccurs="0" (for interop with .net)?
> > >>>
> > >>>thanx in advance,
> > >>>martin
> > >>>
> > >>
> > >>
> > >>
> >
> >
> >
> --
> Martin Grotzke
> Hohenesch 38, 22765 Hamburg
> Tel. +49 (0) 40.39905668
> Mobil +49 (0) 170.9365656
> E-Mail martin.grotzke@javakaffee.de
> Online http://www.javakaffee.de
> 
> 
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.2 (GNU/Linux)
> 
> iD8DBQBDFf4R7FvOl7Te+pYRAjTlAJwOEU5rLSqG27uBdANQYpJtf3v7DwCfVdg5
> xfTXy/ZJKgVjB5E2GlN0rXM=
> =ie28
> -----END PGP SIGNATURE-----
> 
> 
>

Re: java to wsdl: How to generate minOccurs="0" instead of nillable="true"

Posted by Martin Grotzke <ma...@javakaffee.de>.
On Wed, 2005-08-31 at 10:57 -0400, Mike Woinoski wrote:
> Martin Grotzke wrote:
> > Btw, the concrete problem that we had has to do with C# / .NET 1.1:
> > if you send an empty xml-element (as you showed below) for
> > some primitive C#-type (e.g. int, long), then the .NET
> > deserializer crashes, as it cannot parse the empty value.
> > If you do not send this empty element (which is forced by
> > minOccurs="0" as it seems), the .NET deserializer does his
> > job.
> 
> I've only seen Java2WSDL define nillable="true" on non-primitives (Strings, 
> value types, etc.) If Java2WSDL is adding nillable="true" to primitives, it may 
> be an Axis bug. You may want to look on Bugzilla to see if anyone has reported 
> it yet.
In java we use the wrapper types, not the primitives. But a java Integer
is represented by an xsd:int, which is mapped to the C# primitive int.
So it's not an axis bug...

Cheers,
Martin


> 
> Regards,
> Mike
> 
> > 
> > Thanx again,
> > Martin
> > 
> > 
> > 
> > On Tue, 2005-08-30 at 10:16 -0400, Mike Woinoski wrote:
> > 
> >>Martin,
> >>I don't think there is a Java2WSDL option that adds minOccurs="0" to an element 
> >>definition. However, you can edit the WSDL manually and add it yourself (sounds 
> >>like a good job for an Ant task or shell script.)
> >>
> >>BTW, an element can have both nillable="true" and minOccurs="0". The semantics 
> >>of these attributes is different: nillable="true" allows an XML element to have 
> >>a value equivalent to a Java null reference:
> >>         <... xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> >>	   <myelement xsi:nil="true"/>
> >>
> >>This is different than a plain empty element:
> >>	<myelement/>
> >>which is equivalent to a Java String object with length 0.
> >>
> >>Mike
> >>
> >>Martin Grotzke wrote:
> >>
> >>>Hello,
> >>>
> >>>when creating the wsdl from java classes, is there's any way
> >>>to change the default behavior from generating nillable="true"
> >>>to minOccurs="0" (for interop with .net)?
> >>>
> >>>thanx in advance,
> >>>martin
> >>>
> >>
> >>
> >>
> 
> 
> 
-- 
Martin Grotzke
Hohenesch 38, 22765 Hamburg
Tel.      +49 (0) 40.39905668
Mobil     +49 (0) 170.9365656
E-Mail    martin.grotzke@javakaffee.de
Online    http://www.javakaffee.de

Re: java to wsdl: How to generate minOccurs="0" instead of nillable="true"

Posted by Mike Woinoski <ne...@pineneedleconsulting.com>.
Martin Grotzke wrote:
> Thank you for your answer, Mike!
> 
> We're using beehive for webservice development, and until
> now we tried to do as most as possible starting from java.
> If there's no way to tell java2wsdl to use minOccurs, it's
> probably the best to define the types using schema, to go
> partially the contract-first way.

In many cases, this seems to be the most reliable way to get what you want.

> Btw, the concrete problem that we had has to do with C# / .NET 1.1:
> if you send an empty xml-element (as you showed below) for
> some primitive C#-type (e.g. int, long), then the .NET
> deserializer crashes, as it cannot parse the empty value.
> If you do not send this empty element (which is forced by
> minOccurs="0" as it seems), the .NET deserializer does his
> job.

I've only seen Java2WSDL define nillable="true" on non-primitives (Strings, 
value types, etc.) If Java2WSDL is adding nillable="true" to primitives, it may 
be an Axis bug. You may want to look on Bugzilla to see if anyone has reported 
it yet.

Regards,
Mike

> 
> Thanx again,
> Martin
> 
> 
> 
> On Tue, 2005-08-30 at 10:16 -0400, Mike Woinoski wrote:
> 
>>Martin,
>>I don't think there is a Java2WSDL option that adds minOccurs="0" to an element 
>>definition. However, you can edit the WSDL manually and add it yourself (sounds 
>>like a good job for an Ant task or shell script.)
>>
>>BTW, an element can have both nillable="true" and minOccurs="0". The semantics 
>>of these attributes is different: nillable="true" allows an XML element to have 
>>a value equivalent to a Java null reference:
>>         <... xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>>	   <myelement xsi:nil="true"/>
>>
>>This is different than a plain empty element:
>>	<myelement/>
>>which is equivalent to a Java String object with length 0.
>>
>>Mike
>>
>>Martin Grotzke wrote:
>>
>>>Hello,
>>>
>>>when creating the wsdl from java classes, is there's any way
>>>to change the default behavior from generating nillable="true"
>>>to minOccurs="0" (for interop with .net)?
>>>
>>>thanx in advance,
>>>martin
>>>
>>
>>
>>



Re: java to wsdl: How to generate minOccurs="0" instead of nillable="true"

Posted by Martin Grotzke <ma...@javakaffee.de>.
Thank you for your answer, Mike!

We're using beehive for webservice development, and until
now we tried to do as most as possible starting from java.
If there's no way to tell java2wsdl to use minOccurs, it's
probably the best to define the types using schema, to go
partially the contract-first way.

Btw, the concrete problem that we had has to do with C# / .NET 1.1:
if you send an empty xml-element (as you showed below) for
some primitive C#-type (e.g. int, long), then the .NET
deserializer crashes, as it cannot parse the empty value.
If you do not send this empty element (which is forced by
minOccurs="0" as it seems), the .NET deserializer does his
job.

Thanx again,
Martin



On Tue, 2005-08-30 at 10:16 -0400, Mike Woinoski wrote:
> Martin,
> I don't think there is a Java2WSDL option that adds minOccurs="0" to an element 
> definition. However, you can edit the WSDL manually and add it yourself (sounds 
> like a good job for an Ant task or shell script.)
> 
> BTW, an element can have both nillable="true" and minOccurs="0". The semantics 
> of these attributes is different: nillable="true" allows an XML element to have 
> a value equivalent to a Java null reference:
>          <... xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> 	   <myelement xsi:nil="true"/>
> 
> This is different than a plain empty element:
> 	<myelement/>
> which is equivalent to a Java String object with length 0.
> 
> Mike
> 
> Martin Grotzke wrote:
> > Hello,
> > 
> > when creating the wsdl from java classes, is there's any way
> > to change the default behavior from generating nillable="true"
> > to minOccurs="0" (for interop with .net)?
> > 
> > thanx in advance,
> > martin
> > 
> 
> 
> 
-- 
Martin Grotzke
Hohenesch 38, 22765 Hamburg
Tel.      +49 (0) 40.39905668
Mobil     +49 (0) 170.9365656
E-Mail    martin.grotzke@javakaffee.de
Online    http://www.javakaffee.de

Re: java to wsdl: How to generate minOccurs="0" instead of nillable="true"

Posted by Mike Woinoski <ne...@pineneedleconsulting.com>.
Martin,
I don't think there is a Java2WSDL option that adds minOccurs="0" to an element 
definition. However, you can edit the WSDL manually and add it yourself (sounds 
like a good job for an Ant task or shell script.)

BTW, an element can have both nillable="true" and minOccurs="0". The semantics 
of these attributes is different: nillable="true" allows an XML element to have 
a value equivalent to a Java null reference:
         <... xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	   <myelement xsi:nil="true"/>

This is different than a plain empty element:
	<myelement/>
which is equivalent to a Java String object with length 0.

Mike

Martin Grotzke wrote:
> Hello,
> 
> when creating the wsdl from java classes, is there's any way
> to change the default behavior from generating nillable="true"
> to minOccurs="0" (for interop with .net)?
> 
> thanx in advance,
> martin
>