IS 6.5 SP2 - Clast Cast Exception from xmlNodeToDocument

After applying IS 6.5 SP2, we noticed that we were receiving ClassCastExceptions from the pub.xml:xmlNodeToDocument service when a value for its nsDecls parameter was mapped implicitly. Note that this implicit mapping was done intentionally to use a consistent set of namespace declarations throughout a service.

The steps to reproduce this issue are relatively simple:

  1. Create node using pub.xml:xmlStringToXmlNode. The xml string used in my example was a soap request from which I wanted to extract a wsse:UsernameToken.
  2. Use pub.xml:queryXmlNode to extract a portion of a document in a separate node (specify nsDecls parameter with several prefix and ns declarations)
  3. Use pub.xml:xmlNodeToDocument to attempt to create document from node. Use implicitly assigned value for nsDecls populated in step 2 above
  4. Step 3 will throw ClassCastException (see stacktrace below).

A workaround is to drop nsDecls after step 2.

My assertion is that this should not fail or if it does fail, it should throw an exception more meaningful than a CCE.

Any ideas on why xmlNodeToDocument would throw a class cast exception when nsDecls was populated?

Mark

com.wm.app.b2b.server.ServiceException: java.lang.ClassCastException  
at pub.xml.xmlNodeToDocument(xml.java:594)  
at sun.reflect.GeneratedMethodAccessor69.invoke(Unknown Source)  
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
at java.lang.reflect.Method.invoke(Method.java:324)  
at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:322)  
at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:612)  
at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:44)  
at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:226)  
at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)  
at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:198)  
at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:39)  
at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:411)  
at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:521)  
at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:369)  
at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:246)  
at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:168)  
at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:324)  
at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:581)  
at com.wm.lang.flow.FlowState.step(FlowState.java:438)  
at com.wm.lang.flow.FlowState.invoke(FlowState.java:403)  
at com.wm.app.b2b.server.FlowSvcImpl.baseInvoke(FlowSvcImpl.java:982)  
at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:612)  
at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:44)  
at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:226)  
at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)  
at com.wm.app.b2b.server.ACLManager.process(ACLMan 

A fix for this was released last month as part of IS_6-5_SP2_WebSvcsXML_Fix1. A subsequent fix (IS_6-5_SP2_WebSvcsXML_Fix1) was released last Friday (March 23, 2007) but can not yet be downloaded from Advantage.

http://advantage.webmethods.com/article/?id=1614014793

Mark