dims 2002/06/04 13:06:59
Modified: java/src/org/apache/axis/client Call.java
Log:
- Make sure that getParamList is called from only one spot.
- Fix possible NullPointerException in getParamList
- Fix getParamList such that if RPCParam already exists in the object array it is
used as-is.
Revision Changes Path
1.127 +17 -10 xml-axis/java/src/org/apache/axis/client/Call.java
Index: Call.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Call.java,v
retrieving revision 1.126
retrieving revision 1.127
diff -u -r1.126 -r1.127
--- Call.java 31 May 2002 19:08:06 -0000 1.126
+++ Call.java 4 Jun 2002 20:06:59 -0000 1.127
@@ -1172,14 +1172,14 @@
throw new AxisFault( JavaUtils.getMessage("noOperation00") );
try {
return this.invoke(operationName.getNamespaceURI(),
- operationName.getLocalPart(), getParamList(params));
+ operationName.getLocalPart(), params);
}
catch( AxisFault af) {
throw af;
}
catch( Exception exp ) {
//if ( exp instanceof AxisFault ) throw (AxisFault) exp ;
-
+ exp.printStackTrace();
throw new AxisFault( JavaUtils.getMessage("errorInvoking00", "\n" +
exp) );
}
}
@@ -1197,7 +1197,7 @@
*/
public void invokeOneWay(Object[] params) {
try {
- invoke( getParamList(params) );
+ invoke( params );
}
catch( Exception exp ) {
throw new JAXRPCException( exp.toString() );
@@ -1333,7 +1333,6 @@
// If we never set-up any names... then just return what was passed in
//////////////////////////////////////////////////////////////////////
- log.debug( "getParamList number of params: " + params.length);
log.debug( "operation=" + operation);
if(operation != null) log.debug("operation.getNumParams()="
+operation.getNumParams());
if ( operation.getNumParams() == 0 ) return( params );
@@ -1343,11 +1342,13 @@
/////////////////////////////////////////////////////////////////////
numParams = operation.getNumInParams();
- if ( numParams != params.length )
+ if ( params == null || numParams != params.length )
throw new JAXRPCException(
JavaUtils.getMessage("parmMismatch00",
"" + params.length, "" + numParams) );
+ log.debug( "getParamList number of params: " + params.length);
+
// All ok - so now produce an array of RPCParams
//////////////////////////////////////////////////
Vector result = new Vector();
@@ -1360,14 +1361,20 @@
continue ;
QName paramQName = param.getQName();
- RPCParam p = new RPCParam(paramQName.getNamespaceURI(),
+ RPCParam rpcParam = null;
+ Object p = params[j++];
+ if(p instanceof RPCParam) {
+ rpcParam = (RPCParam)p;
+ } else {
+ rpcParam = new RPCParam(paramQName.getNamespaceURI(),
paramQName.getLocalPart(),
- params[j++] );
+ p );
+ }
// Attach the ParameterDescription to the RPCParam
// so that the serializer can use the (javaType, xmlType)
// information.
- p.setParamDesc(param);
- result.add( p );
+ rpcParam.setParamDesc(param);
+ result.add( rpcParam );
}
return( result.toArray() );
@@ -1607,7 +1614,7 @@
throw new AxisFault(JavaUtils.getMessage("mustSpecifyParms"));
}
- RPCElement body = new RPCElement(namespace, method, args);
+ RPCElement body = new RPCElement(namespace, method, getParamList(args));
Object ret = invoke( body );