RE: Problem in the function resolution phase
"Goldsack, Patrick" <[email protected]> Wed, 9 Nov 2005 09:13:52 -0000
| Newsgroups | gmane.comp.java.smartfrog.devel |
|---|---|
| Message-ID | <[email protected]> |
Its not in the Prim interface as it is not one of the remotable methods - but I assure you that it is there in the class. When a component is created, and local to this, the deployer calls the default constructor for the component class, then call the sfDeployWith method passing all the data that is required to construct the component (parent and description). After that, the deployer returns the component handle to the requestor. As for the reference manual, I am currently (slowly) working on a revised version - it is in the CVS - with a large amount of new introductory "how to use" material. But this is still only partially done. The previsouly existing content is there, but somewhat restructured. Patrick -----Original Message----- From: Gustavo Wagner D Mendes / Pos. COPIN [mailto:gustavo-y04Q/[email protected]] Sent: 08 November 2005 20:17 To: Goldsack, Patrick; smartfrog-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Cc: aandrade-y04Q/[email protected] Subject: RE: [Smartfrog-developer] Problem in the function resolution phase Hello Patrick. Thanks for the points. But we still have doubt about the sfDeployWith method. where is the public void sfDeployWith(Prim parent, ComponentDescritpion Cd) method? We haven't found it in the Compound and Prim interfaces. Another doubt. Is there a new version of the SmartFlow document? I have the 2003-2004 draft. Cheers, Gustavo On Mon, 7 Nov 2005 15:51:41 -0000, Goldsack, Patrick wrote > A number of points. > > 1) The phase list should read "type, place, sfconfig (sfConfig?), > link, function". In this way, you don't link and apply functions to > anything other than sfConfig. > > 2) If you want to keep a copy of the component description, overwrite > the definition of sfDeployWith(ComponentDescritpion) and define it to > be the following: > > ComponentDescription myCd; > public void sfDeployWith(Prim parent, ComponentDescritpion Cd) > throws ... { myCd = cd.copy(); // must copy, as original gets > changed by side-effect during deployment super(parent, cd); } > > Hopes this helps, > > Patrick > > -----Original Message----- > From: smartfrog-developer-admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org > [mailto:smartfrog-developer-admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org] On Behalf Of > Gustavo Wagner D Mendes / Pos. COPIN Sent: 07 November 2005 15:10 > To: Goldsack, Patrick; smartfrog-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Cc: > aandrade-y04Q/[email protected] Subject: RE: [Smartfrog-developer] Problem in > the function resolution phase > > Hello Patrick. How are you? > > I have faced this problem when I have tried to parse a component to > get its ComponentDescription. I do not know another way to get the > ComponentDescription after the component is running. So, as I need the > ComponentDescription to redeploy a component on a remote > machine, I have developed the util paserDescription method below: > > public static ComponentDescription parseDescription (InputStream > stream) throws RemoteException, SmartFrogException, > FileNotFoundException { Phases phases = new SFParser() > .sfParse(stream); > > /* Resolving the phases. We don't resolve the 'sfConfig' phase because > * it isn't a deployable component. > */ > phases.sfResolvePhase("type"); > phases.sfResolvePhase("place"); > phases.sfResolvePhase("link"); > phases.sfResolvePhase("function"); > > return phases.sfAsComponentDescription(); > } > > To test it, I have developed a simple component to be parsed: > > #include "org/smartfrog/components.sf" > #include "org/smartfrog/functions.sf" > > Teste1 extends { > sfClass "org.ourgrid.serviceprofile.teste.TesteImpl"; > } > > sfConfig extends Compound { > teste1 extends Teste1; > } > > I have noticed that the problem is the inclusion of the functions.sf > file. Even if you don't use any function in the function.sf file, the > problem will occur. > > Am I right? > > Cheers, > > Gustavo > > ps.: The stacktrace of the error is below: > > SmartFrogCompileResolutionException:: java.lang.NullPointerException, > resolutionPhase: function > at > org.smartfrog.sfcore.languages.sf.SmartFrogCompileResolutionException.forward(SmartFrogCompileResolutionException.java:294) at org.smartfrog.sfcore.languages.sf.sfcomponentdescription.SFComponentDescriptionImpl.sfResolvePhases(SFComponentDescriptionImpl.java:662) at org.smartfrog.sfcore.languages.sf.sfcomponentdescription.SFComponentDescriptionImpl.sfResolvePhase(SFComponentDescriptionImpl.java:621) at org.ourgrid.serviceprofile.util.Util.parseDescription(Util.java:328) at org.ourgrid.serviceprofile.util.UtilTest.testGetUndoComponent(UtilTest.java:254) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) 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.RemoteTestRunner.runTests(RemoteTestRunner.java:478) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) Caused by: java.lang.NullPointerException at java.util.Hashtable.put(Unknown Source) at org.smartfrog.sfcore.common.OrderedHashtable.primPut(OrderedHashtable.java:170) at org.smartfrog.sfcore.common.OrderedHashtable.put(OrderedHashtable.java:182) at org.smartfrog.sfcore.languages.sf.functions.BaseFunction.doit(BaseFunction.java:63) at org.smartfrog.sfcore.languages.sf.Phase.actOn(Phase.java:97) at org.smartfrog.sfcore.componentdescription.ComponentDescriptionImpl.visit(ComponentDescriptionImpl.java:604) at org.smartfrog.sfcore.componentdescription.ComponentDescriptionImpl.visit(ComponentDescriptionImpl.java:599) at org.smartfrog.sfcore.languages.sf.sfcomponentdescription.SFComponentDescriptionImpl.sfResolvePhases(SFComponentDescriptionImpl.java:659) ... 18 more > > On Thu, 3 Nov 2005 22:17:55 -0000, Goldsack, Patrick wrote > > Gustavo, > > > > Thanks for pointing this out. I wonder how this slipped through - it > > must have been sitting there for ages without anyone noticing. The > > correct function for adding its attributes is sum, not plus. The > > definition of plus should probably be removed, or made to point to > > the class Sum for possible backward compatability. I will consider > > this and fix... > > > > I am somewhat surprised that unless you actually try to use it you > > get an error (or if you try to include the file directly into sfConfig). > > Only the functions used within sfConfig should be evaulated, so a > > file included at the top level will be ignored. > > > > Eliminating the function phase enirely will of course remove the > > problem, but I wouldn't recommend it! > > > > Can you send me some more details as to why you are getting the > > error message? The file you are parsing would do. > > > > Thanks > > Patrick > > > > -----Original Message----- > > From: smartfrog-developer-admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org > > [mailto:smartfrog-developer-admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org] On Behalf > > Of Gustavo Wagner D Mendes / Pos. COPIN Sent: 03 November 2005 21:49 > > To: smartfrog-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Subject: [Smartfrog- > > developer] Problem in the function resolution phase > > > > Hello all. > > > > In the org/smartfrog/functions.sf file there is the following component: > > > > plus extends { > > phase.function > > "org.smartfrog.sfcore.languages.sf.functions.Plus"; } > > > > Note that it links to the > > org/smartfrog/sfcore/languages/sf/functions/Plus.class class, but it > > does not exists in any smartfrog distribution. If we try to parse > > any component, in the function phase occurs a ClassNotFoundException. > > > > When I comment the function phase - > > //phases.sfResolvePhase("function");, it works well. > > > > If you dont have the Plus class, I can do it and send to you. > > > > Cheers, > > > > Gustavo > > > > ############################################# > > # GUSTAVO WAGNER DINIZ MENDES # > > # Graduado pela UFCG # > > # Curso: Ciência da Computação # > > # Mestrando pela COPIN-UFCG # > > # * Integrante do projeto OurGrid # > > # Fones: (83)88246910 / 32358355 # > > # 33333453 # > > > > ------------------------------------------------------- > > SF.Net email is sponsored by: > > Tame your development challenges with Apache's Geronimo App Server. > > Download it for free - -and be entered to win a 42" plasma tv or > > your very own Sony(tm)PSP. Click here to play: > http://sourceforge.net/geronimo.php > > _______________________________________________ > > Smartfrog-developer mailing list > > Smartfrog-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org > > https://lists.sourceforge.net/lists/listinfo/smartfrog-developer > > > > ------------------------------------------------------- > > SF.Net email is sponsored by: > > Tame your development challenges with Apache's Geronimo App Server. > > Download it for free - -and be entered to win a 42" plasma tv or > > your very own Sony(tm)PSP. Click here to play: > > http://sourceforge.net/geronimo.php > > _______________________________________________ > > Smartfrog-developer mailing list > > Smartfrog-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org > > https://lists.sourceforge.net/lists/listinfo/smartfrog-developer > > ############################################# > # GUSTAVO WAGNER DINIZ MENDES # > # Graduado pela UFCG # > # Curso: Ciência da Computação # > # Mestrando pela COPIN-UFCG # > # * Integrante do projeto OurGrid # > # Fones: (83)88246910 / 32358355 # > # 33333453 # > > ------------------------------------------------------- > SF.Net email is sponsored by: > Tame your development challenges with Apache's Geronimo App Server. > Download it for free - -and be entered to win a 42" plasma tv or your > very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php > _______________________________________________ > Smartfrog-developer mailing list > Smartfrog-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org > https://lists.sourceforge.net/lists/listinfo/smartfrog-developer > > ------------------------------------------------------- > SF.Net email is sponsored by: > Tame your development challenges with Apache's Geronimo App Server. > Download it for free - -and be entered to win a 42" plasma tv or your > very own Sony(tm)PSP. Click here to play: > http://sourceforge.net/geronimo.php > _______________________________________________ > Smartfrog-developer mailing list > Smartfrog-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org > https://lists.sourceforge.net/lists/listinfo/smartfrog-developer ############################################# # GUSTAVO WAGNER DINIZ MENDES # # Graduado pela UFCG # # Curso: Ciência da Computação # # Mestrando pela COPIN-UFCG # # * Integrante do projeto OurGrid # # Fones: (83)88246910 / 32358355 # # 33333453 # ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php