RE: Problem in the function resolution phase
"Gustavo Wagner D Mendes / Pos. COPIN" <gustavo-y04Q/[email protected]> Mon, 7 Nov 2005 12:09:45 -0300
| Newsgroups | gmane.comp.java.smartfrog.devel |
|---|---|
| Message-ID | <[email protected]> |
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