thanks Luciano. i'll test out the sample with oracle tomorrow. thx for taking the time - abe
----- Original Message ---- From: Luciano Resende <[EMAIL PROTECTED]> To: [email protected] Sent: Saturday, August 9, 2008 5:18:08 PM Subject: Re: das npe in PassByValueInterceptor 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/
