[
https://issues.apache.org/jira/browse/TUSCANY-1341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Simon Nash updated TUSCANY-1341:
--------------------------------
Attachment: jira1341-patch3
This is patch 3. It adds two new methods to RuntimeWire and RuntimeWireImpl,
and one new method to InterfaceContract and InterfaceContractImpl. It also
fixes bugs in DataBindingRuntimeWireProcessor and InterfaceContractMapperImpl.
I have rebuilt the trunk with this patch and everything seems OK. The code
that uses these new methods and requires these bug fixes will be added in the
next stages of this multi-part patch.
Here is a brief description of the new methods on RuntimeWire:
addCallbackInvocationChain(InvocationChain) adds a callback invocation chain to
the wire and creates a cached map entry for the chain. It is equivalent to
getCallbackInvocationChains().add(InvocationChain) except that
addCallbackInvocationChain(InvocationChain) updates the cached map and
getCallbackInvocationChains().add(InvocationChain) does not.
getCallbackInvocationMap() returns the cached map.
Here is a brief description of the new method on InterfaceContract:
makeUnidirectional(boolean) returns a unidirectional interface contract for a
forward interface (if false is passed) or a callback interface (if true is
passed).
The bug fixes are as follows:
In DataBindingRuntimeWireProcessor, return false if either the source or target
type is null.
In InterfaceContractMapperImpl, copy the temporary FIXME code from the forward
call case to the callback case as well.
> Callback over WS Binding is not functioning various issues
> ----------------------------------------------------------
>
> Key: TUSCANY-1341
> URL: https://issues.apache.org/jira/browse/TUSCANY-1341
> Project: Tuscany
> Issue Type: Bug
> Components: Java SCA Misc Binding Extensions
> Affects Versions: Java-SCA-0.90
> Reporter: Lou Amodeo
> Attachments: jira1341-patch1, jira1341-patch2, jira1341-patch3
>
>
> The callback function using WS bindings doesnt appear to be operation. So
> far I have :
> 1) WebServiceBindingProcessor.java
> - The resolve() method does not setup the callbackInterface on its
> InterfaceContract resulting in NPE.
> (i.e. interfaceContract.setCallbackInterface(wsdlCallbackInterface); )
> [6/11/07 13:33:02:220 EDT] 00000025 SystemOut O ... 87 more
> [6/11/07 13:33:02:220 EDT] 00000025 SystemOut O Caused by:
> java.lang.NullPointerException
> at
> org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl.map(InterfaceContractMapperImpl.java:246)
> at
> org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.createWires(CompositeActivatorImpl.java:337)
> at
> org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.createRuntimeWires(CompositeActivatorImpl.java:269)
> at
> org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.activate(CompositeActivatorImpl.java:580)
> at
> org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain$DomainCompositeHelper.addComposite(EmbeddedSCADomain.java:124)
> at
> com.ibm.ws.sca2.tuscany.util.TuscanyInterfaceImpl.startModule(TuscanyInterfaceImpl.java:223)
> at
> com.ibm.ws.soa.sca.admin.runtime.tuscany.SCATuscanyRuntimeHandlerImpl.startModule(SCATuscanyRuntimeHandlerImpl.java:82)
> at
> com.ibm.ws.soa.sca.admin.runtime.impl.SCARuntimeImpl.start(SCARuntimeImpl.java:366)
> at
> com.ibm.ws.soa.sca.admin.runtime.impl.SCARuntimeImpl.stateChanged(SCARuntimeImpl.java:286)
> at
> com.ibm.ws.runtime.component.ApplicationMgrImpl.stateChanged(ApplicationMgrImpl.java:1264)
> at
> com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectEvent(DeployedApplicationImpl.java:1112)
> at
> com.ibm.ws.runtime.component.DeployedModuleImpl.setState(DeployedModuleImpl.java:206)
> at
> com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:566)
> at
> com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:814)
> at
> com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:965)
> at
> com.ibm.ws.runtime.component.ApplicationMgrImpl$1.run(ApplicationMgrImpl.java:1495)
> at
> com.ibm.ws.security.auth.ContextManagerImpl.runAs(ContextManagerImpl.java:3924)
> at
> com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:4001)
> at
> com.ibm.ws.security.core.SecurityContext.runAsSystem(SecurityContext.java:245)
> at
> com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:1500)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:615)
> at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:62)
> at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:615)
> at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:265)
> at
> javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1089)
> at
> javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:971)
> at
> com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:231)
> at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:238)
> at
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:833)
> at
> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:802)
> at
> com.ibm.ws.management.AdminServiceImpl$1.run(AdminServiceImpl.java:1080)
> at
> com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)
> at
> com.ibm.ws.management.AdminServiceImpl.invoke(AdminServiceImpl.java:973)
> at
> com.ibm.ws.management.commands.AdminServiceCommands$InvokeCmd.execute(AdminServiceCommands.java:251)
> at
> com.ibm.ws.console.core.mbean.MBeanHelper.invoke(MBeanHelper.java:239)
> at
> com.ibm.ws.console.appdeployment.ApplicationDeploymentCollectionAction.execute(ApplicationDeploymentCollectionAction.java:536)
> at
> org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
> at
> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
> at
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1486)
> at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:528)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
> at
> com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:995)
> at
> com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:930)
> at
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:118)
> at
> com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
> at
> com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:761)
> at
> com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:673)
> at
> com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:498)
> at
> com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:464)
> at
> com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:308)
> at
> org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1070)
> at
> org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:273)
> at
> org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
> at
> org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:319)
> at
> com.ibm.isclite.container.controller.InformationController.processForwardConfig(InformationController.java:159)
> at
> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
> at
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1486)
> at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:528)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
> at
> com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:995)
> at
> com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:930)
> at
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145)
> at
> com.ibm.ws.console.core.servlet.WSCUrlFilter.setUpCommandAssistence(WSCUrlFilter.java:792)
> at
> com.ibm.ws.console.core.servlet.WSCUrlFilter.continueStoringTaskState(WSCUrlFilter.java:363)
> at
> com.ibm.ws.console.core.servlet.WSCUrlFilter.doFilter(WSCUrlFilter.java:229)
> at
> com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
>
> If you set the callbackInterface above and proceeed you hit the following:
> 2) Axis2ReferenceBindingProvider.java
> - I dont think this requires a wire as this provider already knows abouts its
> InterfaceContract.
> wire is null resulting in a NPE
> private Operation findCallbackOperation(RuntimeWire wire) {
> /*
> InterfaceContract contract = wire.getTarget().getInterfaceContract();
> // TODO:
>
> // which
>
> // end? LAA Hack */
>
> InterfaceContract contract = this.getBindingInterfaceContract(); //
> LAA hack
> List callbackOperations =
> contract.getCallbackInterface().getOperations();
> if (callbackOperations.size() != 1) {
> throw new RuntimeException("Can only handle one callback
> operation");
> }
> Operation callbackOperation = (Operation)callbackOperations.get(0);
> return callbackOperation;
> }
> If you obtain contract directly using getBindingInterfaceContract() you
> proceed and get the following:
> 3) DataBindingRuntimeProcessor
> Caused by: java.lang.NullPointerException
> at
> org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.isTransformationRequired(DataBindingRuntimeWireProcessor.java:51)
> at
> org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.isTransformationRequired(DataBindingRuntimeWireProcessor.java:72)
> at
> org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.isTransformationRequired(DataBindingRuntimeWireProcessor.java:99)
> at
> org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.process(DataBindingRuntimeWireProcessor.java:116)
> at
> org.apache.tuscany.sca.core.invocation.ExtensibleWireProcessor.process(ExtensibleWireProcessor.java:40)
> at
> org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.createWires(CompositeActivatorImpl.java:348)
> at
> org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.createRuntimeWires(CompositeActivatorImpl.java:269)
> at
> org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.activate(CompositeActivatorImpl.java:580)
> ... 14 more
> [6/13/07 9:54:51:646 EDT] 00000018 SystemOut O at
> org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.activate(CompositeActivatorImpl.java:582)
> [6/13/07 9:54:51:646 EDT] 00000018 SystemOut O at
> org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain$DomainCompositeHelper.addComposite(EmbeddedSCADomain.java:124)
> [6/13/07 9:54:51:646 EDT] 00000018 SystemOut O at
> com.ibm.ws.sca2.tuscany.util.TuscanyInterfaceImpl.startModule(TuscanyInterfaceImpl.java:223)
> [6/13/07 9:54:51:646 EDT] 00000018 SystemOut O at
> com.ibm.ws.soa.sca.admin.runtime.tuscany.SCATuscanyRuntimeHandlerImpl.startModule(SCATuscanyRuntimeHandlerImpl.java:82)
> [6/13/07 9:54:51:646 EDT] 00000018 SystemOut O at
> com.ibm.ws.soa.sca.admin.runtime.impl.SCARuntimeImpl.start(SCARuntimeImpl.java:366)
> [6/13/07 9:54:51:646 EDT] 00000018 SystemOut O ... 10 more
> [6/13/07 9:54:51:646 EDT] 00000018 SystemOut O Caused by:
> java.lang.NullPointerException
> at
> org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.isTransformationRequired(DataBindingRuntimeWireProcessor.java:51)
> at
> org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.isTransformationRequired(DataBindingRuntimeWireProcessor.java:72)
> at
> org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.isTransformationRequired(DataBindingRuntimeWireProcessor.java:99)
> at
> org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.process(DataBindingRuntimeWireProcessor.java:116)
> at
> org.apache.tuscany.sca.core.invocation.ExtensibleWireProcessor.process(ExtensibleWireProcessor.java:40)
> at
> org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.createWires(CompositeActivatorImpl.java:348)
> at
> org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.createRuntimeWires(CompositeActivatorImpl.java:269)
> at
> org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.activate(CompositeActivatorImpl.java:580)
> at
> org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain$DomainCompositeHelper.addComposite(EmbeddedSCADomain.java:124)
>
> 4) I see this comment in Axis2CallbackInvocationHandler which is not being
> executed anyway:
> public Axis2CallbackInvocationHandler(MessageFactory messageFactory,
> RuntimeWire wire) {
> super(messageFactory, false);
> this.wire = wire;
> }
> public Object invoke(Operation operation, Object[] args, LinkedList<URI>
> callbackRoutingChain) throws Throwable {
> // Object targetAddress = callbackRoutingChain.removeFirst();
> // if (targetAddress == null) {
> // throw new AssertionError("Popped a null from address from
> stack");
> // }
> // //TODO optimize as this is slow in local invocations
> // Map<Operation, InvocationChain> sourceCallbackInvocationChains =
> // wire.getCallbackInvocationChains();
> // InvocationChain chain =
> sourceCallbackInvocationChains.get(operation);
> // chain.g
> // TargetInvoker invoker = chain.getTargetInvoker();
> // return invoke(chain, invoker, args, null, callbackRoutingChain,
> null);
> throw new UnsupportedOperationException("not yet implemented");
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]