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