OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

wsrp-interop message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [wsrp-interop] Interpretation of minOccur=0 and nillable=tue in the envelope.


Hi Richard,

 

Thanks for the input.

 

Please see my remarks in the text [AK].

 

-----Original Message-----
From: Richard Jacob [mailto:richard.jacob@de.ibm.com]
Sent: Tuesday, June 01, 2004 11:20 AM
To: Klein, Avi
Cc: wsrp-interop@lists.oasis-open.org
Subject: Re: [wsrp-interop] Interpretation of minOccur=0 and nillable=tue in the envelope.

 

 

 

 

 

Hi Avi,

 

"Klein, Avi" <avi.klein@sap.com> wrote on 05/30/2004 08:45:02 AM:

 

> Hi all,

> 

> This is an old issue we once had an E-mail thread on and is still

> unresolved for the SAP Consumer.

> 

 

We had this discussion about minOccurs="0" and nillable="true" some time

ago and found that none of the stacks dealt with these attributes 100%

correctly. However the problems which came up here were mostly combinations

of these two on one element.

In general the various stack have differnet schema validation levels, some

complain some not.

 

> I would appreciate your input on how do you interpret the following case:

> 

> In the WSDL, the specific data type contains an element which is

> "minOccur=0" and in runtime this element is in fact null. How should

> it be presented in the envelope:

> a. <elementname xsi:nill=true/>

> b. <elementname/>

> c. omitted al together

 

a. is not valid as long as nillable="true" is not set in the schema.

b. is valid, however the mapping of e.g. xml to java prevents this. For

example <element> could be a string. <element/> should be mapped to an

empty string (which is different from a String=null.

c. is valid and has the correct mapping

 

> In the WSDL, the specific data type contains an element which is

> "nillable="true" and in runtime this element is in fact null. How

> should it be presented in the envelope:

> a. <elementname xsi:nill=true/>

> b. <elementname/>

> c. omitted al together

 

a. is valid and the correct mapping

b. is valid, because the minOccurs/maxOccurs rules apply (both default to

1), however the same mapping rules apply here as above.

c. is not valid if minOccurs="0" is not set.

 

> I experience different behavior from the IBM producer and the Oracle

> producer for these cases: for example IBM producer permits xsi:

> nill=true for registration context in getMarkup while Oracle don't.

 

Did you really cross-check it? Is there a serialization fault or does

Oracle simply not allow a non-registered Consumer?

[AK] The oracle producer reply with a statement such as: Internal Server Error (deserialization error: deserialization error: unexpected null value for literal data). This error refer to a different attribute then registrationContext since the registrationContext was provided here.

I assume Oracle has registrationRequired set to true, which means you must

register first, and I could easily imagine in that case that

a getMarkup() with a nill registrationContext is rejected.

Mike, can you cross check?

 

> And Oracle allows omitting minOccur=0 elements while IBM don't.

 

This statement makes me really nervous :-)

[AK] Sorry, didn't mean too...

I would really be surprised if you experienced validation errors.

I think we have a lot of cases where minOccurs="0" elements are ommitted by

other consumers.

Can you please provide a message trace of a case where an element is

minOccurs="0", you ommit it on the message and we fail because of

validation?

[AK] I'll recheck it once we fix the problem you have indicated below and take it back in case I was wrong ;-).

 

In the message below the Oracle consumer fails validation (correctly)

because the request message indeed is invalid.

In MarkupParams the <locales> and <mimeTypes> elements are namespaced by

"http://www.w3.org/2001/XMLSchema".

However they must be namespaced by "http://www.w3.org/2001/XMLSchema".

[AK] Thanks, I'll correct this problem and recheck.

> For the following request to Oracle producer:

> <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

> xmlns:wn3="http://www.w3.org/1999/XMLSchema" xmlns:wn2="http://www.

> w3.org/2000/10/XMLSchema" xmlns:wn1="http://www.w3.org/2001/XMLSchema"

> xmlns:wn0="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="

> http://www.w3.org/2001/XMLSchema-instance" xmlns:wn4="urn:oasis:

> names:tc:wsrp:v1:wsdl" xmlns:tns="urn:oasis:names:tc:wsrp:v1:wsdl">

>        <SOAP-ENV:Body>

>              <prt0:getMarkup xmlns:prt0=C>

>                     <prt0:registrationContext>

>                            <prt0:registrationHandle>C:148.87.122.

> 191:4c7e10:f942d6eb23:-1f4</prt0:registrationHandle>

>                     </prt0:registrationContext>

>                     <prt0:portletContext>

> 

<prt0:portletHandle>E:1:default</prt0:portletHandle

> >

>                     </prt0:portletContext>

>                     <prt0:runtimeContext>

>                            <prt0:userAuthentication>wsrp:none</prt0:

> userAuthentication>

>                            <prt0:portletInstanceKey/>

>                     </prt0:runtimeContext>

>                     <prt0:userContext>

>                            <prt0:userContextKey>USER.

> PRIVATE_DATASOURCE.un:testadmin</prt0:userContextKey>

>                     </prt0:userContext>

>                     <prt0:markupParams>

>                            <prt0:secureClientCommunication>false</

> prt0:secureClientCommunication>

>                            <wn1:locales>en-US</wn1:locales>

>                            <wn1:mimeTypes>text/html</wn1:mimeTypes>

>                            <prt0:mode>wsrp:view</prt0:mode>

> 

<prt0:windowState>wsrp:normal</prt0:windowState>

>                            <prt0:navigationalState/>

>                     </prt0:markupParams>

>              </prt0:getMarkup>

>        </SOAP-ENV:Body>

> </SOAP-ENV:Envelope>

> 

> I get:

> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:xsd

> ="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.

> org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.

> org/soap/encoding/" xmlns:ns0="urn:oasis:names:tc:wsrp:v1:types"

> env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

>        <env:Body>

>              <env:Fault>

>                     <faultcode>env:Server</faultcode>

>                     <faultstring>Internal Server Error

> (deserialization error: deserialization error: expected element is

> missing: {http://www.w3.org/2001/XMLSchema}locales)</faultstring>

>              </env:Fault>

>        </env:Body>

> </env:Envelope>

> 

> 

> I'll appreciate any lead on what does your producer expect to

> receive as a valid request (a sample of a received valid request

> envelope etc.).

 

Hope this helps.

[AK] Thanks a lot for the help.

Richard



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]