For the Groovy extension, I'd prefer that it remain independent as it is distinct from the other containers. This will also promote modularity and the ability to release it independently from the other scripting extensions.

Jim

On Jan 13, 2007, at 4:37 AM, ant elder wrote:

Thanks very much for this, I've committed these changes.

I added a JIRA component for this that you mentioned was missing. It maybe worth reviewing the components and consolidating some into a more generic
scripting or container extension component.

  ...ant

On 1/13/07, lee zhenghui <[EMAIL PROTECTED]> wrote:

hi,ant elder
   I have opened JIRA  TUSCANY-1051  to trace this issue, and also
attached
the patch and helloworld sample(I have added ASF copyright in the sample code) there. if you have time, could you review them, anything incorrect,
pls feel free to let me know. thanks in advance.
   By the way, I have run all existing UT cases, all of them passed.
   For your convenience, i am listing the updated code here:
   1.ImplementationLoader.java : add two fields with getter/setters.
              applicationLoader, this will be used for construct
GroovyClassloader
scriptResourceName, this is script resource name, will be
used
for generate side file name (componentType)
    2. ImplementationLoader.loader()
               add following statement:
                     implementation.setApplicationLoader(
deploymentContext.getClassLoader());
                     implementation.setScriptResourceName(script);
    3. GroovyComponentBuilder.build
               groovyClassLoader = new GroovyClassLoader(
implementation.getApplicationLoader());
    4. GroovyComponentType.java
Adding two constructor method , it is similar with what
did
in javaScriptComponentType
    5. GroovyComponentTypeLoader.java
adding sild file(ComponentType) support, just like what we
have
in JavaScript.
TODO: i did not implement "loadFromIntrospection" now, I am
not
sure whether it will use the same logic as javaScript. So mark it as TODO
section in this patch now.
    6. GroovyComponentTypeLoaderTestCase
            enhancement due to corresponding modification above.

One quick question is, During opening JIRA , I can not found Groovy component in the list, maybe it belong to antoher component, but I did not know, who can tell me which component does Groovy container belong to in
JIRA system?

