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
"" (the prefix can be
different, but the namespace has to be exactly as given).
Personally, I prefer using ="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
="0" says you can just leave the element out of the document if
it doesn't have a value, while nillable="true" without ="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
SA, 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 #c2 but it
seems a little cumbersome/crap
5/12/06, *Dennis Sosnoski* <dms (AT) sosnoski (DOT) com
<mailto:dms (AT) sosnoski (DOT) com>wrote:
And the new error is very likely because your SAP 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 SAP envolope
I'm not getting:
[junit] Testcase:
testprocess(): Caused
an ERRR
[junit] For input
string: ""
[junit] java.lang.RuntimeException:
: For input string: ""
[junit] at
()
[junit] at
(RetrieveClientDetailsStub.java
:114)
[junit] at
()
[junit] Caused by: For
input
string: ""
[junit] at
(NumberFormatException.java:48)
[junit] at java.lang.Long.parseLong(Long.java:415)
[junit] at java.lang.Long.parseLong(Long.java:452)
[junit] at
(ConverterUtil.java:269)
[junit] at
$Factory.parse(ClientDetailsType.java:571)
[junit] at
$Factory.parse
(RetrieveClien
)
[junit] at
(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 SAP envelope doesn't adhere to the XSD" or
something
>
>
>
5/12/06, * Sanjiva Weerawarana* <sanjiva (AT) opensource (DOT) lk
<mailto:sanjiva (AT) opensource (DOT) lk>
<mailto:sanjiva (AT) opensource (DOT) lk <mailto:sanjiva (AT) opensource (DOT) lk
wrote:
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" ="1" ="unbounded"/>
<xsd:element name="address" type="SiteType"
nillable="true" ="1" ="unbounded"/>
<xsd:element name="fees"
type="ClientFeesType"/>
So according to your schema, before the <feeselement,
there must
be at
least one <contactelement and an <addresselement.
<ns1:company/>
<ns1:abnacn/>
<ns1:fees>
<ns1:lineFee>7.5</ns1:lineFee>
<ns1:shortFee>10</ns1:shortFee>
<ns1:brokerage/>
<ns1:interestRate5.75</ns1:interestRate>
<ns1:rebate/>
</ns1:fees>
But the SAP message doesn't have it. It looks like whoever
generated
the SAP envelope is not adhering to the schema.
Sanjiva.
>
>
>
>
>