Let me try taking a look at TUSCANY-1045 and see if I can help.
-- Luciano Resende http://people.apache.org/~lresende On 1/15/07, Raymond Feng <[EMAIL PROTECTED]> wrote:
FYI: A similar issue was reported in JIRA TUSCANY-1045: http://issues.apache.org/jira/browse/TUSCANY-1045 Thanks, Raymond ----- Original Message ----- From: "Jim Marino" <[EMAIL PROTECTED]> To: <tuscany-user@ws.apache.org> Sent: Monday, January 15, 2007 4:06 AM Subject: Re: NPE if we define a sca java component via side file, meanwhile the implemetnation class impements multiple interfaces. > On Jan 14, 2007, at 9:45 PM, lee zhenghui wrote: > >> hi, >> I am writing a sample to test the feature described in section 2.2.5 >> of SCA_ClientAndImplementationModeforJava_v96.doc. I am describing the >> details of my test sample here: >> 1. Create two component -- Customer and CustomerInfo. >> 2. Make sure the implementation class of CustomerInfo will >> implements more than two inferfaces. >> 3. Define ComponentType via @Service etc. make sure it works >> fine. >> 4. remove @Service descriptions in source code, and replace it >> with a ComponentType side file. >> Result: >> I got a exception: >> java.lang.NullPointerException >> at >> org.apache.tuscany.core.implementation.java.JavaComponentBuilder.build >> (JavaComponentBuilder.java:120) >> at >> org.apache.tuscany.core.implementation.java.JavaComponentBuilder.build >> (JavaComponentBuilder.java:1) >> at org.apache.tuscany.core.builder.BuilderRegistryImpl.build >> (BuilderRegistryImpl.java:107) >> at >> org.apache.tuscany.core.implementation.composite.AbstractCompositeBuil >> der.build(AbstractCompositeBuilder.java :35) >> at >> org.apache.tuscany.core.implementation.composite.CompositeBuilder.buil >> d(CompositeBuilder.java:44) >> at org.apache.tuscany.core.builder.BuilderRegistryImpl.build >> (BuilderRegistryImpl.java:107) >> at org.apache.tuscany.core.deployer.DeployerImpl.build >> (DeployerImpl.java:142) >> at org.apache.tuscany.core.deployer.DeployerImpl.deploy >> (DeployerImpl.java:97) >> at org.apache.tuscany.core.launcher.LauncherImpl.bootApplication >> (LauncherImpl.java:215) >> at org.apache.tuscany.test.SCATestCase.setUp(SCATestCase.java:88) >> at tuscany.sample.sync.customer.CustomerImplTest.setUp >> (CustomerImplTest.java:16) >> at junit.framework.TestCase.runBare (TestCase.java:125) >> at junit.framework.TestResult$1.protect(TestResult.java:106) >> at junit.framework.TestResult.runProtected(TestResult.java:124) >> at junit.framework.TestResult.run(TestResult.java:109) >> at junit.framework.TestCase.run(TestCase.java:118) >> at junit.framework.TestSuite.runTest(TestSuite.java:208) >> at junit.framework.TestSuite.run(TestSuite.java:203) >> at >> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run ( >> JUnit3TestReference.java:128) >> 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) >> >> I am attaching my sample PI zip file here, Does anyone know whether this >> is a runtime issue, or I missing something in my test sample? >> > Hi, > > This is a problem with both the code and the SCA Java specification. The > spec issue is that we have not defined all of the equivalent component > type extensions for Java annotations. In this particular case it is > support for the @Constructor annotation. If you are interested, we could > work on a proposal to the spec group for adding this into the component > type side file. > > In terms of the code, it looks as if the side file introspection process > does not create a ConstructorDefinition, which basically tells the > builder which constructor to use during instantiation. If we were to > support selection of a constructor in a side file, we would have to > provide a mechanism that would first allow a user to specify the > constructor to use in XML (by parameter type). If no constructor was > specified, we would need to determine this heuristically. The Java > annotation introspection mechanism does this, which you can see in > org.apache.tuscany.core.implementation.processor.HeuristicPojoProcessor. > > Supporting constructor selection in the side file as described above is > quite a bit of work. If you are interested, I can help point you to > places in the code to get started. However, this may be more than what > you need to get past the issue you are facing. If you just want to get > past the NPE, a simple fix would be to create a ConstructorDefinition and > have it point to the default no-args constructor of the implementation. I > would do this in JavaComponentTypeLoader.loadFromSideFile() after the > component type as been populated with side file info and before it is > returned from this method. > > Jim > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]