Patrick

Thanks for helping on this, looks like while trying the scenario where
we have multiple contributions, we uncovered the following bugs :

  - Class loader issue with contribution metadata loader [1]
  - Wiring of multiple contributions [2]

This scenario should now be working, after couple fixes that I
committed under revision # 545411. Note that your sample application
will need some small modifications, but you could use the
EmbeddedSCADomainTestCase as an example to what needs to be changed,
basically you will need to add a call to helper.activateDomain and
then helper.startComponent.

There is also a sample application exercising this scenario in my
sandbox [3] for those interested. I'll work little more on this sample
and probably move it to trunk under a sample or test case.

While working on these issues, I also found the programming model to
work with multiple contributions using EmbeddedSCADomain more complex
then it should be. I'll take a deeper look into this area and send
some proposals on how we could improve the programming model when
using multiple contributions.

[1] https://issues.apache.org/jira/browse/TUSCANY-1329
[2] http://issues.apache.org/jira/browse/TUSCANY-1332
[3] 
https://svn.apache.org/repos/asf/incubator/tuscany/sandbox/lresende/sca/samples/

On 6/7/07, Patrick Vanhuyse <[EMAIL PROTECTED]> wrote:
Hi Luciano,

I have attached the full code of my sample to the jira issue.

All is in it !

I now use 2 different resolvers. But it doesn't help !

Regards.

Patrick

