Re: How to not send nillable="true" for null elements in a SOAP message

2006-02-20 Thread Tim R J Langford

Hello All,

Is it a bug in Axis1.3 that WSDL with nillable="false" and 
minOccurs="0", still genrates a nilable="true" string on serialisation? 
Is there somewhere I can log this bug or enhancement?


I may be able to do this in work time. Where would I start with Axis1.3 
to add/alter the code to deal with this? WSDL2Java mainly generates 
beans and a few other files. How would the code to analyse the presence 
of nillable="true" in the schema and the unmarshalling of message 
objects fit together in the axis framework? some sort of variable set in 
the beans to indicate nillable should not be sent that is inspected on 
serilaisation; or some extracted supporting object that contains such 
information? Would this be a fairly simple task?


Thanks for you time,

Tim


Re: How to not send nillable="true" for null elements in a SOAP message

2006-02-16 Thread Tim R J Langford

Thanks Anand,

I really appreciate your help, and thankyou for supplying your source 
code. It was very kind.


I was infact trying a similar method too,  although I need to process my 
outgoing request, which I accessed using either:


SOAPEnvelope currentEnvelope = 
msgContext.getCurrentMessage().getSOAPEnvelope();

or
SOAPEnvelope requestEnvelope = 
msgContext.getRequestMessage().getSOAPEnvelope();



The problem occurs when manipulating the DOM however, when I call 
'getElementsByTagName(str)' with a label I know exists, or even 
'getChildren()' recursively on nodes I can only decend two levels into 
my DOM based message structure before I start obtaining nulls for 
subsequent children. When I run it in a debugger I can see my data 
wrapped in a 'RPCParam' element a few nodes down, and can even 
'getAsString()' but I cannot manipulate it any further using the DOM. I 
can process the 'getAsString()' output  to remove the required elements 
but when I try to set it using the 'rpcParam.setValue(processedStr)' 
method, my "<" and ">" tag markers (the one of elements that cant be 
accessed with the DOM programatically) get converted to "<" and 
">" respectively which obviously screws the xml.


Have I made a mistake further up in my methodology? Wrong WSDL2Java 
options, or their schema is broken in a way that somehow causes this 
strange DOM behaviour (ie 2 nodes of DOM, and the rest hidden in an 
element that returns null when asking for all children - even though 
they are displayed in the debugger)?


Am I being a n00b? I dont know a lot about SOAP/RPC/etc (hence using the 
Axis framework), and so I dont know why I cant access these elements 
programatically. All I want to do is strip out the nillable elements! 
Why doesnt setting "nilable="false" and/or minOccurs="0" in the WSDL 
stop Axis sending these elements?



Anyway, thankyou for your help and especially your code. Glad to know I 
was not being stupid (I hope!)


Sorry to everyone else for bombing the list so much... I am going nuts! 
I dont wanna try and hack the HTTPSender class!


Thanks

Tim





Kasi, Anand wrote:


Tim,

  I have pasted some code to help guide you. Do the same where you have access to your MessageContext object in your class that extends the 
  BasicHandler interface. 


Anand

 Message response = msg.getResponseMessage();
 SOAPEnvelope responseEnvelope = response.getSOAPEnvelope();
 SOAPEnvelope requestEnvelope = msg.getRequestMessage().getSOAPEnvelope();
 java.util.Vector v = responseEnvelope.getBodyElements();

 Iterator it = v.iterator();

 while (it.hasNext())
 {
  SOAPBodyElement sbe = (SOAPBodyElement) it.next();
  NodeList nodes = doc.getElementsByTagName("NodeNameYouWantToRemove");
  if (nodes != null && nodes.getLength() > 0)
  {
removeAll(doc, Node.ELEMENT_NODE, "NodeNameYouWantToRemove");  // 
removeAll method defined below
responseEnvelope.removeBodyElement(sbe);  // removing 
soapBodyElement from responseEnvelope
SOAPBodyElement newBody = new SOAPBodyElement(doc.getDocumentElement()); // create soapBody from transformed doc object 
 responseEnvelope.addBodyElement(newBody);  // Add new soap body to responseEnvelope

  }

 }
 

 //A generic removeAll method 
