[kepler-dev] problem with type name mapping in WebService actor
Karen L Schuchardt
Karen.Schuchardt at pnl.gov
Tue May 22 10:27:56 PDT 2007
Hi,
I had an old workflow that used the WebService actor. At one point I
had added support for ports of type unsignedByte[]. The actor is not
working correctly with the latest version of kepler. I don't know when
it broke as I have not updated in quite a long time. Digging into the
code a bit, I found that the methods
_setObjectArray and _sendOutput no longer match on the web service types
and quietly fail.
For example, in _setObjecArray, the line of code
else if (portPtr.getType().toString().equals("{unsignedByte}"))...
fails to match because the type string is now actually
"arrayType(unsignedByte)"
The analogous error occurs in _sendOutput.
The type appears to be supplied to the _createPort method and their are
some notes in the vicinity indicating this code was changed:
/* Original code
String baseTypeStr = _getArrayBaseType(arrTypeNode);
*/
/* This code updated by Zhiming Zhao*/
String baseTypeStr =(String)(
(org.apache.axis.wsdl.symbolTable.Parameter)parameters.returnParam).
getType().getRefType().getQName().getLocalPart()+"[]";
QName nodeQname= (
(org.apache.axis.wsdl.symbolTable.Parameter)parameters.returnParam).getType().getRefType().getQName();
/* End */
If I hack the code to also look for the new type name, the web service
actor works for me. I only have an example using the byte arrays but
presumably all of the array types are affected by this.
Has anybody else noticed this problem? I am using java 1.5 and the same
version of the axis client that is shipped with kepler. I'd be willing
to send fixed code but I'm not sure what the preferred fix would be.
Let me know if I can be of more help.
Karen
More information about the Kepler-dev
mailing list