RE: Problem in the function resolution phase

"Guijarro, Julio" <[email protected]> Mon, 7 Nov 2005 15:52:11 -0000
Newsgroups gmane.comp.java.smartfrog.devel
Message-ID <[email protected]>
Hi Gustavo,

 

 

There are some methods in ComponentDescriptionImpl that can help you to parse a description and get its CD equivalent:

static ComponentDescription <file:///D:\cvs\SmartFrogSF\cvs_sf\core\smartfrog\dist\docs\jdocs\org\smartfrog\sfcore\componentdescription\ComponentDescription.html> 

sfComponentDescription <file:///D:\cvs\SmartFrogSF\cvs_sf\core\smartfrog\dist\docs\jdocs\org\smartfrog\sfcore\componentdescription\ComponentDescriptionImpl.html#sfComponentDescription(java.lang.String)> (java.lang.String url) 
          Utility method that gets Component Description for URL after applying default parser phases

static ComponentDescription <file:///D:\cvs\SmartFrogSF\cvs_sf\core\smartfrog\dist\docs\jdocs\org\smartfrog\sfcore\componentdescription\ComponentDescription.html> 

sfComponentDescription <file:///D:\cvs\SmartFrogSF\cvs_sf\core\smartfrog\dist\docs\jdocs\org\smartfrog\sfcore\componentdescription\ComponentDescriptionImpl.html#sfComponentDescription(java.lang.String, java.lang.String, java.util.Vector, org.smartfrog.sfcore.reference.Reference)> (java.lang.String url, java.lang.String language, java.util.Vector phases, Reference <file:///D:\cvs\SmartFrogSF\cvs_sf\core\smartfrog\dist\docs\jdocs\org\smartfrog\sfcore\reference\Reference.html>  ref) 
          Utility method that gets Component Description for URL after applying some parser phases

static ComponentDescription <file:///D:\cvs\SmartFrogSF\cvs_sf\core\smartfrog\dist\docs\jdocs\org\smartfrog\sfcore\componentdescription\ComponentDescription.html> 

sfComponentDescription <file:///D:\cvs\SmartFrogSF\cvs_sf\core\smartfrog\dist\docs\jdocs\org\smartfrog\sfcore\componentdescription\ComponentDescriptionImpl.html#sfComponentDescription(java.lang.String, java.util.Vector, org.smartfrog.sfcore.reference.Reference)> (java.lang.String url, java.util.Vector phases, Reference <file:///D:\cvs\SmartFrogSF\cvs_sf\core\smartfrog\dist\docs\jdocs\org\smartfrog\sfcore\reference\Reference.html>  ref) 
          Utility method that gets Component Description for URL after applying some parser phases

static ComponentDescription <file:///D:\cvs\SmartFrogSF\cvs_sf\core\smartfrog\dist\docs\jdocs\org\smartfrog\sfcore\componentdescription\ComponentDescription.html> 

sfComponentDescriptionFromStr <file:///D:\cvs\SmartFrogSF\cvs_sf\core\smartfrog\dist\docs\jdocs\org\smartfrog\sfcore\componentdescription\ComponentDescriptionImpl.html#sfComponentDescriptionFromStr(java.lang.String, java.lang.String, java.util.Vector, org.smartfrog.sfcore.reference.Reference)> (java.lang.String description, java.lang.String language, java.util.Vector phases, Reference <file:///D:\cvs\SmartFrogSF\cvs_sf\core\smartfrog\dist\docs\jdocs\org\smartfrog\sfcore\reference\Reference.html>  ref) 
          Utility method that gets Component Description for a String after applying some parser phases

 

Also, unless you want to use only a special set of phases, you are better using phases.sfResolvePhases(). 

 

As for the problem that you were experimenting is that you were not picking up "sfConfig" as your entry point. Selecting sfConfig entry, would cause the link, function and predicate phases to act only in the necessary/used components, and therefore Sum would not be "resolved". We will proceed to eliminate Plus function as we don't use it.

 

The default list of phases for SF is: [type, place, SFCONFIG, link, function, predicate}

 

 

Julio

 

 

-----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