You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ax...@ws.apache.org on 2004/10/15 19:52:54 UTC

[jira] Updated: (AXIS-1537) getPreviousSibling results in NullPointerException on Envelopes

The following issue has been updated:

    Updater: Davanum Srinivas (mailto:davanum@gmail.com)
       Date: Fri, 15 Oct 2004 10:51 AM
    Changes:
             Component changed to SAAJ
    ---------------------------------------------------------------------
For a full history of the issue, see:

  http://issues.apache.org/jira/browse/AXIS-1537?page=history

---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/AXIS-1537

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: AXIS-1537
    Summary: getPreviousSibling results in NullPointerException on Envelopes
       Type: Bug

     Status: Unassigned
   Priority: Minor

    Project: Axis
 Components: 
             SAAJ
   Versions:
             beta-3

   Assignee: 
   Reporter: Michael Theroux

    Created: Tue, 31 Aug 2004 1:03 PM
    Updated: Fri, 15 Oct 2004 10:51 AM
Environment: Windows 2000, JDK 1.3

Description:
I am attempting to run an XSLT directly against a result SOAPEnvelope and have hit a couple of issues.

One issue is that SOAPEnvelope.getPreviousSibling() will result in a NullPointerException.  Below is a code snippet:

/*
 * Copyright 2001-2004 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

import javax.xml.namespace.QName;

public class Test
{
   public static void main(String [] args) {
       try {
           String endpoint =
                    "http://webservices.sonicsw.com:8080/axis/CreditCheck.jws";

           Service  service = new Service();
           Call     call    = (Call) service.createCall();

           call.setTargetEndpointAddress( new java.net.URL(endpoint) );
           call.setOperationName(new QName("http://webservices.sonicsw.com:8080/axis/CreditCheck.jws", "checkCredit") );

           // Call to addParameter/setReturnType as described in user-guide.html
           call.addParameter("custid",
                             org.apache.axis.Constants.XSD_STRING,
                             javax.xml.rpc.ParameterMode.IN);
           call.addParameter("amount",
                             org.apache.axis.Constants.XSD_FLOAT,
                             javax.xml.rpc.ParameterMode.IN);
           call.setReturnType(org.apache.axis.Constants.XSD_BOOLEAN);

           Boolean ret = (Boolean) call.invoke( new Object[] { "1234", new Float( 1.24 ) } );
           org.w3c.dom.Node n = call.getResponseMessage().getSOAPEnvelope();
           n.getPreviousSibling();
/*           Node parentNode = n.getParentNode();
           if( parentNode == null )
               System.err.println( "PARENT NODE IS NULL!" );*/

//           String test = com.sonicsw.xqimpl.script.Util.getElementAsString( (org.w3c.dom.Element)n, true );
           String test = org.apache.axis.utils.DOM2Writer.nodeToString( n, true );
           System.out.println("Resulting XML: " + test );

       } catch (Exception e) {
           e.printStackTrace();
           System.err.println(e.toString());
       }
   }
}

n.getPreviousSibling() throws a NullPointerException.

A workaround is to call getAsDOM() on the Envelope.  

However, performance may make this undesireable.  getAsDOM() will cause Axis's object model to be serialized as a string, then a subsequent deserialization will occur to create a native DOM because of performanceit results in a serialization of Axis's DOM structure to a string, then another deserialization occurs to create a DOM in your parser (such as Xerces).


---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira