• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Elements minOccurs=0 nillable=true

 
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hello all,

I am a bit new in web services. I got a lot of goggle searched and find nothing clear about my interrogations.

I develop a web services that will be contact by a web service client on the same computer. (ask my boss why )

I had a lot of thing done in that regards.

But in testing my web services, I got some NullpointerException.



In my WSDL, the element is label has minOccurs=0 and nillable=true.

In my soap test (with SOAPUI), the XML simply don't define the element. (the SOAP has been validate without error)

In the clientRequest (on java side on websphere), I got a null in the attributes of the object.

Is this the standard way to have optional element?

example:

In WSDL:
<xsd:element minOccurs="0" name="poste" nillable="true" type="xsd:string"/>

SOAP input:
No element TAG has been declared for "poste".

On my object, the getPoste() method return null.


I would expect that a minOccurs=0 should need an empty SOAP Tag. In that regard, the getPoste() will return "". It will be better to do it that way to extract my hundreds of element before passing them to our Legacy system. If I cannot get that, I will be "forced" to do:

if ( clientRequest.getPoste() != null){
legacySystem.setPoste(clientRequest.getPoste();
}

And doing it for hundreds of attribute seems a bit overkill in my regards.

I just wish to know a way, that will extract the information without worrying about the null state. I need to take all the information available and passed them to the legacy system. So, when I do my setter with all those request.getter(), I would need a way to don't care about the state (null) of it.

Patrick Lepage

p.s. Here is my WSDL + my SOAP request. The parameters are in French, it is a constraint of my French Canadian company.

<?xml version="1.0" encoding="UTF-8"?>
<wsdl efinitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:impl="http://service.creation.p1.cbq.com/p1CreationClient" xmlns:intf="http://service.creation.p1.cbq.com/p1CreationClient/ns1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://service.creation.p1.cbq.com/p1CreationClient">
<wsdl:types>
<xsd:schema targetNamespace="http://service.creation.p1.cbq.com/p1CreationClient/ns1" xmlns:intf="http://service.creation.p1.cbq.com/p1CreationClient/ns1" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="RequestHeader">
<xsd:sequence>
<xsd:element minOccurs="1" name="messageType" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="version" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="sourceId" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="messageId" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CreationClientRequest">
<xsd:sequence>
<xsd:element minOccurs="1" name="codeUsagerCentrale" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="langueUsager" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="client" nillable="true" type="intf:Client"/>
<xsd:element minOccurs="0" name="profilClient" nillable="true" type="intf rofilClient"/>
<xsd:element minOccurs="0" name="adresseClient" nillable="true" type="intf:ArrayOfAdress"/>
<xsd:element minOccurs="0" name="telephoneClient" nillable="true" type="intf:ArrayOfPhone"/>
<xsd:element minOccurs="0" name="alarme" nillable="true" type="intf:AlerteClient"/>
<xsd:element minOccurs="0" name="commentaire" nillable="true" type="intf:ArrayOfComment"/>

</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CreationClientResponse">
<xsd:sequence>
<xsd:element minOccurs="1" name="completionCode" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="completionMessage" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="header" nillable="true" type="intf:ResponseHeader"/>
<xsd:element minOccurs="1" name="numeroClientCentrale" nillable="true" type="xsd:string"/>

</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ResponseHeader">
<xsd:sequence>
<xsd:element minOccurs="1" name="errorCode" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="errorMessage" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="msgType" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="version" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="sourceId" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="messageId" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>


<xsd:complexType name="Client">
<xsd:sequence>
<xsd:element minOccurs="1" name="nom" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="prenom" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="dateNaissance" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="sexe" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="langue" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="salutation" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="division" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="representant" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="indPersMorale" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="nomPersonneMorale" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ProfilClient">
<xsd:sequence>
<xsd:element minOccurs="0" name="nas" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="rpam" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="ramqNo" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="fumeur" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="codeProf" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="categorieProf" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="etudiant" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="typeSolRefuse" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="dateFinRestriction" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="etatCivile" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="ArrayOfAdress">
<xsd:sequence>
<xsd:element maxOccurs="5" minOccurs="0" name="Adresse" nillable="true" type="intf:AdresseClient"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ArrayOfPhone">
<xsd:sequence>
<xsd:element maxOccurs="11" minOccurs="0" name="Telephone" nillable="true" type="intf:TelClient"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ArrayOfComment">
<xsd:sequence>
<xsd:element maxOccurs="99" minOccurs="0" name="Commentaire" nillable="true" type="intf:CommentaireClient"/>
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="AdresseClient">
<xsd:sequence>
<xsd:element minOccurs="1" name="referencePostal" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="dateEffective" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="statut" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="type" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="noUnite" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="typeNomRuePtCardinal" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="municipalite" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="provinceEtat" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="pays" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="noMunicipal" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="codePostal" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="infoCompl1" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="infoCompl2" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="adresseCourriel" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TelClient">
<xsd:sequence>
<xsd:element minOccurs="1" name="reference" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="numeroTelephone" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="poste" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="statut" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="dateEffective" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AlerteClient">
<xsd:sequence>
<xsd:element minOccurs="1" name="dateTerminaison" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CommentaireClient">
<xsd:sequence>
<xsd:element minOccurs="1" name="noSequenceCommentaire" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="1" name="commentaires" nillable="true" type="xsd:string"/>


</xsd:sequence>
</xsd:complexType>
</xsd:schema>
<xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://service.creation.p1.cbq.com/p1CreationClient" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="creationClient">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="INP1-CLA" nillable="true" type="intf:RequestHeader"/>
<xsd:element maxOccurs="1" minOccurs="1" name="INP2-CLA" nillable="true" type="intf:CreationClientRequest"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="creationClientResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="SegmentResponse" nillable="true" type="intf:CreationClientResponse"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

</wsdl:types>



<wsdl:message name="creationClientResponse">
<wsdl art element="impl:creationClientResponse" name="creationClientResponse"/>
</wsdl:message>
<wsdl:message name="creationClientRequest">
<wsdl art element="impl:creationClient" name="creationClient"/>
</wsdl:message>
<wsdl ortType name="P1CreationClientBean">
<wsdl peration name="creationClient">
<wsdl:input message="impl:creationClientRequest" name="creationClientRequest"/>
<wsdl utput message="impl:creationClientResponse" name="creationClientResponse"/>
</wsdl peration>
</wsdl ortType>
<wsdl:binding name="CreationClientServiceHttpBinding" type="impl 1CreationClientBean">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl peration name="creationClient">
<wsdlsoap peration soapAction=""/>
<wsdl:input name="creationClientRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl utput name="creationClientResponse">
<wsdlsoap:body use="literal"/>
</wsdl utput>
</wsdl peration>
</wsdl:binding>
<wsdl:service name="CreationClientService">
<wsdl ort binding="impl:CreationClientServiceHttpBinding" name="P1CreationClientBean">
<wsdlsoap:address location="ANONYMOUS"/>
</wsdl ort>
</wsdl:service>
</wsdl efinitions>


SOAP INPUT:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns 1c="http://service.creation.p1.cbq.com/p1CreationClient">
<soapenv:Header/>
<soapenv:Body>
<p1c:creationClient>
<p1c:INP1-CLA>
<messageType>ANONYMOUS</messageType>
<sourceId>ANONYMOUS</sourceId>
<version>ANONYMOUS</version>
<messageId>ANONYMOUS</messageId>
</p1c:INP1-CLA>
<p1c:INP2-CLA>
<codeUsagerCentrale>CCOU</codeUsagerCentrale>
<langueUsager>F</langueUsager>
<!--Optional:-->
<client>
<nom>TEST</nom>
<!--Optional:-->
<prenom>CREATION</prenom>
<dateNaissance>19660707</dateNaissance>
<!--Optional:-->
<sexe>F</sexe>
<langue>F</langue>
<!--Optional:-->
<salutation>ME</salutation>
<division>CBQ</division>
<representant>20099148</representant>
<indPersMorale>N</indPersMorale>
<!--Optional:-->
<nomPersonneMorale>Nom Personne Morale</nomPersonneMorale>
</client>
<!--Optional:-->
<profilClient>
<!--Optional:-->
<nas>222333444</nas>
<!--Optional:-->
<rpam>QC</rpam>
<!--Optional:-->
<ramqNo>COUC66570701</ramqNo>
<!--Optional:-->
<fumeur>N</fumeur>
<!--Optional:-->
<codeProf>A</codeProf>
<!--Optional:-->
<categorieProf>2A</categorieProf>
<!--Optional:-->
<etudiant>N</etudiant>
<!--Optional:-->
<typeSolRefuse>TOUS</typeSolRefuse>
<!--Optional:-->
<dateFinRestriction>20120202</dateFinRestriction>
<!--Optional:-->
<etatCivile>D</etatCivile>
</profilClient>
<!--Optional:-->
<adresseClient>
<!--0 to 5 repetitions:-->
<Adresse>
<referencePostal>DOMICILE-1</referencePostal>
<dateEffective>20070101</dateEffective>
<statut>V</statut>
<type>C</type>
<!--Optional:-->
<noUnite>123</noUnite>
<!--Optional:-->
<typeNomRuePtCardinal>RUE PRINCIPALE</typeNomRuePtCardinal>
<!--Optional:-->
<municipalite>QUELQUE PART</municipalite>
<!--Optional:-->
<provinceEtat>QC</provinceEtat>
<!--Optional:-->
<pays>CDA</pays>
<!--Optional:-->
<noMunicipal>555</noMunicipal>
<!--Optional:-->
<codePostal>H1H1H1</codePostal>
<!--Optional:-->
<infoCompl1>A/S MADAME TREMBLAY</infoCompl1>
<!--Optional:-->
<infoCompl2>A/S 2 </infoCompl2>
</Adresse>
<Adresse>
<referencePostal>DOMICILE-2</referencePostal>
<dateEffective>20070202</dateEffective>
<statut>V</statut>
<type>C</type>
<!--Optional:-->
<noUnite> </noUnite>
<!--Optional:-->
<typeNomRuePtCardinal>BLVD TASHEREAU</typeNomRuePtCardinal>
<!--Optional:-->
<municipalite>BROSSARD</municipalite>
<!--Optional:-->
<provinceEtat>QC</provinceEtat>
<!--Optional:-->
<pays>CDA</pays>
<!--Optional:-->
<noMunicipal>12345</noMunicipal>
<!--Optional:-->
<codePostal>J4A3A3</codePostal>
<!--Optional:-->
<infoCompl1>A/S MADAME INFOCOMPL1</infoCompl1>
<!--Optional:-->
<infoCompl2>A/S COMPL2 </infoCompl2>
</Adresse>
<Adresse>
<referencePostal>BUREAU</referencePostal>
<dateEffective>20070202</dateEffective>
<statut>V</statut>
<type>C</type>
<!--Optional:-->
<noUnite> </noUnite>
<!--Optional:-->
<typeNomRuePtCardinal>BLVD TASHEREAU</typeNomRuePtCardinal>
<!--Optional:-->
<municipalite>BROSSARD</municipalite>
<!--Optional:-->
<provinceEtat>QC</provinceEtat>
<!--Optional:-->
<pays>CDA</pays>
<!--Optional:-->
<noMunicipal>12345</noMunicipal>
<!--Optional:-->
<codePostal>J4A3A3</codePostal>
</Adresse>
<Adresse>
<referencePostal>CORRESPOND</referencePostal>
<dateEffective>20070202</dateEffective>
<statut>V</statut>
<type>C</type>
<!--Optional:-->
<noUnite> </noUnite>
<!--Optional:-->
<typeNomRuePtCardinal>BLVD TASHEREAU</typeNomRuePtCardinal>
<!--Optional:-->
<municipalite>BROSSARD</municipalite>
<!--Optional:-->
<provinceEtat>QC</provinceEtat>
<!--Optional:-->
<pays>CDA</pays>
<!--Optional:-->
<noMunicipal>12345</noMunicipal>
<!--Optional:-->
<codePostal>J4A3A3</codePostal>
<!--Optional:-->
<infoCompl1>A/S MADAME INFOCOMPL1</infoCompl1>
</Adresse>
<Adresse>
<referencePostal>EMAIL</referencePostal>
<dateEffective>20070202</dateEffective>
<statut>V</statut>
<type>E</type>
<!--Optional:-->
<adresseCourriel>TEST CLIENT@QC.CROIXBLEUE.CA</adresseCourriel>
</Adresse>
</adresseClient>
<!--Optional:-->
<telephoneClient>
<!--Optional:-->
<Telephone>
<reference>DOMICILE-1</reference>
<numeroTelephone>5148885555</numeroTelephone>
<statut>V</statut>
<dateEffective>20070101</dateEffective>
</Telephone>
<Telephone>
<reference>DOMICILE-2</reference>
<numeroTelephone>5148885555</numeroTelephone>
<statut>V</statut>
<dateEffective>20070101</dateEffective>
</Telephone>
<Telephone>
<reference>BUREAU-1</reference>
<numeroTelephone>5148885555</numeroTelephone>
<!--Optional:-->
<poste>4501</poste>
<statut>V</statut>
<dateEffective>20070101</dateEffective>
</Telephone>
<Telephone>
<reference>BUREAU-2</reference>
<numeroTelephone>5148885555</numeroTelephone>
<!--Optional:-->
<poste>12</poste>
<statut>V</statut>
<dateEffective>20070101</dateEffective>
</Telephone>
<Telephone>
<reference>TELECOPI-1</reference>
<numeroTelephone>5148885555</numeroTelephone>
<statut>V</statut>
<dateEffective>20070101</dateEffective>
</Telephone>
<Telephone>
<reference>TELECOPI-2</reference>
<numeroTelephone>5148885555</numeroTelephone>
<statut>V</statut>
<dateEffective>20070101</dateEffective>
</Telephone>
<Telephone>
<reference>CELLULAR-1</reference>
<numeroTelephone>5148885555</numeroTelephone>
<statut>V</statut>
<dateEffective>20070101</dateEffective>
</Telephone>
<Telephone>
<reference>CELLULAR-2</reference>
<numeroTelephone>5148885555</numeroTelephone>
<statut>V</statut>
<dateEffective>20070101</dateEffective>
</Telephone>
<Telephone>
<reference>CORRESP-1</reference>
<numeroTelephone>5148885555</numeroTelephone>
<statut>V</statut>
<dateEffective>20070101</dateEffective>
</Telephone>
<Telephone>
<reference>CORRESP-2</reference>
<numeroTelephone>5148885555</numeroTelephone>
<statut>V</statut>
<dateEffective>20070101</dateEffective>
</Telephone>
<Telephone>
<reference>ALPHAPAGE</reference>
<numeroTelephone>5148885555</numeroTelephone>
<statut>V</statut>
<dateEffective>20070101</dateEffective>
</Telephone>
</telephoneClient>
<!--Optional:-->
<alarme>
<dateTerminaison>20150715</dateTerminaison>
</alarme>
<!--Optional:-->
<commentaire>
<!--0 to 99 repetitions:-->
<Commentaire>
<noSequenceCommentaire>01</noSequenceCommentaire>
<commentaires>LIGNE COMMENTAIRE 1</commentaires>
</Commentaire>
<Commentaire>
<noSequenceCommentaire>02</noSequenceCommentaire>
<commentaires>LIGNE COMMENTAIRE 2</commentaires>
</Commentaire>
<Commentaire>
<noSequenceCommentaire>03</noSequenceCommentaire>
<commentaires>LIGNE COMMENTAIRE 3</commentaires>
</Commentaire>
<Commentaire>
<noSequenceCommentaire>04</noSequenceCommentaire>
<commentaires>LIGNE COMMENTAIRE 4</commentaires>
</Commentaire>
<Commentaire>
<noSequenceCommentaire>05</noSequenceCommentaire>
<commentaires>LIGNE COMMENTAIRE 5</commentaires>
</Commentaire>
<Commentaire>
<noSequenceCommentaire>06</noSequenceCommentaire>
<commentaires>LIGNE COMMENTAIRE 6</commentaires>
</Commentaire>
<Commentaire>
<noSequenceCommentaire>07</noSequenceCommentaire>
<commentaires>LIGNE COMMENTAIRE 7</commentaires>
</Commentaire>
<Commentaire>
<noSequenceCommentaire>08</noSequenceCommentaire>
<commentaires>LIGNE COMMENTAIRE 8</commentaires>
</Commentaire>
<Commentaire>
<noSequenceCommentaire>09</noSequenceCommentaire>
<commentaires>LIGNE COMMENTAIRE 9</commentaires>
</Commentaire>
<Commentaire>
<noSequenceCommentaire>10</noSequenceCommentaire>
<commentaires>LIGNE COMMENTAIRE 10</commentaires>
</Commentaire>
</commentaire>
</p1c:INP2-CLA>
</p1c:creationClient>
</soapenv:Body>
</soapenv:Envelope>
 
Consider Paul's rocket mass heater.
reply
    Bookmark Topic Watch Topic
  • New Topic