public static void removeAll(Node node, short nodeType, String name) 
{

  if (node.getNodeType() == nodeType &&
(name == null || node.getNodeName().equals(name))) 
  {

   node.getParentNode().removeChild(node);
  } 
  else 
  {

   // Visit the children
   NodeList list = node.getChildNodes();
   for (int i=0; i   {

removeAll(list.item(i), nodeType, name);
   }
  }
 }


________________

From: Tim R J Langford [mailto:[EMAIL PROTECTED]
Sent: Thu 2/16/2006 4:37 AM
To: axis-user@ws.apache.org
Subject: Re: How to not send nillable="true" for null elements in a SOAP message



Thanks Kasi,

OK I am trying thsi approach now as it si my final option.

I have created a handler class that extend BasicHandler and have
attached it to my outgoing Request SimpleChain in my
EngineConfiguration. I can grab the message context and display it as a
string. I also have access to the DOM and the various RPC elements, but
it is becoming fairly complicated and bespoke to try and remove these
nil elements. Is there any simple way of getting the string, processing
it to remove the elements and setting my desired string back again at
this level?

Thanks for your time,

Tim



Kasi, Anand wrote:

 


Write up a response flow handler that gets the response message from the
MessageContext object and removes the xsi:nil = true elements.


-Original Message-----
From: Tim R J Langford [mailto:[EMAIL PROTECTED]
Sent: Wednesday, February 15, 2006 9:42 AM
To: axis-user@ws.apache.org
Subject: Re: How to not send nillable=&quo

RE: How to not send nillable="true" for null elements in a SOAP message

2006-02-16 Thread Kasi, Anand
Tim,
 
   I have pasted some code to help guide you. Do the same where you have access 
to your MessageContext object in your class that extends the 
   BasicHandler interface. 
 
Anand

  Message response = msg.getResponseMessage();
  SOAPEnvelope responseEnvelope = response.getSOAPEnvelope();
  SOAPEnvelope requestEnvelope = msg.getRequestMessage().getSOAPEnvelope();
  java.util.Vector v = responseEnvelope.getBodyElements();

  Iterator it = v.iterator();
 
  while (it.hasNext())
  {
   SOAPBodyElement sbe = (SOAPBodyElement) it.next();
   NodeList nodes = doc.getElementsByTagName("NodeNameYouWantToRemove");
   if (nodes != null && nodes.getLength() > 0)
   {
 removeAll(doc, Node.ELEMENT_NODE, "NodeNameYouWantToRemove");  // 
removeAll method defined below
 responseEnvelope.removeBodyElement(sbe);  // removing 
soapBodyElement from responseEnvelope
 SOAPBodyElement newBody = new 
SOAPBodyElement(doc.getDocumentElement()); // create soapBody from transformed 
doc object 
  responseEnvelope.addBodyElement(newBody);  // Add new soap body 
to responseEnvelope
   }
 
  }
  

  //A generic removeAll method 
 public static void removeAll(Node node, short nodeType, String name) 
 {
   if (node.getNodeType() == nodeType &&
 (name == null || node.getNodeName().equals(name))) 
   {
node.getParentNode().removeChild(node);
   } 
   else 
   {
// Visit the children
NodeList list = node.getChildNodes();
for (int i=0; imailto:[EMAIL PROTECTED]
Sent: Thu 2/16/2006 4:37 AM
To: axis-user@ws.apache.org
Subject: Re: How to not send nillable="true" for null elements in a SOAP message



Thanks Kasi,

OK I am trying thsi approach now as it si my final option.

I have created a handler class that extend BasicHandler and have
attached it to my outgoing Request SimpleChain in my
EngineConfiguration. I can grab the message context and display it as a
string. I also have access to the DOM and the various RPC elements, but
it is becoming fairly complicated and bespoke to try and remove these
nil elements. Is there any simple way of getting the string, processing
it to remove the elements and setting my desired string back again at
this level?

Thanks for your time,

Tim



Kasi, Anand wrote:

>Write up a response flow handler that gets the response message from the
>MessageContext object and removes the xsi:nil = true elements.
>
>
>-Original Message-
>From: Tim R J Langford [mailto:[EMAIL PROTECTED]
>Sent: Wednesday, February 15, 2006 9:42 AM
>To: axis-user@ws.apache.org
>Subject: Re: How to not send nillable="true" for null elements in a SOAP
>message
>
>Hello All,
>
>I am still trying to remove 'nil="true"' elements from my messages sent
>out by axis. I have modified the wsdl in elements where I want axis not
>to send these strings (i.e: have a "blank" element) as follows :
>
>
>
>to :
>
>type="xsd:string"/>
>
>so that instead of sending :
>
>
>
>
>
>I send something like :
>
>
>
>
>I have tried a few other methods (such as the one Rod suggested not
>specifying "nillable" at all in the schema and setting minOccurs="0")
>but axis keeps sending these elements as nillable. Should this work or
>am I making a mistake somwhere?
>
>It may be PEBCAK but I just cant get axis1.3  to exhibit the behavior
>the server expects. Is there any other lower level method in axis to
>deal with this? (I traced the code calls down to the HTTP sender class
>but even at this level there is no easy access to the string as it is
>being passed by chunk encoded HTTP - and of course in some cases the
>server we are trying to attach too actually wants us to send these
>nillable="true" elements so this approach is not suitable).
>
>I know I must have exhausted all you guys by now! Sorry, and thanks.
>
>
>Tim
>
>PS: I am generating the axis code form the wsdl using the following ant
>task configuration :
>
>  output="${src.dir}"
>  deployScope="Application"
>  verbose="true"
>  serverSide="true"
> wrapArrays="true"
>  url="eurostar_hack2.wsdl">  
>
>
>
>
>
>
>
>
>Rodrigo Ruiz wrote:
>
> 
>
>>By what you describe, I think you should add minOccurs='0' and remove
>>nillable='true'
>>
>>Regards,
>>Rodrigo Ruiz
>>
>>Tim R J Langford wrote:
>>
>>   
>>
>>>Thanks Anne,
>>>
>>>Thats what I thought. Unfortunatly our provider does not seem too
>>>clued up on their tech, and 

Re: How to not send nillable="true" for null elements in a SOAP message

2006-02-16 Thread Tim R J Langford

Thanks Kasi,

OK I am trying thsi approach now as it si my final option.

I have created a handler class that extend BasicHandler and have 
attached it to my outgoing Request SimpleChain in my 
EngineConfiguration. I can grab the message context and display it as a 
string. I also have access to the DOM and the various RPC elements, but 
it is becoming fairly complicated and bespoke to try and remove these 
nil elements. Is there any simple way of getting the string, processing 
it to remove the elements and setting my desired string back again at 
this level?


Thanks for your time,

Tim



Kasi, Anand wrote:


Write up a response flow handler that gets the response message from the
MessageContext object and removes the xsi:nil = true elements.


-Original Message-
From: Tim R J Langford [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, February 15, 2006 9:42 AM

To: axis-user@ws.apache.org
Subject: Re: How to not send nillable="true" for null elements in a SOAP
message

Hello All,

I am still trying to remove 'nil="true"' elements from my messages sent 
out by axis. I have modified the wsdl in elements where I want axis not 
to send these strings (i.e: have a "blank" element) as follows :




to :

type="xsd:string"/>


so that instead of sending :


   


I send something like :




I have tried a few other methods (such as the one Rod suggested not 
specifying "nillable" at all in the schema and setting minOccurs="0") 
but axis keeps sending these elements as nillable. Should this work or 
am I making a mistake somwhere?


It may be PEBCAK but I just cant get axis1.3  to exhibit the behavior 
the server expects. Is there any other lower level method in axis to 
deal with this? (I traced the code calls down to the HTTP sender class 
but even at this level there is no easy access to the string as it is 
being passed by chunk encoded HTTP - and of course in some cases the 
server we are trying to attach too actually wants us to send these 
nillable="true" elements so this approach is not suitable).


I know I must have exhausted all you guys by now! Sorry, and thanks.


Tim

PS: I am generating the axis code form the wsdl using the following ant 
task configuration :


url="eurostar_hack2.wsdl">   
   








Rodrigo Ruiz wrote:

 

By what you describe, I think you should add minOccurs='0' and remove 
nillable='true'


Regards,
Rodrigo Ruiz

Tim R J Langford wrote:

   


Thanks Anne,

Thats what I thought. Unfortunatly our provider does not seem too 
clued up on their tech, and the wsdl does not allow minOccurs="0".  I
 



 

guess I will have to update our automated build process to fix their 
schema before generating my soap beans and classes. The best way to 
do this would be by adding minOccurs="0" to the faulty elements I 
presume?


Thanks to everybody for their time,

Tim


Anne Thomas Manes wrote:

 

If the service cannot accept xsi:nil="true" then the service 
provider should adjust the schema accordingly. Does the schema allow
   



 

minOccurs="0"? If not, then there's no valid way to send no element 
instead of xsi:nil="true".


Anne

On 2/14/06, *Tim R J Langford* <[EMAIL PROTECTED] 
<mailto:[EMAIL PROTECTED]>> wrote:



   Hi Jeff,

   Thanks for your response.

   Sorry for being unclear. Yes you are correct. I am sending
   'xsi:nil="true"' and I want to configure axis to send  nothing 
instead

   of this string.  e.g : *

   *
   

   *I think Axis 1.2 did it this way? Is there anyway of
   


configuring
 


   Axis
   1.3 to not send these 'xsi:nil="true"' elements?

   Thanks for you time,

   Tim


   PS: The service wsdl does have  'xsd:nillable="true"' elements 
in the
   message schema, but their system cannot actually handle the 
situation
   where it is null (even if they return it in a response), and 
they have
   asked us to remove the 'xsi:nil="true"' elements from our 
requests. We

   could fix the wsdl schema, but this would impede our codegen
   system as
   we are the client, so were wondering if there was a way to do it
   



 


from
   within axis?*



   *

   Jeff Greif wrote:

   >Just to be sure, you're sending xsi:nil="true", not
   xsd:nillable="true", right?
   >
   >The latter is used only in the schema, and means that the 
element is

   >allowed to have no content.  The former means that this
   particular use
   >of the element has no content.
   >
   >Jeff
   >
   >On 2/14/06, Tim R J Langford <[EMAIL PROTECTED]
   <mailto:[EMAIL PROTECTED]>> wrote:
   >
   >
   >>Hello All,
   >>
   >>I am writing a client interface into a provider SOAP web
   service, and
   >>their system fails and returns a null pointer exception when I
   send them
   >>a 'nillable="true"' element in my request. I think the reason
   for this
   >>is that they are using an older version of axis than we are
   using ( 1.3).
   >>
   >>
   >
   >
   >


   



 



 





RE: How to not send nillable="true" for null elements in a SOAP message

2006-02-15 Thread Kasi, Anand
Write up a response flow handler that gets the response message from the
MessageContext object and removes the xsi:nil = true elements.
 

-Original Message-
From: Tim R J Langford [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, February 15, 2006 9:42 AM
To: axis-user@ws.apache.org
Subject: Re: How to not send nillable="true" for null elements in a SOAP
message

Hello All,

I am still trying to remove 'nil="true"' elements from my messages sent 
out by axis. I have modified the wsdl in elements where I want axis not 
to send these strings (i.e: have a "blank" element) as follows :



to :



so that instead of sending :





I send something like :




I have tried a few other methods (such as the one Rod suggested not 
specifying "nillable" at all in the schema and setting minOccurs="0") 
but axis keeps sending these elements as nillable. Should this work or 
am I making a mistake somwhere?

It may be PEBCAK but I just cant get axis1.3  to exhibit the behavior 
the server expects. Is there any other lower level method in axis to 
deal with this? (I traced the code calls down to the HTTP sender class 
but even at this level there is no easy access to the string as it is 
being passed by chunk encoded HTTP - and of course in some cases the 
server we are trying to attach too actually wants us to send these 
nillable="true" elements so this approach is not suitable).

I know I must have exhausted all you guys by now! Sorry, and thanks.


Tim

PS: I am generating the axis code form the wsdl using the following ant 
task configuration :

   








Rodrigo Ruiz wrote:

> By what you describe, I think you should add minOccurs='0' and remove 
> nillable='true'
>
> Regards,
> Rodrigo Ruiz
>
> Tim R J Langford wrote:
>
>> Thanks Anne,
>>
>> Thats what I thought. Unfortunatly our provider does not seem too 
>> clued up on their tech, and the wsdl does not allow minOccurs="0".  I

>> guess I will have to update our automated build process to fix their 
>> schema before generating my soap beans and classes. The best way to 
>> do this would be by adding minOccurs="0" to the faulty elements I 
>> presume?
>>
>> Thanks to everybody for their time,
>>
>> Tim
>>
>>
>> Anne Thomas Manes wrote:
>>
>>> If the service cannot accept xsi:nil="true" then the service 
>>> provider should adjust the schema accordingly. Does the schema allow

>>> minOccurs="0"? If not, then there's no valid way to send no element 
>>> instead of xsi:nil="true".
>>>
>>> Anne
>>>
>>> On 2/14/06, *Tim R J Langford* <[EMAIL PROTECTED] 
>>> <mailto:[EMAIL PROTECTED]>> wrote:
>>>
>>>
>>> Hi Jeff,
>>>
>>> Thanks for your response.
>>>
>>> Sorry for being unclear. Yes you are correct. I am sending
>>> 'xsi:nil="true"' and I want to configure axis to send  nothing 
>>> instead
>>> of this string.  e.g : *
>>>
>>> *
>>> 
>>>
>>> *I think Axis 1.2 did it this way? Is there anyway of
configuring
>>> Axis
>>> 1.3 to not send these 'xsi:nil="true"' elements?
>>>
>>> Thanks for you time,
>>>
>>> Tim
>>>
>>>
>>> PS: The service wsdl does have  'xsd:nillable="true"' elements 
>>> in the
>>> message schema, but their system cannot actually handle the 
>>> situation
>>> where it is null (even if they return it in a response), and 
>>> they have
>>> asked us to remove the 'xsi:nil="true"' elements from our 
>>> requests. We
>>> could fix the wsdl schema, but this would impede our codegen
>>> system as
>>> we are the client, so were wondering if there was a way to do it

>>> from
>>> within axis?*
>>>
>>>
>>>
>>> *
>>>
>>> Jeff Greif wrote:
>>>
>>> >Just to be sure, you're sending xsi:nil="true", not
>>> xsd:nillable="true", right?
>>> >
>>> >The latter is used only in the schema, and means that the 
>>> element is
>>> >allowed to have no content.  The former means that this
>>> particular use
>>> >of the element has no content.
>>> >
>>> >Jeff
>>> >
>>> >On 2/14/06, Tim R J Langford <[EMAIL PROTECTED]
>>> <mailto:[EMAIL PROTECTED]>> wrote:
>>> >
>>> >
>>> >>Hello All,
>>> >>
>>> >>I am writing a client interface into a provider SOAP web
>>> service, and
>>> >>their system fails and returns a null pointer exception when I
>>> send them
>>> >>a 'nillable="true"' element in my request. I think the reason
>>> for this
>>> >>is that they are using an older version of axis than we are
>>> using ( 1.3).
>>> >>
>>> >>
>>> >
>>> >
>>> >
>>>
>>>
>>
>>
>>
>


Re: How to not send nillable="true" for null elements in a SOAP message

2006-02-15 Thread Tim R J Langford

Hello All,

I am still trying to remove 'nil="true"' elements from my messages sent 
out by axis. I have modified the wsdl in elements where I want axis not 
to send these strings (i.e: have a "blank" element) as follows :




to :

type="xsd:string"/>


so that instead of sending :


   


I send something like :




I have tried a few other methods (such as the one Rod suggested not 
specifying "nillable" at all in the schema and setting minOccurs="0") 
but axis keeps sending these elements as nillable. Should this work or 
am I making a mistake somwhere?


It may be PEBCAK but I just cant get axis1.3  to exhibit the behavior 
the server expects. Is there any other lower level method in axis to 
deal with this? (I traced the code calls down to the HTTP sender class 
but even at this level there is no easy access to the string as it is 
being passed by chunk encoded HTTP - and of course in some cases the 
server we are trying to attach too actually wants us to send these 
nillable="true" elements so this approach is not suitable).


I know I must have exhausted all you guys by now! Sorry, and thanks.


Tim

PS: I am generating the axis code form the wsdl using the following ant 
task configuration :


url="eurostar_hack2.wsdl">   
   








Rodrigo Ruiz wrote:

By what you describe, I think you should add minOccurs='0' and remove 
nillable='true'


Regards,
Rodrigo Ruiz

Tim R J Langford wrote:


Thanks Anne,

Thats what I thought. Unfortunatly our provider does not seem too 
clued up on their tech, and the wsdl does not allow minOccurs="0".  I 
guess I will have to update our automated build process to fix their 
schema before generating my soap beans and classes. The best way to 
do this would be by adding minOccurs="0" to the faulty elements I 
presume?


Thanks to everybody for their time,

Tim


Anne Thomas Manes wrote:

If the service cannot accept xsi:nil="true" then the service 
provider should adjust the schema accordingly. Does the schema allow 
minOccurs="0"? If not, then there's no valid way to send no element 
instead of xsi:nil="true".


Anne

On 2/14/06, *Tim R J Langford* <[EMAIL PROTECTED] 
> wrote:



Hi Jeff,

Thanks for your response.

Sorry for being unclear. Yes you are correct. I am sending
'xsi:nil="true"' and I want to configure axis to send  nothing 
instead

of this string.  e.g : *

*


*I think Axis 1.2 did it this way? Is there anyway of configuring
Axis
1.3 to not send these 'xsi:nil="true"' elements?

Thanks for you time,

Tim


PS: The service wsdl does have  'xsd:nillable="true"' elements 
in the
message schema, but their system cannot actually handle the 
situation
where it is null (even if they return it in a response), and 
they have
asked us to remove the 'xsi:nil="true"' elements from our 
requests. We

could fix the wsdl schema, but this would impede our codegen
system as
we are the client, so were wondering if there was a way to do it 
from

within axis?*



*

Jeff Greif wrote:

>Just to be sure, you're sending xsi:nil="true", not
xsd:nillable="true", right?
>
>The latter is used only in the schema, and means that the 
element is

>allowed to have no content.  The former means that this
particular use
>of the element has no content.
>
>Jeff
>
>On 2/14/06, Tim R J Langford <[EMAIL PROTECTED]
> wrote:
>
>
>>Hello All,
>>
>>I am writing a client interface into a provider SOAP web
service, and
>>their system fails and returns a null pointer exception when I
send them
>>a 'nillable="true"' element in my request. I think the reason
for this
>>is that they are using an older version of axis than we are
using ( 1.3).
>>
>>
>
>
>












Re: How to not send nillable="true" for null elements in a SOAP message

2006-02-15 Thread Tim R J Langford

Thanks Rod,

I agree with you and will handle it this way.

Thankyou everyone for your help and advice,

Tim


Rodrigo Ruiz wrote:

By what you describe, I think you should add minOccurs='0' and remove 
nillable='true'


Regards,
Rodrigo Ruiz

Tim R J Langford wrote:


Thanks Anne,

Thats what I thought. Unfortunatly our provider does not seem too 
clued up on their tech, and the wsdl does not allow minOccurs="0".  I 
guess I will have to update our automated build process to fix their 
schema before generating my soap beans and classes. The best way to 
do this would be by adding minOccurs="0" to the faulty elements I 
presume?


Thanks to everybody for their time,

Tim


Anne Thomas Manes wrote:

If the service cannot accept xsi:nil="true" then the service 
provider should adjust the schema accordingly. Does the schema allow 
minOccurs="0"? If not, then there's no valid way to send no element 
instead of xsi:nil="true".


Anne

On 2/14/06, *Tim R J Langford* <[EMAIL PROTECTED] 
> wrote:



Hi Jeff,

Thanks for your response.

Sorry for being unclear. Yes you are correct. I am sending
'xsi:nil="true"' and I want to configure axis to send  nothing 
instead

of this string.  e.g : *

*


*I think Axis 1.2 did it this way? Is there anyway of configuring
Axis
1.3 to not send these 'xsi:nil="true"' elements?

Thanks for you time,

Tim


PS: The service wsdl does have  'xsd:nillable="true"' elements 
in the
message schema, but their system cannot actually handle the 
situation
where it is null (even if they return it in a response), and 
they have
asked us to remove the 'xsi:nil="true"' elements from our 
requests. We

could fix the wsdl schema, but this would impede our codegen
system as
we are the client, so were wondering if there was a way to do it 
from

within axis?*



*

Jeff Greif wrote:

>Just to be sure, you're sending xsi:nil="true", not
xsd:nillable="true", right?
>
>The latter is used only in the schema, and means that the 
element is

>allowed to have no content.  The former means that this
particular use
>of the element has no content.
>
>Jeff
>
>On 2/14/06, Tim R J Langford <[EMAIL PROTECTED]
> wrote:
>
>
>>Hello All,
>>
>>I am writing a client interface into a provider SOAP web
service, and
>>their system fails and returns a null pointer exception when I
send them
>>a 'nillable="true"' element in my request. I think the reason
for this
>>is that they are using an older version of axis than we are
using ( 1.3).
>>
>>
>
>
>












Re: How to not send nillable="true" for null elements in a SOAP message

2006-02-15 Thread Rodrigo Ruiz
By what you describe, I think you should add minOccurs='0' and remove 
nillable='true'


Regards,
Rodrigo Ruiz

Tim R J Langford wrote:

Thanks Anne,

Thats what I thought. Unfortunatly our provider does not seem too 
clued up on their tech, and the wsdl does not allow minOccurs="0".  I 
guess I will have to update our automated build process to fix their 
schema before generating my soap beans and classes. The best way to do 
this would be by adding minOccurs="0" to the faulty elements I presume?


Thanks to everybody for their time,

Tim


Anne Thomas Manes wrote:

If the service cannot accept xsi:nil="true" then the service provider 
should adjust the schema accordingly. Does the schema allow 
minOccurs="0"? If not, then there's no valid way to send no element 
instead of xsi:nil="true".


Anne

On 2/14/06, *Tim R J Langford* <[EMAIL PROTECTED] 
> wrote:



Hi Jeff,

Thanks for your response.

Sorry for being unclear. Yes you are correct. I am sending
'xsi:nil="true"' and I want to configure axis to send  nothing 
instead

of this string.  e.g : *

*


*I think Axis 1.2 did it this way? Is there anyway of configuring
Axis
1.3 to not send these 'xsi:nil="true"' elements?

Thanks for you time,

Tim


PS: The service wsdl does have  'xsd:nillable="true"' elements in 
the
message schema, but their system cannot actually handle the 
situation
where it is null (even if they return it in a response), and they 
have
asked us to remove the 'xsi:nil="true"' elements from our 
requests. We

could fix the wsdl schema, but this would impede our codegen
system as
we are the client, so were wondering if there was a way to do it 
from

within axis?*



*

Jeff Greif wrote:

>Just to be sure, you're sending xsi:nil="true", not
xsd:nillable="true", right?
>
>The latter is used only in the schema, and means that the 
element is

>allowed to have no content.  The former means that this
particular use
>of the element has no content.
>
>Jeff
>
>On 2/14/06, Tim R J Langford <[EMAIL PROTECTED]
> wrote:
>
>
>>Hello All,
>>
>>I am writing a client interface into a provider SOAP web
service, and
>>their system fails and returns a null pointer exception when I
send them
>>a 'nillable="true"' element in my request. I think the reason
for this
>>is that they are using an older version of axis than we are
using ( 1.3).
>>
>>
>
>
>








Re: How to not send nillable="true" for null elements in a SOAP message

2006-02-15 Thread Tim R J Langford

Thanks Anne,

Thats what I thought. Unfortunatly our provider does not seem too clued 
up on their tech, and the wsdl does not allow minOccurs="0".  I guess I 
will have to update our automated build process to fix their schema 
before generating my soap beans and classes. The best way to do this 
would be by adding minOccurs="0" to the faulty elements I presume?


Thanks to everybody for their time,

Tim


Anne Thomas Manes wrote:

If the service cannot accept xsi:nil="true" then the service provider 
should adjust the schema accordingly. Does the schema allow 
minOccurs="0"? If not, then there's no valid way to send no element 
instead of xsi:nil="true".


Anne

On 2/14/06, *Tim R J Langford* <[EMAIL PROTECTED] 
> wrote:



Hi Jeff,

Thanks for your response.

Sorry for being unclear. Yes you are correct. I am sending
'xsi:nil="true"' and I want to configure axis to send  nothing instead
of this string.  e.g : *

*


*I think Axis 1.2 did it this way? Is there anyway of configuring
Axis
1.3 to not send these 'xsi:nil="true"' elements?

Thanks for you time,

Tim


PS: The service wsdl does have  'xsd:nillable="true"' elements in the
message schema, but their system cannot actually handle the situation
where it is null (even if they return it in a response), and they have
asked us to remove the 'xsi:nil="true"' elements from our requests. We
could fix the wsdl schema, but this would impede our codegen
system as
we are the client, so were wondering if there was a way to do it from
within axis?*



*

Jeff Greif wrote:

>Just to be sure, you're sending xsi:nil="true", not
xsd:nillable="true", right?
>
>The latter is used only in the schema, and means that the element is
>allowed to have no content.  The former means that this
particular use
>of the element has no content.
>
>Jeff
>
>On 2/14/06, Tim R J Langford <[EMAIL PROTECTED]
> wrote:
>
>
>>Hello All,
>>
>>I am writing a client interface into a provider SOAP web
service, and
>>their system fails and returns a null pointer exception when I
send them
>>a 'nillable="true"' element in my request. I think the reason
for this
>>is that they are using an older version of axis than we are
using ( 1.3).
>>
>>
>
>
>






Re: How to not send nillable="true" for null elements in a SOAP message

2006-02-14 Thread Anne Thomas Manes
If the service cannot accept xsi:nil="true" then the service provider should adjust the schema accordingly. Does the schema allow minOccurs="0"? If not, then there's no valid way to send no element instead of xsi:nil="true".
AnneOn 2/14/06, Tim R J Langford <[EMAIL PROTECTED]> wrote:
Hi Jeff,Thanks for your response.Sorry for being unclear. Yes you are correct. I am sending'xsi:nil="true"' and I want to configure axis to send  nothing insteadof this string.  e.g : *
**I think Axis 1.2 did it this way? Is there anyway of configuring Axis
1.3 to not send these 'xsi:nil="true"' elements?Thanks for you time,TimPS: The service wsdl does have  'xsd:nillable="true"' elements in themessage schema, but their system cannot actually handle the situation
where it is null (even if they return it in a response), and they haveasked us to remove the 'xsi:nil="true"' elements from our requests. Wecould fix the wsdl schema, but this would impede our codegen system as
we are the client, so were wondering if there was a way to do it fromwithin axis?**Jeff Greif wrote:>Just to be sure, you're sending xsi:nil="true", not xsd:nillable="true", right?
>>The latter is used only in the schema, and means that the element is>allowed to have no content.  The former means that this particular use>of the element has no content.>>Jeff
>>On 2/14/06, Tim R J Langford <[EMAIL PROTECTED]> wrote:Hello All,I am writing a client interface into a provider SOAP web service, and
>>their system fails and returns a null pointer exception when I send them>>a 'nillable="true"' element in my request. I think the reason for this>>is that they are using an older version of axis than we are using (
1.3).>>>


Re: How to not send nillable="true" for null elements in a SOAP message

2006-02-14 Thread Tim R J Langford


Hi Jeff,

Thanks for your response.

Sorry for being unclear. Yes you are correct. I am sending  
'xsi:nil="true"' and I want to configure axis to send  nothing instead 
of this string.  e.g : *


*


*I think Axis 1.2 did it this way? Is there anyway of configuring Axis 
1.3 to not send these 'xsi:nil="true"' elements?


Thanks for you time,

Tim


PS: The service wsdl does have  'xsd:nillable="true"' elements in the 
message schema, but their system cannot actually handle the situation 
where it is null (even if they return it in a response), and they have 
asked us to remove the 'xsi:nil="true"' elements from our requests. We 
could fix the wsdl schema, but this would impede our codegen system as 
we are the client, so were wondering if there was a way to do it from 
within axis?*




*

Jeff Greif wrote:


Just to be sure, you're sending xsi:nil="true", not xsd:nillable="true", right?

The latter is used only in the schema, and means that the element is
allowed to have no content.  The former means that this particular use
of the element has no content.

Jeff

On 2/14/06, Tim R J Langford <[EMAIL PROTECTED]> wrote:
 


Hello All,

I am writing a client interface into a provider SOAP web service, and
their system fails and returns a null pointer exception when I send them
a 'nillable="true"' element in my request. I think the reason for this
is that they are using an older version of axis than we are using (1.3).
   



 





Re: How to not send nillable="true" for null elements in a SOAP message

2006-02-14 Thread Jeff Greif
Just to be sure, you're sending xsi:nil="true", not xsd:nillable="true", right?

The latter is used only in the schema, and means that the element is
allowed to have no content.  The former means that this particular use
of the element has no content.

Jeff

On 2/14/06, Tim R J Langford <[EMAIL PROTECTED]> wrote:
> Hello All,
>
> I am writing a client interface into a provider SOAP web service, and
> their system fails and returns a null pointer exception when I send them
> a 'nillable="true"' element in my request. I think the reason for this
> is that they are using an older version of axis than we are using (1.3).


How to not send nillable="true" for null elements in a SOAP message

2006-02-14 Thread Tim R J Langford

Hello All,

I am writing a client interface into a provider SOAP web service, and 
their system fails and returns a null pointer exception when I send them 
a 'nillable="true"' element in my request. I think the reason for this 
is that they are using an older version of axis than we are using (1.3).


I have found a solution that recommends changing the WSDL of the 
generated service :


http://marc.theaimsgroup.com/?l=axis-user&m=111793234530147&w=2


However, this is not ideal, as we do not have control over this WSDL 
(belongs to the provider) so even though we can modify their file I 
would prefer not to.


Are there any options in Axis that would allow us not to send anything 
when we have a such null element, as opposed to sending 
'nillable="true"'? If not where should I make the change? I could add a 
handler to the client to strip these elements out before they are sent, 
but this is probably not very efficient.



Anyhelp would be appreciated!

Thanks for you time,

Tim