You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by lee zhenghui <le...@gmail.com> on 2007/01/15 06:45:52 UTC
NPE if we define a sca java component via side file, meanwhile the implemetnation class impements multiple interfaces.
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.AbstractCompositeBuilder.build
(AbstractCompositeBuilder.java:35)
at
org.apache.tuscany.core.implementation.composite.CompositeBuilder.build(
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?
--
Thanks & Best Wishes
-----------------------------------
Zhenghui Li(������)
Re: NPE if we define a sca java component via side file, meanwhile the implemetnation class impements multiple interfaces.
Posted by Luciano Resende <lu...@gmail.com>.
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 <en...@gmail.com> 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" <jm...@myromatours.com>
> To: <tu...@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: tuscany-user-unsubscribe@ws.apache.org
> > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-user-help@ws.apache.org
>
>
Re: NPE if we define a sca java component via side file, meanwhile the implemetnation class impements multiple interfaces.
Posted by Raymond Feng <en...@gmail.com>.
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" <jm...@myromatours.com>
To: <tu...@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: tuscany-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-user-help@ws.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org
Re: NPE if we define a sca java component via side file, meanwhile the implemetnation class impements multiple interfaces.
Posted by Jim Marino <jm...@myromatours.com>.
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: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org