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.build(
> > > 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(李正辉)

Reply via email to