hi, ant.elder
I have sync the source code with java script. and also run the UT
cases. all of them passed under the updated ComponentType sidefile code.
Meanwhile opened JIRA TUSCANY-1054 to trace this issue. also attached
the patch in that JIRA. if you have time, pls review the patch. anything
wrong, pls correct me. thanks in advance.
On 1/13/07, ant elder <[EMAIL PROTECTED]> wrote:
Note, I did make a change to the way the ComponentType sidefile was done
as
the code I'd pointed you to in the JavaScript container for this was a bit
out of date. Any chance you'd be interested in submitting another fix for
the JavaScript container to do this properly?
...ant
On 1/13/07, ant elder <[EMAIL PROTECTED]> 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.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(李正辉)
> >
>
>
--
Thanks & Best Wishes
-----------------------------------
Zhenghui Li(李正辉)