Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Cannot Reproduce
-
beta-3
-
None
-
None
-
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).
Attachments
Attachments
Issue Links
- duplicates
-
AXIS-1427 sibling method do not work
- Closed