Just an update : The NPE in PassByValueInterceptor seems to be
resolved by adding couple missing dependencies such as
databinding-sdo.

I'm still having some other issues (looks like classLoader related)...
but I should be able to commit a new version of the sample with the
spring layer later tonight or early tomorrow.

Thanks

On Sat, Aug 9, 2008 at 4:18 PM, Luciano Resende <[EMAIL PROTECTED]> wrote:
> BTW, the sample is available at :
>
> https://svn.apache.org/repos/asf/tuscany/sandbox/lresende/sca/samples/organization-das
>
> On Sat, Aug 9, 2008 at 4:14 PM, Luciano Resende <[EMAIL PROTECTED]> wrote:
>> Hi Abraham
>>
>>   From your initial post, looks like you are having two problems :
>>
>>      - Using DAS, a call to applyChanges succedds, but the account
>> row does not get updated.
>>      - When you use SCA to create a DAS component, you are having a
>> PassByValueInterceptor exception
>>
>>   I have committed a organization-das sample, all based on the
>> application you provided under TUSCANY-2525, under svn revision
>> 684376.
>>
>>   Note that I'm building the sample im multiple steps, isolating the
>> areas involved in each issue. Also, note that I'm using derby, but
>> changing back to Oracle should be easy, just change the
>> ConnectionHelper to create the proper Oracle connection.
>>
>>  Right now, I have the DAS piece working ok, and it would be good if
>> you could verify this in your Oracle environment by running the
>> OrganizationTestCase. While I wait for your feedback, I'm going to
>> move to incorporate the SCA into the sample.
>>
>> Thanks
>>
>>
>> On Mon, Aug 4, 2008 at 12:51 PM, Abraham Washington
>> <[EMAIL PROTECTED]> wrote:
>>> thanks all for the help.  created issue tuscany-2525
>>>
>>> ----- Original Message ----
>>> From: Luciano Resende <[EMAIL PROTECTED]>
>>> To: [email protected]
>>> Sent: Sunday, August 3, 2008 11:09:49 PM
>>> Subject: Re: das npe in PassByValueInterceptor
>>>
>>> On Tue, Jul 29, 2008 at 1:05 PM, Jean Madson <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]>
>>>>>
>>>>> here's more info.
>>>>>
>>>>>
>>>>>
>>>>> this is from findOrganization
>>>>>
>>>>> findOrganization data graph ->
>>>>> [EMAIL PROTECTED] (resourceSet:
>>>>> [EMAIL PROTECTED]
>>>>>
>>>>> [EMAIL PROTECTED]
>>>>> uri='root.xml',
>>>>> [EMAIL PROTECTED]
>>>>> uri='http:///org.apache.tuscany.das.rdb/das',
>>>>> [EMAIL PROTECTED]
>>>>> uri='http:///org.apache.tuscany.das.rdb/das',
>>>>> [EMAIL PROTECTED]
>>>>> uri='change-summary.xml'])
>>>>>
>>>>> findOrganization data graph root ->
>>>>> [EMAIL PROTECTED] (eClass:
>>>>> [EMAIL PROTECTED] (name: DataGraphRoot)
>>>>> (instanceClassName: null) (abstract: false, interface: false))
>>>>>
>>>>>
>>>>>
>>>>> // this debug came from the test runner
>>>>>
>>>>> data graph -> null
>>>>>
>>>>> account -> [EMAIL PROTECTED]
>>>>> (eClass: [EMAIL PROTECTED] (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 <[EMAIL PROTECTED]>
>>>>> To: [email protected]
>>>>> 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 <[EMAIL PROTECTED]>
>>>>>>
>>>>>> what do you mean by dump?
>>>>>>
>>>>>> ----- Original Message ----
>>>>>> From: Jean Madson <[EMAIL PROTECTED]>
>>>>>> To: [email protected]
>>>>>> 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: [EMAIL PROTECTED]
>>>>>> -----
>>>>>> 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 <[EMAIL PROTECTED]>
>>>>>>>
>>>>>>> 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 <[EMAIL PROTECTED]>
>>>>>>> To: [email protected]
>>>>>>> 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 <[EMAIL PROTECTED]>
>>>>>>>>
>>>>>>>> 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 <[EMAIL PROTECTED]>
>>>>>>>> To: [email protected]
>>>>>>>> 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 <[EMAIL PROTECTED]>
>>>>>>>>>
>>>>>>>>> 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 <[EMAIL PROTECTED]>
>>>>>>>>> To: [email protected]
>>>>>>>>> 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 <[EMAIL PROTECTED]>
>>>>>>>>>>
>>>>>>>>>> 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/
>>>
>>>
>>
>>
>>
>> --
>> Luciano Resende
>> Apache Tuscany Committer
>> http://people.apache.org/~lresende
>> http://lresende.blogspot.com/
>>
>
>
>
> --
> Luciano Resende
> Apache Tuscany Committer
> http://people.apache.org/~lresende
> http://lresende.blogspot.com/
>



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

Reply via email to