Thanks much, that makes sense! -Brice
-----Original Message----- From: Karl Palsson [mailto:[EMAIL PROTECTED] Sent: Friday, December 22, 2006 4:12 AM To: [email protected] Subject: RE: [xfire-user] WSDL Contains 'minOccurs="0"' For Required Fields minOccurs just says that the element must be there, not what values it can contain. That's what nillable does. So, minOccurs=1, nillable = true Valid: <doc><element nil=true/></doc> Invalid: <doc></doc> minOccurs=1, nillable=false Valid: <doc><element>somevalue</element></doc> Invalid: <doc><element nil=true/></doc> Invalid: <doc></doc> Cheers, Karl P > -----Original Message----- > From: Brice Ruth [mailto:[EMAIL PROTECTED] > Sent: Friday, December 22, 2006 3:42 AM > To: [email protected] > Subject: Re: [xfire-user] WSDL Contains 'minOccurs="0"' For > Required Fields > > fair enough! ;-) > > > On 12/21/06, Benson Margulies <[EMAIL PROTECTED]> wrote: > > I'm not enough of an XMLSchema expert to know. > > > > > ________________________________ > > > From: Ruth, Brice D [mailto:[EMAIL PROTECTED] > Sent: Thursday, December 21, 2006 4:38 PM > > To: [email protected] > Subject: RE: [xfire-user] WSDL Contains 'minOccurs="0"' > For Required Fields > > > > if minOccurs == 1, shouldn't nillable = false? > > > > -----Original Message----- > From: Benson Margulies [mailto:[EMAIL PROTECTED] > Sent: Thursday, December 21, 2006 3:29 PM > To: [email protected] > Subject: RE: [xfire-user] WSDL Contains 'minOccurs="0"' > For Required Fields > > Try creating an XML file like the following, named > ClassName.aegis.xml. > > > > <mappings xmlns:ns="urn:no-such-urn "> > > <mapping name="ns:ClassName"> > > <property name='propname' minOccurs='1' > nillable='true'/> > > </mapping> > > </mappings> > > > > Or see the bottom of http://xfire.codehaus.org/Aegis+Binding. > > > ________________________________ > > > From: Preston Lee [mailto:[EMAIL PROTECTED] > Sent: Thursday, December 21, 2006 4:25 PM > To: [email protected] > Subject: RE: [xfire-user] WSDL Contains 'minOccurs="0"' > For Required Fields > > > > Ok, I think I'm heading in the right direction now, > but after adding @XmlElement(nillable = false) to the reader > methods of my DTOs (using > org.codehaus.xfire.aegis.type.java5.XmlElement), nothing > seems to change. Also no effect using @XmlElement(nillable = > false, required = true) with the > javax.xml.bind.annotation.XmlElement version. I really do > want to keep them as elements, so I'm reluctant to use XmlAttribute. > > > > I haven't defined any binding customizations, so based > on the documentation I think I'm using aegis. (Not sure how > to check though.) What does "nillable = false" do if not > affect minOccurs="0"? > > > > Preston > > > > > ________________________________ > > > From: Brice Ruth [mailto:[EMAIL PROTECTED] > Sent: Wednesday, December 20, 2006 8:11 PM > To: [email protected] > Subject: Re: [xfire-user] WSDL Contains 'minOccurs="0"' > For Required Fields > > With JAXB2 (and maybe with the other bindings, too) - > you can specify annotations, for XmlElement, you can provide > 'nillable=true/false' and with XmlAttribute, you can specify > 'required=true/false'. > > I'm guessing this is the path you'll need to go down, > either customizing your POJOs with annotations specific to > the binding you're using (jaxb2, xmlbeans, aegis, etc.) or > customizing the xsd generated by XFire and providing a custom > xsd instead of letting XFire generate it from that point forward. > > There may be other routes/mechanisms, but that's all I've found. > > Cheers, > Brice > > On 12/20/06, Preston Lee < [EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]> > wrote: > > I have an XFire service being consumed by a .net > application which is > giving me grief. It seems to boil down to the > minOccurs="0" attribute > being added to required elements of objects passed as > parameters to my > service methods. > > Here's a relevant section of the WSDL which shows the undesired > minOccurs="0" attribute (type names have changed for IP > reasons).. > > --BEGIN WSDL SNIPPET-- > <xsd:complexType name="DataDto"> > <xsd:sequence> > <xsd:element minOccurs="0" name="id" type="xsd:long" /> > <xsd:element minOccurs="0" name="date" > type="xsd:dateTime" /> > <xsd:element minOccurs="0" name="someString" nillable="true" > type="xsd:string" /> > <xsd:element minOccurs="0" name="anotherString" > nillable="true" > type="ns1:AnotherType" /> > </xsd:sequence> > </xsd:complexType> > --END-- > > The non-trivial model objects being accepted by the > service, as well as > all fields of those objects, need to be set, so I'm > pretty sure I don't > want 'minOccurs="0"' to be valid. When the .net guy > generates his > classes, he ends up with "setIdSpecified" as well as > "setId", for > example, since id is a primitive type and there isn't > another way to > differentiate between 0 and null. (I don't think the > .net generator > would do this if minOccurs was gone.) Is there an > annotation I need to > add to fields of my DTOs which marks them as > "required"? Help greatly > appreciated! Thanks, > > Preston > > > --------------------------------------------------------------------- > To unsubscribe from this list please visit: > > http://xircles.codehaus.org/manage_email > > > > > -- > Brice Ruth > Software Engineer, Madison WI > > > > > -- > Brice Ruth > Software Engineer, Madison WI > --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email