On 1/12/07, ant elder <[EMAIL PROTECTED]> wrote:
>
> Thats wonderful!
>
> Could you attach it to a new JIRA instead of the wiki? The Tuscany JIRA > system is at: http://issues.apache.org/jira/browse/TUScany. If you don't > already have a JIRA account you'll have to create yourself one before
you
> can open a new JIRA.
>
> Thanks,
>
>    ...ant
>
> On 1/12/07, lee zhenghui <[EMAIL PROTECTED] > wrote:
> >
> > hi, ant.elder
> >     Thanks for your advices, I have fixed the issue(both
> GroovyClassloader
> > and initializing the Scope issues ), for now, my helloworld samle
works
> > fine. For safe, I will double check the patch and sample. and Will > > post them on wiki several hours later. also I will provide my detailed
> > modification here too.
> > By the way, I am really happy to have chance to do something for
> SCA.
> > I
> > like it very much.. :-)
> >
> >
> > On 1/12/07, ant elder <[EMAIL PROTECTED]> wrote:
> > >
> > > Hey its great to hear you're writing a groovy sample, would you
> > contribute
> > > it back to Tuscany to include in our samples?
> > >
> > > I think you're correct, the classloader is not being initialized
> > > correctly.
> > > In the GroovyComponentBuilder the ClassLoader from the
> DeploymentContext
> > > is
> > > the wrong one to be using, its null as you've seen. It really wants
> the
> > > application ClassLoader which is available in the DeploymentContext
> > passed
> > > into the load method of the ImplementationLoader class in the Groovy > > > package. I think what needs to happen is GroovyImplementation should
> > have
> > > a
> > > ClassLoader field added with getter/setters, the
> > > ImplementationLoader.loadmethod should set the Classloader on the
> > > GroovyImplementation from the
> > > DeploymentContext, then the GroovyComponentBuilder should create the
> > > GroovyClassLoader using the ClassLoader from the
> > > GroovyImplementation  (the
> > > implementation variable) instead of the DeploymentContext.
> > >
> > > You can see all that being done if you look at the Tuscany
JavaScript
> > > container.
> > >
> > > Does this make sense to you? Would you be interested in submitting a
> > patch
> > > for this? Say if you'd prefer to be just be using Groovy and I'll
fix
> > this
> > > for you right away.
> > >
> > >   ...ant
> > >
> > > PS. Note, i think there's another problem you'll hit after fixing
this
>
> > > which
> > > is the GroovyComponentType is not initializing the Scope correctly.
> This
> > > could be done in a a default constructor just as the
> > > JavaScriptComponentType
> > > does.
> > >
> > > On 1/12/07, lee zhenghui <[EMAIL PROTECTED]> wrote:
> > > >
> > > > hi,
> > > > I am writing a helloworld sample for sca groovy service, but
> > > > encountered
> > > > a problem here:
> > > >
> > > >      java.lang.NoClassDefFoundError: groovy/lang/GroovyObject
> > > >     at java.lang.ClassLoader.defineClass1 (Native Method)
> > > > at java.lang.ClassLoader.defineClass(ClassLoader.java: 620)
> > > >     at java.security.SecureClassLoader.defineClass(
> > > SecureClassLoader.java
> > > > :124)
> > > >     at groovy.lang.GroovyClassLoader.access$300(
> GroovyClassLoader.java
> > > :92)
> > > > at groovy.lang.GroovyClassLoader $ClassCollector.createClass(
> > > > GroovyClassLoader.java :457)
> > > > at groovy.lang.GroovyClassLoader $ClassCollector.onClassNode(
> > > > GroovyClassLoader.java:475)
> > > >     at groovy.lang.GroovyClassLoader$ClassCollector.call(
> > > > GroovyClassLoader.java:479)
> > > >     at org.codehaus.groovy.control.CompilationUnit$9.call(
> > > > CompilationUnit.java:757)
> > > >     at
> > > >
org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(
> > > > CompilationUnit.java:947)
> > > >     at org.codehaus.groovy.control.CompilationUnit.compile(
> > > > CompilationUnit.java:478)
> > > >     at groovy.lang.GroovyClassLoader.parseClass (
> GroovyClassLoader.java
> > > > :306)
> > > >     at groovy.lang.GroovyClassLoader.parseClass(
> GroovyClassLoader.java
> > > > :275)
> > > >     at groovy.lang.GroovyClassLoader.parseClass (
> GroovyClassLoader.java
> > > > :270)
> > > >     at groovy.lang.GroovyClassLoader.parseClass(
> GroovyClassLoader.java
> > > > :242)
> > > >     at
> > org.apache.tuscany.container.groovy.GroovyComponentBuilder.build (
> > > > GroovyComponentBuilder.java:80)
> > > > at org.apache.tuscany.core.builder.BuilderRegistryImpl.build(
> > > > BuilderRegistryImpl.java:106)
> > > >     at
> > > >
> >
org.apache.tuscany.core.implementation.composite.CompositeBuilder.bui ld(
> > > > CompositeBuilder.java:56)
> > > > at org.apache.tuscany.core.builder.BuilderRegistryImpl.build(
> > > > BuilderRegistryImpl.java:106)
> > > >     at org.apache.tuscany.core.deployer.DeployerImpl.build(
> > > > DeployerImpl.java
> > > > :142)
> > > >     at org.apache.tuscany.core.deployer.DeployerImpl.deploy (
> > > > DeployerImpl.java:97)
> > > >     at
org.apache.tuscany.core.launcher.LauncherImpl.bootApplication
> (
> > > > LauncherImpl.java:215)
> > > > at org.apache.tuscany.test.SCATestCase.setUp (SCATestCase.java
> :88)
> > > >     at test.tuscany.groovy.HelloWorldTest.setUp(
HelloWorldTest.java
> > :35)
> > > >     at junit.framework.TestCase.runBare(TestCase.java:125)
> > > > 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.junit3.JUnit3TestReference.run
> (
> > > > JUnit3TestReference.java:128)
> > > > at org.eclipse.jdt.internal.junit.runner.TestExecution.run (
> > > > TestExecution.java:38)
> > > >     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
> > (
> > > > RemoteTestRunner.java:460)
> > > >     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
> > (
> > > > RemoteTestRunner.java:673)
> > > > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
> > > > RemoteTestRunner.java:386)
> > > > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
> > > > RemoteTestRunner.java:196)
> > > >
> > > >   I gave an investigation on this issue, What I found is,
> > > > GroovyClassLoader's parent class loader is Null (pls see in
> > > > GroovyComponentBuilder.java) , in addition, the parent classloader
> for
> > > > GroovyClassLoader is obtained from DeploymentContext, actually
this
> > > > DeploymentContext will always be constructed without specify a
> > > > classloader.
> > > > (pls see line 90 in DeployerImpl.java).
> > > >
> > > > Does anybody can tell me that this problem is caused by usage
> error
> > or
> > > > product issue?
> > > > --
> > > > Thanks & Best Wishes
> > > > -----------------------------------
> > > > [EMAIL PROTECTED]
> > > >
> > > >
> > >
> > >
> >
> >
> > --
> > Thanks & Best Wishes
> > -----------------------------------
> > Zhenghui Li(李正辉)
> >
>



--
Thanks & Best Wishes
-----------------------------------
Zhenghui Li(李正辉)



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to