Re: axis SAAJ whitespace problem

2005-11-15 Thread Doug Davis

I ran into this myself - w/o knowing
about this special flag I just ripped the code out :-)
PrettyPrinting I understand - pretty
deserializing/reading was something I just could not grok.
-Doug






Davanum Srinivas [EMAIL PROTECTED]

11/14/2005 08:09 PM



Please respond to
axis-user





To
axis-user@ws.apache.org


cc



Subject
Re: axis SAAJ whitespace
problem








Did you try the following in the global configuration
section in Axis 1.1?

parameter name=disablePrettyXML value=true/

Am not sure if it was even implemented in the old version of Axis.

thanks,
dims

On 11/14/05, Pratibha Mittal [EMAIL PROTECTED] wrote:
 Hi Dims,

 Thanks for your reply. Do you know if this bug fix has been back ported
to axis 1.1 or if not, if it is possible to do that and if so how?

 -pratibha

 -Original Message-
 From: Davanum Srinivas [mailto:[EMAIL PROTECTED]
 Sent: Monday, November 07, 2005 9:52 PM
 To: axis-user@ws.apache.org
 Cc: [EMAIL PROTECTED]
 Subject: Re: axis SAAJ whitespace problem

 Pratibha,

 Please upgrade to latest Axis 1.3. We've fixed this problem.

 thanks,
 dims

 On 11/7/05, Pratibha Mittal [EMAIL PROTECTED] wrote:
 
 
 
  Hi,
 
 
 
  We are using Axis SAAJ implementation (version 1.1 of axis).
I seem to be
  having problem when I am serializing the SOAP envelope object
to byte
  stream. It is putting extra whitespaces and line breaks. This
is causing
  problem in verification of message when a signed message comes.
 
 
 
  The scenario is like this:
 
 
 
  A web service client signs the soap BODY, and sends to the server.
The
  server mainpulates the SOAP header (does not touch the body)
using SAAJ java
  APIs. Then the server tries to verify the soap message. For verification,
  when it retrives the soap message, axis needs to recreate the
byte stream
  from java SOAP Envelope object since the message has been modified.
However
  the message retrieved does not have the the exact same SOAP Body.
It has
  extra whitespaces and line breaks and hence the verification
fails.
 
 
 
  I was able to isolate problem in a simple test example and I
can see that
  the body gets changed when axis recreates the byte stream.
 
 
 
  Is this an Axis bug? Is it fixed in later versions? Has anybody
encountered
  similar problem? What are the options I have to solve this problem?
Could
  anybody please reply.
 
 
 
  Attached is the test program I used which gives the problem.
 
 
 
  Thanks
 
  Pratibha Mittal
 
  Oracle Corporation
 
 
 
  **
 
 
 
public static void test() {
 
 String str0 = new String(
 
 soap:Envelope
  xmlns:xsi=\http://www.w3.org/2001/XMLSchema-instance\
 +
 
 xmlns:xsd=\http://www.w3.org/2001/XMLSchema\
 +
 
 
  xmlns:soap=\http://schemas.xmlsoap.org/soap/envelope/\

  +
 
 
  xmlns:soapenc=\http://schemas.xmlsoap.org/soap/encoding/\
   +
 
 
  soap:encodingStyle=\http://schemas.xmlsoap.org/soap/encoding/\
  \n +
 
  soap:Body\n +
 
 ns2:getTime
  xmlns:ns2=\urn:Test:GetTime\\n +
 
  
format
  xsi:type=\xsd:String\VALUE/format\n
+
 
 /ns2:getTime\n
+
 
  /soap:Body\n
+
 
  /soap:Envelope);
 
 byte[] b0 = str0.getBytes();
 
 ByteArrayInputStream inputstream = new ByteArrayInputStream(b0);
 
 
 try {
 
 
 
  Message message = new Message(inputstream,
false, null);
 
  ByteArrayOutputStream outputStream
= new ByteArrayOutputStream();
 
  message.writeTo(outputStream);
 
  byte[] b1 = outputStream.toByteArray();
 
  writeByteArray(b1);
 
 
 
  SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
 
  SOAPHeader existingHeader = envelope.getHeader();
 
  if(existingHeader != null) existingHeader.detachNode();
 
  SOAPHeader newHeader = envelope.addHeader();
 
 
 
  ByteArrayOutputStream outputStream2
= new ByteArrayOutputStream();
 
 
  message.writeTo(outputStream2);
 
  byte[] b2 = outputStream2.toByteArray();
 
  writeByteArray(b2);
 
 
 
 } catch (Exception e) {
 
  e.printStackTrace();
 
 }
 
}
 
 
 
public static void writeByteArray(byte[] b) {
 
 
 
 try {
 
  long l = (new java.util.Date()).getTime();
 
  String numStr = (new Long(l)).toString();
 
  java.io.BufferedReader br = new java.io.BufferedReader(new
  java.io.InputStreamReader(new java.io.ByteArrayInputStream(b)));
 
  String str = br.readLine();
 
  while(str != null) {
 
System.out.println(str);
 
str = br.readLine();
 
  }
 
 
 
 } catch (Exception e) {
 
  e.printStackTrace();
 
 }
 
 System.out.println(\n);
 
}
 
 
 
 
 
 


 --
 Davanum Srinivas : http://wso2.com/blogs/




--
Davanum Srinivas : http://wso2.com/blogs/



RE: axis SAAJ whitespace problem

2005-11-14 Thread Pratibha Mittal
Hi Dims,

Thanks for your reply. Do you know if this bug fix has been back ported to axis 
1.1 or if not, if it is possible to do that and if so how?

-pratibha

-Original Message-
From: Davanum Srinivas [mailto:[EMAIL PROTECTED] 
Sent: Monday, November 07, 2005 9:52 PM
To: axis-user@ws.apache.org
Cc: [EMAIL PROTECTED]
Subject: Re: axis SAAJ whitespace problem

Pratibha,

Please upgrade to latest Axis 1.3. We've fixed this problem.

thanks,
dims

On 11/7/05, Pratibha Mittal [EMAIL PROTECTED] wrote:



 Hi,



 We are using Axis SAAJ implementation (version 1.1 of axis). I seem to be
 having problem when I am serializing the SOAP envelope object to byte
 stream. It is putting extra whitespaces and line breaks. This is causing
 problem in verification of message when a signed message comes.



 The scenario is like this:



 A web service client signs the soap BODY, and sends to the server. The
 server mainpulates the SOAP header (does not touch the body) using SAAJ java
 APIs. Then the server tries to verify the soap message. For verification,
 when it retrives the soap message, axis needs to recreate the byte stream
 from java SOAP Envelope object since the message has been modified. However
 the message retrieved does not have the the exact same SOAP Body. It has
 extra whitespaces and line breaks and hence the verification fails.



 I was able to isolate problem in a simple test example and I can see that
 the body gets changed when axis recreates the byte stream.



 Is this an Axis bug? Is it fixed in later versions? Has anybody encountered
 similar problem? What are the options I have to solve this problem? Could
 anybody please reply.



 Attached is the test program I used which gives the problem.



 Thanks

 Pratibha Mittal

 Oracle Corporation



 **



 public static void test() {

   String str0 = new String(

   soap:Envelope
 xmlns:xsi=\http://www.w3.org/2001/XMLSchema-instance\;  +

   xmlns:xsd=\http://www.w3.org/2001/XMLSchema\;  +


 xmlns:soap=\http://schemas.xmlsoap.org/soap/envelope/\; 
 +


 xmlns:soapenc=\http://schemas.xmlsoap.org/soap/encoding/\;
  +


 soap:encodingStyle=\http://schemas.xmlsoap.org/soap/encoding/\;
 \n +

 soap:Body\n +

   ns2:getTime
 xmlns:ns2=\urn:Test:GetTime\\n +

  format
 xsi:type=\xsd:String\VALUE/format\n +

   /ns2:getTime\n +

 /soap:Body\n +

 /soap:Envelope);

   byte[] b0 = str0.getBytes();

   ByteArrayInputStream inputstream = new ByteArrayInputStream(b0);


   try {



 Message message = new Message(inputstream, false, null);

 ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

 message.writeTo(outputStream);

 byte[] b1 = outputStream.toByteArray();

 writeByteArray(b1);



 SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();

 SOAPHeader existingHeader = envelope.getHeader();

 if(existingHeader != null) existingHeader.detachNode();

 SOAPHeader newHeader = envelope.addHeader();



 ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream();


 message.writeTo(outputStream2);

 byte[] b2 = outputStream2.toByteArray();

 writeByteArray(b2);



   } catch (Exception e) {

 e.printStackTrace();

   }

 }



 public static void writeByteArray(byte[] b) {



   try {

 long l = (new java.util.Date()).getTime();

 String numStr = (new Long(l)).toString();

 java.io.BufferedReader br = new java.io.BufferedReader(new
 java.io.InputStreamReader(new java.io.ByteArrayInputStream(b)));

 String str = br.readLine();

 while(str != null) {

 System.out.println(str);

 str = br.readLine();

 }



   } catch (Exception e) {

 e.printStackTrace();

   }

   System.out.println(\n);

 }








--
Davanum Srinivas : http://wso2.com/blogs/



Re: axis SAAJ whitespace problem

2005-11-14 Thread Davanum Srinivas
Did you try the following in the global configuration section in Axis 1.1?

parameter name=disablePrettyXML value=true/

Am not sure if it was even implemented in the old version of Axis.

thanks,
dims

On 11/14/05, Pratibha Mittal [EMAIL PROTECTED] wrote:
 Hi Dims,

 Thanks for your reply. Do you know if this bug fix has been back ported to 
 axis 1.1 or if not, if it is possible to do that and if so how?

 -pratibha

 -Original Message-
 From: Davanum Srinivas [mailto:[EMAIL PROTECTED]
 Sent: Monday, November 07, 2005 9:52 PM
 To: axis-user@ws.apache.org
 Cc: [EMAIL PROTECTED]
 Subject: Re: axis SAAJ whitespace problem

 Pratibha,

 Please upgrade to latest Axis 1.3. We've fixed this problem.

 thanks,
 dims

 On 11/7/05, Pratibha Mittal [EMAIL PROTECTED] wrote:
 
 
 
  Hi,
 
 
 
  We are using Axis SAAJ implementation (version 1.1 of axis). I seem to be
  having problem when I am serializing the SOAP envelope object to byte
  stream. It is putting extra whitespaces and line breaks. This is causing
  problem in verification of message when a signed message comes.
 
 
 
  The scenario is like this:
 
 
 
  A web service client signs the soap BODY, and sends to the server. The
  server mainpulates the SOAP header (does not touch the body) using SAAJ java
  APIs. Then the server tries to verify the soap message. For verification,
  when it retrives the soap message, axis needs to recreate the byte stream
  from java SOAP Envelope object since the message has been modified. However
  the message retrieved does not have the the exact same SOAP Body. It has
  extra whitespaces and line breaks and hence the verification fails.
 
 
 
  I was able to isolate problem in a simple test example and I can see that
  the body gets changed when axis recreates the byte stream.
 
 
 
  Is this an Axis bug? Is it fixed in later versions? Has anybody encountered
  similar problem? What are the options I have to solve this problem? Could
  anybody please reply.
 
 
 
  Attached is the test program I used which gives the problem.
 
 
 
  Thanks
 
  Pratibha Mittal
 
  Oracle Corporation
 
 
 
  **
 
 
 
  public static void test() {
 
String str0 = new String(
 
soap:Envelope
  xmlns:xsi=\http://www.w3.org/2001/XMLSchema-instance\;  +
 
xmlns:xsd=\http://www.w3.org/2001/XMLSchema\;  +
 
 
  xmlns:soap=\http://schemas.xmlsoap.org/soap/envelope/\; 
  +
 
 
  xmlns:soapenc=\http://schemas.xmlsoap.org/soap/encoding/\;
   +
 
 
  soap:encodingStyle=\http://schemas.xmlsoap.org/soap/encoding/\;
  \n +
 
  soap:Body\n +
 
ns2:getTime
  xmlns:ns2=\urn:Test:GetTime\\n +
 
   format
  xsi:type=\xsd:String\VALUE/format\n +
 
/ns2:getTime\n +
 
  /soap:Body\n +
 
  /soap:Envelope);
 
byte[] b0 = str0.getBytes();
 
ByteArrayInputStream inputstream = new ByteArrayInputStream(b0);
 
 
try {
 
 
 
  Message message = new Message(inputstream, false, null);
 
  ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
 
  message.writeTo(outputStream);
 
  byte[] b1 = outputStream.toByteArray();
 
  writeByteArray(b1);
 
 
 
  SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
 
  SOAPHeader existingHeader = envelope.getHeader();
 
  if(existingHeader != null) existingHeader.detachNode();
 
  SOAPHeader newHeader = envelope.addHeader();
 
 
 
  ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream();
 
 
  message.writeTo(outputStream2);
 
  byte[] b2 = outputStream2.toByteArray();
 
  writeByteArray(b2);
 
 
 
} catch (Exception e) {
 
  e.printStackTrace();
 
}
 
  }
 
 
 
  public static void writeByteArray(byte[] b) {
 
 
 
try {
 
  long l = (new java.util.Date()).getTime();
 
  String numStr = (new Long(l)).toString();
 
  java.io.BufferedReader br = new java.io.BufferedReader(new
  java.io.InputStreamReader(new java.io.ByteArrayInputStream(b)));
 
  String str = br.readLine();
 
  while(str != null) {
 
  System.out.println(str);
 
  str = br.readLine();
 
  }
 
 
 
} catch (Exception e) {
 
  e.printStackTrace();
 
}
 
System.out.println(\n);
 
  }
 
 
 
 
 
 


 --
 Davanum Srinivas : http://wso2.com/blogs/




--
Davanum Srinivas : http://wso2.com/blogs/


axis SAAJ whitespace problem

2005-11-07 Thread Pratibha Mittal








Hi,



We are using Axis SAAJ
implementation (version 1.1 of axis). I seem to be having problem when I am
serializing the SOAP envelope object to byte stream. It is putting extra
whitespaces and line breaks. This is causing problem in verification of message
when a signed message comes.



The scenario is like this:



A web service client signs
the soap BODY, and sends to the server. The server mainpulates the SOAP header
(does not touch the body) using SAAJ java APIs. Then the server tries to verify
the soap message. For verification, when it retrives the soap message, axis
needs to recreate the byte stream from java SOAP Envelope object since the
message has been modified. However the message retrieved does not have the the
exact same SOAP Body. It has extra whitespaces and line breaks and hence the
verification fails. 



I was able to isolate
problem in a simple test example and I can see that the body gets changed when
axis recreates the byte stream. 



Is this an Axis bug? Is it
fixed in later versions? Has anybody encountered similar problem? What are the
options I have to solve this problem? Could anybody please reply.



Attached is the test program
I used which gives the problem.



Thanks

Pratibha
 Mittal

Oracle Corporation



**



 public static void
test() {

  String str0 = new
String(

  soap:Envelope
xmlns:xsi=\http://www.w3.org/2001/XMLSchema-instance\  +

  xmlns:xsd=\http://www.w3.org/2001/XMLSchema\
 +

  xmlns:soap=\http://schemas.xmlsoap.org/soap/envelope/\
 + 

  xmlns:soapenc=\http://schemas.xmlsoap.org/soap/encoding/\
 +

  soap:encodingStyle=\http://schemas.xmlsoap.org/soap/encoding/\
\n +


soap:Body\n +

 
ns2:getTime xmlns:ns2=\urn:Test:GetTime\\n +

 
format xsi:type=\xsd:String\VALUE/format\n + 

 
/ns2:getTime\n +


/soap:Body\n +


/soap:Envelope);

  byte[] b0 =
str0.getBytes();

  ByteArrayInputStream inputstream
= new ByteArrayInputStream(b0);  

 try {

 

 Message message =
new Message(inputstream, false, null);


ByteArrayOutputStream outputStream = new ByteArrayOutputStream();  


message.writeTo(outputStream); 

 byte[] b1 =
outputStream.toByteArray();

 writeByteArray(b1);



 SOAPEnvelope
envelope = message.getSOAPPart().getEnvelope();

  SOAPHeader
existingHeader = envelope.getHeader();

  if(existingHeader !=
null) existingHeader.detachNode();

 SOAPHeader newHeader
= envelope.addHeader(); 

 

  ByteArrayOutputStream
outputStream2 = new ByteArrayOutputStream();  


message.writeTo(outputStream2); 

 byte[] b2 =
outputStream2.toByteArray();

 writeByteArray(b2);



 } catch (Exception e)
{

  e.printStackTrace();

 }

 }



 public static void
writeByteArray(byte[] b) {

  

  try {

  long l = (new
java.util.Date()).getTime();

  String numStr = (new
Long(l)).toString();


java.io.BufferedReader br = new java.io.BufferedReader(new
java.io.InputStreamReader(new java.io.ByteArrayInputStream(b)));

 String str =
br.readLine();

 while(str != null) {


System.out.println(str);

 str = br.readLine();

 }

 

 } catch (Exception e)
{

 e.printStackTrace();

 }


System.out.println(\n);

 }














Re: axis SAAJ whitespace problem

2005-11-07 Thread Davanum Srinivas
Pratibha,

Please upgrade to latest Axis 1.3. We've fixed this problem.

thanks,
dims

On 11/7/05, Pratibha Mittal [EMAIL PROTECTED] wrote:



 Hi,



 We are using Axis SAAJ implementation (version 1.1 of axis). I seem to be
 having problem when I am serializing the SOAP envelope object to byte
 stream. It is putting extra whitespaces and line breaks. This is causing
 problem in verification of message when a signed message comes.



 The scenario is like this:



 A web service client signs the soap BODY, and sends to the server. The
 server mainpulates the SOAP header (does not touch the body) using SAAJ java
 APIs. Then the server tries to verify the soap message. For verification,
 when it retrives the soap message, axis needs to recreate the byte stream
 from java SOAP Envelope object since the message has been modified. However
 the message retrieved does not have the the exact same SOAP Body. It has
 extra whitespaces and line breaks and hence the verification fails.



 I was able to isolate problem in a simple test example and I can see that
 the body gets changed when axis recreates the byte stream.



 Is this an Axis bug? Is it fixed in later versions? Has anybody encountered
 similar problem? What are the options I have to solve this problem? Could
 anybody please reply.



 Attached is the test program I used which gives the problem.



 Thanks

 Pratibha Mittal

 Oracle Corporation



 **



 public static void test() {

   String str0 = new String(

   soap:Envelope
 xmlns:xsi=\http://www.w3.org/2001/XMLSchema-instance\;  +

   xmlns:xsd=\http://www.w3.org/2001/XMLSchema\;  +


 xmlns:soap=\http://schemas.xmlsoap.org/soap/envelope/\; 
 +


 xmlns:soapenc=\http://schemas.xmlsoap.org/soap/encoding/\;
  +


 soap:encodingStyle=\http://schemas.xmlsoap.org/soap/encoding/\;
 \n +

 soap:Body\n +

   ns2:getTime
 xmlns:ns2=\urn:Test:GetTime\\n +

  format
 xsi:type=\xsd:String\VALUE/format\n +

   /ns2:getTime\n +

 /soap:Body\n +

 /soap:Envelope);

   byte[] b0 = str0.getBytes();

   ByteArrayInputStream inputstream = new ByteArrayInputStream(b0);


   try {



 Message message = new Message(inputstream, false, null);

 ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

 message.writeTo(outputStream);

 byte[] b1 = outputStream.toByteArray();

 writeByteArray(b1);



 SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();

 SOAPHeader existingHeader = envelope.getHeader();

 if(existingHeader != null) existingHeader.detachNode();

 SOAPHeader newHeader = envelope.addHeader();



 ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream();


 message.writeTo(outputStream2);

 byte[] b2 = outputStream2.toByteArray();

 writeByteArray(b2);



   } catch (Exception e) {

 e.printStackTrace();

   }

 }



 public static void writeByteArray(byte[] b) {



   try {

 long l = (new java.util.Date()).getTime();

 String numStr = (new Long(l)).toString();

 java.io.BufferedReader br = new java.io.BufferedReader(new
 java.io.InputStreamReader(new java.io.ByteArrayInputStream(b)));

 String str = br.readLine();

 while(str != null) {

 System.out.println(str);

 str = br.readLine();

 }



   } catch (Exception e) {

 e.printStackTrace();

   }

   System.out.println(\n);

 }








--
Davanum Srinivas : http://wso2.com/blogs/