> -----Message d'origine-----
> De : Luciano Resende [mailto:[EMAIL PROTECTED]
> Envoyé : mercredi 6 juin 2007 23:44
> À : tuscany-user@ws.apache.org
> Objet : Re: Simple use case problem
>
>
> Hi Patrick
>
>    Thanks for finding a workaround for a bug in the code that process
> the contribution metadata side file, I have created a jira for it [1].
>
>    Looking into the code you provided, I noticed you are using the
> same resolver while contributing both contributions, and you should be
> using two different ones....
>
>    Could you also provide us with the full stack trace and the
> composite files you are using ? In the mean time, I'll try to simulate
> what I think you are doing in a test case and made it available in
> Tuscany.
>
> [1] https://issues.apache.org/jira/browse/TUSCANY-1329
>
> On 6/6/07, Patrick Vanhuyse <[EMAIL PROTECTED]> wrote:
> > Luciano,
> >
> > First try with url = "file://.../provider.jar" doesn't work because :
> >
> > In ContributionServiceImpl.java, initializeContributionMetadata
> (line 134) :
> >
> >         URL[] clUrls = {sourceURL};
> >         URLClassLoader cl = new URLClassLoader(clUrls);
> >
> >         contributionMetadataURL =
> > cl.getResource(Contribution.SCA_CONTRIBUTION_META);
> >
> > sourceURL = "file://.../provider.jar"
> > contributionMetadataURL =
> > "file://.../consumer/target/classes/META-INF/sca-contribution.xml"
> > because of the parent class loader in cl.
> >
> > If I put a null parent class loader in the creation of cl :
> >
> >         URL[] clUrls = {sourceURL};
> >         URLClassLoader cl = new URLClassLoader(clUrls, null);
> >
> >         contributionMetadataURL =
> > cl.getResource(Contribution.SCA_CONTRIBUTION_META);
> >
> > it finds the good sca-contribution :
> > contributionMetadataURL =
> > "jar:file://.../provider.jar!/META-INF/sca-contribution.xml"
> >
> > and it loads the ProviderComposite and the ProviderComponent in it.
> >
> > But in my test :
> >
> >     // Determine my class loader and my test SCA contribution location
> >     String url =
> > "file:///h:/it/logiciel_gi/sca/provider/target/provider.jar";
> >
> >     ContributionService contributionService =
> > domain.getContributionService();
> >     DomainCompositeHelper helper = domain.getDomainCompositeHelper();
> >     ModelResolver myResolver = new
> > ModelResolverImpl(getClass().getClassLoader());
> >
> >     // Contribute the SCA contribution
> >     List<Contribution> contributions = new ArrayList<Contribution>(2);
> >
> >     Contribution contribution = contributionService
> >         .contribute("http://www.greisch.com/provider";, new URL(url),
> > myResolver, false);
> >     assertNotNull(contribution);
> >     contributions.add(contribution);
> >
> >     url = "file:///h:/it/logiciel_gi/sca/consumer/target/classes/";
> >
> >     contribution = contributionService
> >         .contribute("http://www.greisch.com/consumer";, new URL(url),
> > myResolver, false);
> >     assertNotNull(contribution);
> >     contributions.add(contribution);
> >
> >     for (Contribution contrib : contributions) {
> >       for (Composite composite : contrib.getDeployables()) {
> >         helper.addComposite(composite);
> >       }
> >       for (Composite composite : contrib.getDeployables()) {
> >         helper.startComposite(composite);
> >       }
> >     }
> >
> >
> >     Consumer consumer = domain.getService(Consumer.class,
> > "ConsumerComponent");
> >     consumer.consume("Test");
> >
> > I get a NullPointerException when running consumer.consume("Test"). It
> > doesn't link consumer with my ProviderComponent as required in
> > Consumer.composite.
> >
> > I keep going on with all this.
> >
> > Thanks for your help.
> >
> >
> > > -----Message d'origine-----
> > > De : Luciano Resende [mailto:[EMAIL PROTECTED]
> > > Envoyé : mardi 5 juin 2007 19:49
> > > À : tuscany-user@ws.apache.org
> > > Objet : Re: Simple use case problem
> > >
> > >
> > > Patrick
> > >
> > >    The contribution service package processor takes care of
> > > identifying what is the package type and creating the proper jar url
> > > for jar archives. Have you tried to pass a regular file url to the jar
> > > ? Something like :
> > >
> > >   String url = "file://.../provider.jar"
> > >
> > >    The contribution service iTest [1] gives an example of contributing
> > > a jar directly to the contribution service, just look for
> > > testContributeJAR.
> > >
> > >    Please let me know if it works for you after you pass the
> > > simple file url.
> > >
> > >
> > > [1]
> > > https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/itest/
> > > contribution/src/test/java/org/apache/tuscany/sca/test/contributio
> > > n/ContributionServiceTestCase.java
> > >
> > >
> > >
> > > On 6/5/07, Mike Edwards <[EMAIL PROTECTED]> wrote:
> > > > Patrick,
> > > >
> > > > One point to make here is that separate contributions are
> intended to
> > > > have different addresses, which in a simple file system equates to
> > > > different directories.  If you want multiple composites in the same
> > > > directory, then you should make them part of one
> contribution, which is
> > > > allowed.
> > > >
> > > >
> > > > Yours, Mike.
> > > >
> > > > Patrick Vanhuyse wrote:
> > > > > Hi Simon,
> > > > >
> > > > > I removed sca-contibutions.xml from provider. I copied
> > > Provider.composite to
> > > > > consumer/src/main/resource. I add ProviderComposite to
> the consumer
> > > > > sca-contribution.xml. And it works.
> > > > >
> > > > > I have had a look at the code in SCADomain.newInstance(). It
> > > loads only one
> > > > > sca-contribution.xml, the first found by the class loader, I
> > > think. To solve
> > > > > this, it should look at all the sca-contribution.xml
> > > (conflict : they are
> > > > > all in the same folder) from the various jars on the
> > > classpath in place of
> > > > > using only one (depends on the ClassLoader). I don't know if
> > > it's possible
> > > > > (the class loading mechanism is a mystery to me !).
> > > Furthermore, there is
> > > > > the SCA loading mechanism used which is yet a greater mystery.
> > > > >
> > > > > I will go on with my other tests. Afterwards, if I dare, I
> > > will throw myself
> > > > > into all this loading stuff.
> > > > >
> > > > > Thanks for your help.
> > > > >
> > > > > Patrick
> > > > >
> > > > > -----Message d'origine-----
> > > > > De : Simon Laws [mailto:[EMAIL PROTECTED]
> > > > > Envoyé : mercredi 30 mai 2007 18:11
> > > > > À : tuscany-user@ws.apache.org
> > > > > Objet : Re: Simple use case problem
> > > > >
> > > > >
> > > > > Hi Patrick
> > > > >
> > > > > What is going on here is that the consumer module is not
> loading the
> > > > > provider composite. I can make this work by doing the following...
> > > > >
> > > > > 1 - Make the provider composite available to the consumer runtime
> > > > >           copy the Provider.composite to
> consumer/src/main/resource
> > > > > 2 - Make the ProviderComposite deployable
> > > > >           add the ProviderComposite to the consumer
> > > > > sca-contributions.xmlfile
> > > > >
> > > > > Now I kind of expected to have to do 2 so that the runtime
> > > knows that the
> > > > > composite exists and should be deployed.
> > > > >
> > > > > However I don't know how to get round 1. I would like to be
> > > able to specify
> > > > > a jar to load alongside the  consumer composite that is
> > > loaded. However I
> > > > > took a look at the code and there seems to be more work to do
> > > in making the
> > > > > runtime and contribution service flexible in this way. All help is
> > > > > gratefully received if you feel like getting your hands dirty ;-)
> > > > >
> > > > > Regards
> > > > >
> > > > > Simon
> > > > >
> > > > >
> > > > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > >
> > > > >
> > > >
> > > >
> ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > >
> > > >
> > >
> > >
> > > --
> > > Luciano Resende
> > > Apache Tuscany Committer
> > > http://people.apache.org/~lresende
> > > http://lresende.blogspot.com/
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
> --
> Luciano Resende
> Apache Tuscany Committer
> http://people.apache.org/~lresende
> http://lresende.blogspot.com/
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


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




--
Luciano Resende
Apache Tuscany Committer
http://people.apache.org/~lresende
http://lresende.blogspot.com/

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

Reply via email to