You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by Luciano Resende <lu...@gmail.com> on 2008/08/04 07:09:49 UTC

Re: das npe in PassByValueInterceptor

On Tue, Jul 29, 2008 at 1:05 PM, Jean Madson <je...@gmail.com> wrote:
> For sure, it´s really very interesting.
> Can you put as an attachment the code from the class that implements
> findOrganization and
> the class code that implements the testRunner?
> Who knows someone else could help us...

Yes, please raise a JIRA with your code or a unit test that allows us
to reproduce your problem and we can definetly take a look and provide
some help.

>
> --
> Jean Madson
>
>
>
> 2008/7/29 Abraham Washington <ab...@yahoo.com>
>>
>> here's more info.
>>
>>
>>
>> this is from findOrganization
>>
>> findOrganization data graph ->
>> org.apache.tuscany.sdo.impl.DataGraphImpl@1d87b360 (resourceSet:
>> org.eclipse.emf.ecore.resource.impl.ResourceSetImpl@381172c5
>> resources=[org.apache.tuscany.sdo.util.resource.SDOXMLResourceImpl@1860045
>> uri='root.xml',
>> org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl$1@47bb2cb
>> uri='http:///org.apache.tuscany.das.rdb/das',
>> org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl$1@55172fb9
>> uri='http:///org.apache.tuscany.das.rdb/das',
>> org.apache.tuscany.sdo.util.resource.SDOXMLResourceImpl@653e4653
>> uri='change-summary.xml'])
>>
>> findOrganization data graph root ->
>> org.apache.tuscany.sdo.impl.DynamicDataObjectImpl@5b7b2712 (eClass:
>> org.apache.tuscany.sdo.impl.ClassImpl@72423da9 (name: DataGraphRoot)
>> (instanceClassName: null) (abstract: false, interface: false))
>>
>>
>>
>> // this debug came from the test runner
>>
>> data graph -> null
>>
>> account -> org.apache.tuscany.sdo.impl.DynamicDataObjectImpl@70a6aa31
>> (eClass: org.apache.tuscany.sdo.impl.ClassImpl@4defb0be (name: ACCOUNT)
>> (instanceClassName: null) (abstract: false, interface: false))
>>
>> Testrunner accountName -> TestNode1
>>
>>
>>
>> update account now...
>>
>> java.lang.NullPointerException
>>
>> at org.apache.tuscany.das.rdb.impl.ApplyChangesCommandImpl.execute(
>>
>> ApplyChangesCommandImpl.java:58)
>>
>>
>> the call to:
>>
>> root.
>>
>> getDataGraph()
>>
>>
>>
>> is what's outputting: data graph -> null
>>
>>
>>
>> seems odd that the call works fine in the operation findOrganization, but
>> it's null inside the testRunner
>>
>>
>>
>> thanks
>>
>>
>>
>> ----- Original Message ----
>> From: Jean Madson <je...@gmail.com>
>> To: user@tuscany.apache.org
>> Sent: Tuesday, July 29, 2008 10:16:20 AM
>> Subject: Re: das npe in PassByValueInterceptor
>>
>> It's exactly what you did for dataGraph, showing its internal
>> representation.
>> --
>> Jean Madson
>>
>>
>>
>> 2008/7/29 Abraham Washington <ab...@yahoo.com>
>>>
>>> what do you mean by dump?
>>>
>>> ----- Original Message ----
>>> From: Jean Madson <je...@gmail.com>
>>> To: user@tuscany.apache.org
>>> Sent: Tuesday, July 29, 2008 9:04:06 AM
>>> Subject: Re: das npe in PassByValueInterceptor
>>>
>>> Can you dump "account"? So we can see what is inside it...
>>>
>>>
>>> --
>>> Jean Madson
>>> http://bit-zen.blogspot.com/
>>> MSN: jeanmadson@gmail.com
>>> -----
>>> HI LI KO KEN TEN
>>> Be grass, don't eat grass
>>> "É preciso esvaziar a xícara para ver o fundo tal como ele é, caso
>>> contrário,
>>> o fundo parecerá turvo, e idéias precipitadas acerca do que seja o
>>> fundo límpido emergirão."
>>>
>>>
>>>
>>>
>>> 2008/7/29 Abraham Washington <ab...@yahoo.com>
>>>>
>>>> this is where it's failing:
>>>>
>>>>
>>>>
>>>> if (!root.equals(root.getDataGraph().getRootObject())) {
>>>>             throw new RuntimeException("'root' argument must be the root
>>>> of the datagraph");
>>>>         }
>>>>
>>>>
>>>> in org.apache.tuscany.das.rdb.impl.ApplyChangesCommandImpl at line 58
>>>> (looking at the source code).  i printed out the same thing and can
>>>> reproduce the problem.
>>>>
>>>> the problem is the call to root.getDataGraph() is returning null, thus
>>>> the call to root.getDataGraph().getRootObject() throws the npe.
>>>>
>>>> when i make the call to find the organization, the dataGraph is null as
>>>> well.  here's my call to findOrganization:
>>>>
>>>>
>>>> public
>>>>
>>>> DataObject findOrganization(String id) {
>>>>
>>>> DataObject root =
>>>>
>>>> null
>>>> ;
>>>>
>>>> InputStream in =
>>>>
>>>> getClass().getClassLoader().getResourceAsStream(
>>>>
>>>> "dasConfiguration.xml");
>>>>
>>>> DAS das = DAS.
>>>>
>>>> FACTORY.createDAS(in, getConnection());
>>>>
>>>> Command read = das.getCommand(
>>>>
>>>> "getAccountByID");
>>>>
>>>> read.setParameter(1, Integer.valueOf(id));
>>>>
>>>> root = read.executeQuery();
>>>>
>>>> DataObject account = root.getDataObject(
>>>>
>>>> "ACCOUNT[1]");
>>>>
>>>> System.
>>>>
>>>> out.println("account dataGraph -> " + account.getDataGraph());
>>>>
>>>> System.
>>>>
>>>> out.println("account dataObject -> " +
>>>> account.getDataGraph().getRootObject());
>>>>
>>>> return account;
>>>>
>>>> }
>>>>
>>>>
>>>>
>>>> Output:
>>>>
>>>>
>>>>
>>>> data graph -> null
>>>>
>>>>
>>>> then a npe this thrown on the call to:
>>>> System.out.println("account dataObject -> " +
>>>> account.getDataGraph().getRootObject());
>>>>
>>>>
>>>>
>>>> why would the dataGraph be null ?
>>>>
>>>>
>>>>
>>>> thx abe
>>>>
>>>>
>>>>
>>>> ----- Original Message ----
>>>> From: Jean Madson <je...@gmail.com>
>>>> To: user@tuscany.apache.org
>>>> Sent: Tuesday, July 29, 2008 7:31:18 AM
>>>> Subject: Re: das npe in PassByValueInterceptor
>>>>
>>>> It throws NullPointerException.
>>>> Does the organizationService variable have a valid reference to the
>>>> service?
>>>> Try to test this.
>>>> You can try to do a dump from organizationService.
>>>> Perhaps, organizationService can't find an organization with that id,
>>>> thus, returning a null reference.
>>>> Check this too.
>>>>
>>>> --
>>>> Jean Madson
>>>>
>>>>
>>>>
>>>> 2008/7/28 Abraham Washington <ab...@yahoo.com>
>>>>>
>>>>> i put the call to das.applyChanges in a try/catch block which gives a
>>>>> little more info:
>>>>>
>>>>>
>>>>>
>>>>> java.lang.NullPointerException
>>>>>
>>>>> at org.apache.tuscany.das.rdb.impl.ApplyChangesCommandImpl.execute(
>>>>>
>>>>> ApplyChangesCommandImpl.java:58)
>>>>>
>>>>> at org.apache.tuscany.das.rdb.impl.DASImpl.applyChanges(
>>>>>
>>>>> DASImpl.java:310)
>>>>>
>>>>> at org.soa.services.OrganizationDataServiceImpl.updateOrganization(
>>>>>
>>>>> OrganizationDataServiceImpl.java:188)
>>>>>
>>>>> at org.soa.services.OrganizationServiceImpl.updateOrganization(
>>>>>
>>>>> OrganizationServiceImpl.java:60)
>>>>>
>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(
>>>>>
>>>>> Native Method)
>>>>>
>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke(
>>>>>
>>>>> NativeMethodAccessorImpl.java:39)
>>>>>
>>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
>>>>>
>>>>> DelegatingMethodAccessorImpl.java:25)
>>>>>
>>>>> at java.lang.reflect.Method.invoke(
>>>>>
>>>>> Method.java:585)
>>>>>
>>>>> at org.apache.tuscany.sca.implementation.spring.SpringInvoker.doInvoke(
>>>>>
>>>>> SpringInvoker.java:100)
>>>>>
>>>>> at org.apache.tuscany.sca.implementation.spring.SpringInvoker.invoke(
>>>>>
>>>>> SpringInvoker.java:116)
>>>>>
>>>>> at
>>>>> org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(
>>>>>
>>>>> PassByValueInterceptor.java:108)
>>>>>
>>>>> at org.apache.tuscany.sca.binding.sca.impl.SCABindingInvoker.invoke(
>>>>>
>>>>> SCABindingInvoker.java:61)
>>>>>
>>>>> at
>>>>> org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(
>>>>>
>>>>> PassByValueInterceptor.java:108)
>>>>>
>>>>> at org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(
>>>>>
>>>>> JDKInvocationHandler.java:286)
>>>>>
>>>>> at org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(
>>>>>
>>>>> JDKInvocationHandler.java:154)
>>>>>
>>>>> at $Proxy7.updateOrganization(Unknown Source)
>>>>>
>>>>>
>>>>>
>>>>> here's line 63 from my test runner:
>>>>>
>>>>>
>>>>> commonj.sdo.DataObject account =
>>>>> organizationService.getOrganization(organizationId
>>>>>
>>>>> );
>>>>>
>>>>> organizationService.updateOrganization(account);
>>>>>
>>>>>
>>>>>
>>>>> line 63 is organizationService.updateOrganization(organizationId);
>>>>>
>>>>>
>>>>>
>>>>> thx...hope this helps...all i'm doing is grabbing the org (just a
>>>>> simple find) in getOrganization, then passing that org to update.   no
>>>>> changes are made.  maybe i'm not closing a connection ?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ----- Original Message ----
>>>>> From: Jean Madson <je...@gmail.com>
>>>>> To: user@tuscany.apache.org
>>>>> Sent: Monday, July 28, 2008 4:37:34 PM
>>>>> Subject: Re: das npe in PassByValueInterceptor
>>>>>
>>>>> OK, Abraham.
>>>>> It seems like an invalid reference object in line 63.
>>>>> What is there?
>>>>> Can you put here a numbered excerpt of the code around 63 line?
>>>>>
>>>>>
>>>>> 2008/7/28 Abraham Washington <ab...@yahoo.com>
>>>>>>
>>>>>> hi jean...that is the entire stack trace.  i'm running within eclipse
>>>>>> and that's all that's given.  i'm using oracle if that helps.
>>>>>>
>>>>>>
>>>>>>
>>>>>> update account now...
>>>>>>
>>>>>> Exception in thread "main"
>>>>>>
>>>>>> java.lang.NullPointerException
>>>>>>
>>>>>> at
>>>>>> org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.copyFault(
>>>>>>
>>>>>> PassByValueInterceptor.java:125)
>>>>>>
>>>>>> at
>>>>>> org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(
>>>>>>
>>>>>> PassByValueInterceptor.java:115)
>>>>>>
>>>>>> at org.apache.tuscany.sca.binding.sca.impl.SCABindingInvoker.invoke(
>>>>>>
>>>>>> SCABindingInvoker.java:61)
>>>>>>
>>>>>> at
>>>>>> org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(
>>>>>>
>>>>>> PassByValueInterceptor.java:108)
>>>>>>
>>>>>> at org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(
>>>>>>
>>>>>> JDKInvocationHandler.java:286)
>>>>>>
>>>>>> at org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(
>>>>>>
>>>>>> JDKInvocationHandler.java:154
>>>>>> )
>>>>>>
>>>>>> at $Proxy7.updateOrganization(Unknown Source)
>>>>>>
>>>>>> at helloworld.OrganizationServiceCompositeRunner.main(
>>>>>>
>>>>>> OrganizationServiceCompositeRunner.java:63)
>>>>>>
>>>>>> let me know if you need more info...abe
>>>>>>
>>>>>> ----- Original Message ----
>>>>>> From: Jean Madson <je...@gmail.com>
>>>>>> To: user@tuscany.apache.org
>>>>>> Sent: Monday, July 28, 2008 3:52:49 PM
>>>>>> Subject: Re: das npe in PassByValueInterceptor
>>>>>>
>>>>>> Can you put here all stack trace?
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2008/7/28 Abraham Washington <ab...@yahoo.com>
>>>>>>>
>>>>>>> hi,  i'm trying to get DAS to work for my service.  i'm able to query
>>>>>>> and get results back no problem.  below is my code for updating.  if i take
>>>>>>> out the call to account.set(....), then the apply works (but there were no
>>>>>>> changes to the DataObject).  with the account.set(...) call, the exception
>>>>>>> is thrown.  ideas? thx abe
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Command read = das.getCommand(
>>>>>>>
>>>>>>> "getAccountByID");
>>>>>>>
>>>>>>> read.setParameter(1, Integer.valueOf(organizationId));
>>>>>>>
>>>>>>> root = read.executeQuery();
>>>>>>>
>>>>>>> DataObject account = root.getDataObject(
>>>>>>>
>>>>>>> "ACCOUNT[1]");
>>>>>>>
>>>>>>> System.
>>>>>>>
>>>>>>> out.println("accountName before change -> " +
>>>>>>> account.getString("ACCOUNT_NAME"));
>>>>>>>
>>>>>>> account.set(
>>>>>>>
>>>>>>> "ACCOUNT_NAME", "TestAccount");
>>>>>>>
>>>>>>> System.
>>>>>>>
>>>>>>> out.println("apply changes...");
>>>>>>>
>>>>>>> das.applyChanges(root);
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> apply changes...
>>>>>>>
>>>>>>> Exception in thread "main"
>>>>>>>
>>>>>>> java.lang.NullPointerException
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.copyFault(
>>>>>>>
>>>>>>> PassByValueInterceptor.java:125)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(
>>>>>>>
>>>>>>> PassByValueInterceptor.java:115)
>>>>>>>
>>>>>>> at org.apache.tuscany.sca.binding.sca.impl.SCABindingInvoker.invoke(
>>>>>>>
>>>>>>> SCABindingInvoker.java:61)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(
>>>>>>>
>>>>>>> PassByValueInterceptor.java:108)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(
>>>>>>>
>>>>>>> JDKInvocationHandler.java:286)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(
>>>>>>>
>>>>>>> JDKInvocationHandler.java:154)
>>>>>>>
>>>>>>> at $Proxy7.updateOrganization(Unknown Source)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>>
>>
>>
>>
>>
>>
>
>
>
>
>



-- 
Luciano Resende
Apache Tuscany Committer
http://people.apache.org/~lresende
http://lresende.blogspot.com/