[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