Don't know what changed in these three days, but, it is working now :) ++Vamsi
On Sat, May 24, 2008 at 4:49 PM, Vamsavardhana Reddy <[EMAIL PROTECTED]> wrote: > Attached generics-problem.patch to recreate the problem. > > ++Vamsi > > > On Sat, May 24, 2008 at 4:30 PM, Vamsavardhana Reddy <[EMAIL PROTECTED]> > wrote: > >> >> >> On Fri, May 23, 2008 at 11:53 PM, Raymond Feng <[EMAIL PROTECTED]> >> wrote: >> >>> Hi, >>> >>> It's not clear from the SCA spec how generics impacts the interface >>> mapping. We need some clarifications there. >>> >>> The JAXWS 2.1 spec uses the erased type and only honor the type argument >>> in Collection. At this moment, Tuscany supports the following case: >>> >>> @Remotable >>> public interface MyHelloService extends HelloService<String> { >>> } >>> >>> And use MyHelloService as the service interface for HelloServiceImpl. >> >> Hmm... I tried this part and it does not seem to work. >> SCADomain.newInstance() is throwing an exception. Stack trace given below: >> >> org.osoa.sca.ServiceRuntimeException: >> org.osoa.sca.ServiceRuntimeException: >> org.apache.tuscany.sca.core.assembly.ActivationException: >> java.lang.NullPointerException >> at >> org.apache.tuscany.sca.host.embedded.SCADomain.createNewInstance(SCADomain.java:276) >> at >> org.apache.tuscany.sca.host.embedded.SCADomain.newInstance(SCADomain.java:70) >> at >> org.apache.tuscany.sca.itest.DatabindingTestCase.setUp(DatabindingTestCase.java:39) >> at junit.framework.TestCase.runBare(TestCase.java:132) >> at junit.framework.TestResult$1.protect(TestResult.java:110) >> at junit.framework.TestResult.runProtected(TestResult.java:128) >> at junit.framework.TestResult.run(TestResult.java:113) >> at junit.framework.TestCase.run(TestCase.java:124) >> at junit.framework.TestSuite.runTest(TestSuite.java:232) >> at junit.framework.TestSuite.run(TestSuite.java:227) >> at >> org.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java:35) >> at >> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38) >> at >> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) >> Caused by: org.osoa.sca.ServiceRuntimeException: >> org.apache.tuscany.sca.core.assembly.ActivationException: >> java.lang.NullPointerException >> at >> org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain.init(DefaultSCADomain.java:239) >> at >> org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain.<init>(DefaultSCADomain.java:113) >> at >> org.apache.tuscany.sca.host.embedded.SCADomain.createNewInstance(SCADomain.java:242) >> ... 16 more >> Caused by: org.apache.tuscany.sca.core.assembly.ActivationException: >> java.lang.NullPointerException >> at >> org.apache.tuscany.sca.core.assembly.CompositeActivatorImpl.activate(CompositeActivatorImpl.java:986) >> at >> org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain.init(DefaultSCADomain.java:237) >> ... 18 more >> Caused by: java.lang.NullPointerException >> at >> org.apache.tuscany.sca.interfacedef.wsdl.impl.WSDLOperationIntrospectorImpl.getOperation(WSDLOperationIntrospectorImpl.java:212) >> at >> org.apache.tuscany.sca.interfacedef.wsdl.java2wsdl.Java2WSDLHelper.createWSDLInterfaceContract(Java2WSDLHelper.java:246) >> at >> org.apache.tuscany.sca.binding.ws.axis2.Axis2ReferenceBindingProvider.<init>(Axis2ReferenceBindingProvider.java:56) >> at >> org.apache.tuscany.sca.binding.ws.axis2.Axis2BindingProviderFactory.createReferenceBindingProvider(Axis2BindingProviderFactory.java:66) >> at >> org.apache.tuscany.sca.binding.ws.axis2.Axis2BindingProviderFactory.createReferenceBindingProvider(Axis2BindingProviderFactory.java:46) >> at >> org.apache.tuscany.sca.provider.DefaultProviderFactoryExtensionPoint$LazyBindingProviderFactory.createReferenceBindingProvider(DefaultProviderFactoryExtensionPoint.java:230) >> at >> org.apache.tuscany.sca.core.assembly.CompositeActivatorImpl.addReferenceBindingProvider(CompositeActivatorImpl.java:262) >> at >> org.apache.tuscany.sca.core.assembly.CompositeActivatorImpl.activate(CompositeActivatorImpl.java:142) >> at >> org.apache.tuscany.sca.core.assembly.CompositeActivatorImpl.activate(CompositeActivatorImpl.java:982) >> ... 19 more >> >> >>> >>> I don't think it's wise to try to cover other variations before we get it >>> clarified by the spec. >>> >>> Thanks, >>> Raymond >>> -------------------------------------------------- >>> From: "Vamsavardhana Reddy" <[EMAIL PROTECTED]> >>> Sent: Friday, May 23, 2008 10:42 AM >>> To: <tuscany-dev@ws.apache.org> >>> Subject: TransformationException when using java interface definition >>> with generics >>> >>> >>> Can someone point to me what I am doing wrong or if it is a problem in >>>> Tuscany? Details follow... >>>> >>>> I have the following service interface: >>>> @Remotable >>>> public interface HelloService<E> { >>>> public E getGreetings(E name); >>>> } >>>> -------- >>>> The following is the service implementation: >>>> @Service(HelloService.class) >>>> public class HelloServiceImpl implements HelloService<String> { >>>> >>>> public String getGreetings(String name) { >>>> return "Hello "+name; >>>> } >>>> } >>>> -------- >>>> The following is the client interface that invokes the service: >>>> public interface HelloServiceClient<E> { >>>> E getGreetingsForward(E name); >>>> } >>>> -------- >>>> The following is the client implementation: >>>> @Service(HelloServiceClient.class) >>>> public class HelloServiceClientImpl implements >>>> HelloServiceClient<String> { >>>> >>>> private HelloService<String> service; >>>> >>>> @Reference >>>> public void setHelloService(HelloService<String> service) { >>>> this.service = service; >>>> } >>>> >>>> public String getGreetingsForward(String name) { >>>> return service.getGreetings(name); >>>> } >>>> } >>>> -------- >>>> I have a HelloService component and two HelloServiceClient components in >>>> my >>>> composite (given below): >>>> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" >>>> xmlns:wsdli="http://www.w3.org/2006/01/wsdl-instance" >>>> name="HelloService"> >>>> >>>> <!-- Clients to test the service --> >>>> <component name="HelloServiceClientWSComponent"> >>>> <implementation.java >>>> class="org.apache.tuscany.sca.itest.impl.HelloServiceClientImpl" /> >>>> <reference name="helloService"> >>>> <interface.java >>>> interface="org.apache.tuscany.sca.itest.HelloService"/> >>>> <binding.ws uri="http://localhost:8080/hs-ep1"/> >>>> </reference> >>>> </component> >>>> <component name="HelloServiceClientSCAComponent"> >>>> <implementation.java >>>> class="org.apache.tuscany.sca.itest.impl.HelloServiceClientImpl" /> >>>> <reference name="helloService" target="HelloServiceComponent"> >>>> <binding.sca/> >>>> </reference> >>>> </component> >>>> >>>> <!-- Components used to implement the services --> >>>> <component name="HelloServiceComponent"> >>>> <implementation.java >>>> class="org.apache.tuscany.sca.itest.impl.HelloServiceImpl"/> >>>> <service name="HelloService"> >>>> <interface.java >>>> interface="org.apache.tuscany.sca.itest.HelloService"/> >>>> <binding.ws uri="http://localhost:8080/hs-ep1"/> >>>> <binding.sca/> >>>> </service> >>>> </component> >>>> </composite> >>>> -------- >>>> The following is the code I am using to invoke the service via client >>>> components: >>>> domain = SCADomain.newInstance("hello.composite"); >>>> String name = "Me <String> SCA"; >>>> HelloServiceClient<String> helloServiceClient = >>>> domain.getService(HelloServiceClient.class, >>>> "HelloServiceClientSCAComponent"); >>>> String resp = helloServiceClient.getGreetingsForward(name); >>>> System.out.println(resp); >>>> >>>> name = "Me <String> WS"; >>>> helloServiceClient = domain.getService(HelloServiceClient.class, >>>> "HelloServiceClientWSComponent"); >>>> resp = helloServiceClient.getGreetingsForward(name); >>>> System.out.println(resp); >>>> -------- >>>> >>>> It works fine when I invoke the service using the client component that >>>> uses >>>> SCA binding to connect to the service. I get the following exception >>>> when I >>>> use the client component that uses WS binding. >>>> >>>> May 23, 2008 11:04:50 PM >>>> >>>> org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceInOutSyncMessageReceiver >>>> invokeBusinessLogic >>>> SEVERE: org.apache.tuscany.sca.databinding.TransformationException: No >>>> path >>>> found for the transformation: org.apache.axiom.om.OMElement->null >>>> org.osoa.sca.ServiceRuntimeException: >>>> org.apache.tuscany.sca.databinding.TransformationException: No path >>>> found >>>> for the transformation: org.apache.axiom.om.OMElement->null >>>> at >>>> >>>> org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:119) >>>> at >>>> >>>> org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:85) >>>> at >>>> >>>> org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:79) >>>> at >>>> >>>> org.apache.tuscany.sca.core.assembly.RuntimeWireImpl.invoke(RuntimeWireImpl.java:138) >>>> at >>>> >>>> org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceProvider.invokeTarget(Axis2ServiceProvider.java:669) >>>> at >>>> >>>> org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceInOutSyncMessageReceiver.invokeBusinessLogic(Axis2ServiceInOutSyncMessageReceiver.java:68) >>>> at >>>> >>>> org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:42) >>>> at >>>> >>>> org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96) >>>> at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145) >>>> at >>>> >>>> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275) >>>> at >>>> org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120) >>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) >>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) >>>> at >>>> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) >>>> at >>>> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) >>>> at >>>> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) >>>> at >>>> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) >>>> at >>>> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) >>>> at org.mortbay.jetty.Server.handle(Server.java:324) >>>> at >>>> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) >>>> at >>>> >>>> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842) >>>> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648) >>>> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) >>>> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) >>>> at >>>> >>>> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) >>>> at org.apache.tuscany.sca.core.work.Jsr237Work.run(Jsr237Work.java:63) >>>> at >>>> >>>> org.apache.tuscany.sca.core.work.ThreadPoolWorkManager$DecoratingWork.run(ThreadPoolWorkManager.java:221) >>>> at >>>> >>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) >>>> at >>>> >>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) >>>> at java.lang.Thread.run(Thread.java:595) >>>> Caused by: org.apache.tuscany.sca.databinding.TransformationException: >>>> No >>>> path found for the transformation: org.apache.axiom.om.OMElement->null >>>> at >>>> >>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.getTransformerChain(MediatorImpl.java:162) >>>> at >>>> >>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:67) >>>> at >>>> >>>> org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:181) >>>> at >>>> >>>> org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:45) >>>> at >>>> >>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:79) >>>> at >>>> >>>> org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.transform(DataTransformationInterceptor.java:186) >>>> at >>>> >>>> org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:76) >>>> at >>>> >>>> org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:110) >>>> ... 29 more >>>> >>>> >> >