You have the element defined with nillable="true", so the correct way to
do this is <ns1:brokerage xsi:nil="true"/>, where the xsi prefix is set
to the schema instance namespace
"http://www.w3.org/2001/XMLSchema-instance" (the prefix can be
different, but the namespace has to be exactly as given).
Personally, I prefer using minOccurs="0" to nillable="true" in an
element definition. These are generally treated the same by data binding
frameworks (or should be - my own JiBX data binding framework doesn't
support nillable as of right now), but the difference is that
minOccurs="0" says you can just leave the element out of the document if
it doesn't have a value, while nillable="true" without minOccurs="0"
says the element must always be present whether it has a value or not. I
think the XML representation is cleaner when the elements with no values
are left out.
- Dennis
Dennis M. Sosnoski
SOA, Web Services, and XML
Training and Consulting
http://www.sosnoski.com - http://www.sosnoski.co.nz
Seattle, WA +1-425-296-6194 - Wellington, NZ +64-4-298-6117
Dan Washusen wrote:
Interesting, so how do I specify a null value for brokerage?
I found http://redrice.com/schemavalid/faq/xml-schema.html#c2 but it
seems a little cumbersome/crap...
On 5/12/06, *Dennis Sosnoski* <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
And the new error is very likely because your SOAP message has an
empty
<ns1:brokerage/> element, which is not valid for an xsd:decimal value.
- Dennis
Dan Washusen wrote:
> Thanks for that Sanjiva, you were spot on. I did have the elements
> out of order in the SOAP envolope...
>
> I'm not getting:
>
> [junit] Testcase:
> testprocess(org.apache.axis2.RetrieveClientDetailsTest): Caused
> an ERROR
> [junit] java.lang.NumberFormatException: For input
string: ""
> [junit] java.lang.RuntimeException:
> java.lang.NumberFormatException : For input string: ""
> [junit] at
>
org.apache.axis2.RetrieveClientDetailsStub.fromOM(RetrieveClientDetailsStub.java:345)
> [junit] at
>
org.apache.axis2.RetrieveClientDetailsStub.process(RetrieveClientDetailsStub.java
> :114)
> [junit] at
>
org.apache.axis2.RetrieveClientDetailsTest.testprocess(RetrieveClientDetailsTest.java:24)
> [junit] Caused by: java.lang.NumberFormatException: For
input
> string: ""
> [junit] at
>
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
> [junit] at java.lang.Long.parseLong(Long.java:415)
> [junit] at java.lang.Long.parseLong(Long.java:452)
> [junit] at
>
org.apache.axis2.databinding.utils.ConverterUtil.convertTolong(ConverterUtil.java:269)
> [junit] at
>
au.com.nxf.www.nxfmessagetypes.ClientDetailsType$Factory.parse(ClientDetailsType.java:571)
> [junit] at
>
au.com.nxf.www.retrieveclientdetails.RetrieveClientDetailsProcessResponse$Factory.parse
(RetrieveClien
> tDetailsProcessResponse.java:149)
> [junit] at
>
org.apache.axis2.RetrieveClientDetailsStub.fromOM(RetrieveClientDetailsStub.java
> :337)
> [junit] ... 17 more
>
>
> But that's probably a whole new issue...
>
> As a side note, if any of the Asix2 developers are listening. You
> could possibly improve the user friendliness of Axis by making the
> exceptions a bit more informative...
>
> e.g. "Unexpected subelement fees, expected element contact. It's
> possible the SOAP envelope doesn't adhere to the XSD" or
something...
>
>
>
> On 5/12/06, * Sanjiva Weerawarana* <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>
> <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>>
wrote:
>
> On Fri, 2006-05-12 at 12:21 +1000, Dan Washusen wrote:
> > Hi All,
> > I'm getting a weird error and I was hoping someone could
tell me
> what
> > I'm doing wrong because I have no idea what's going on...
>
> >
> > <xsd:element name="company" type="xsd:string"
> > nillable="true"/>
> > <xsd:element name="abnacn" type="xsd:string"
> > nillable="true"/>
> > <xsd:element name="cmtAccount1Id"
type="xsd:long"
> > nillable="true"/>
> > <xsd:element name="cmtAccount2Id"
type="xsd:long"
> > nillable="true"/>
> > <xsd:element name="contact" type="ContactType"
> > nillable="true" minOccurs="1" maxOccurs="unbounded"/>
> > <xsd:element name="address" type="SiteType"
> > nillable="true" minOccurs="1" maxOccurs="unbounded"/>
> > <xsd:element name="fees"
type="ClientFeesType"/>
>
> So according to your schema, before the <fees> element,
there must
> be at
> least one <contact> element and an <address> element.
>
> > <ns1:company/>
> > <ns1:abnacn/>
> > <ns1:fees>
> > <ns1:lineFee>7.5</ns1:lineFee>
> > <ns1:shortFee>10</ns1:shortFee>
> > <ns1:brokerage/>
> > <ns1:interestRate> 5.75</ns1:interestRate>
> > <ns1:rebate/>
> > </ns1:fees>
>
> But the SOAP message doesn't have it. It looks like whoever
generated
> the SOAP envelope is not adhering to the schema.
>
> Sanjiva.
>
>
>