Luciano, Thanks. Works fine with these corrections.
> -----Message d'origine----- > De : Luciano Resende [mailto:[EMAIL PROTECTED] > Envoyé : vendredi 8 juin 2007 7:31 > À : tuscany-user@ws.apache.org; tuscany-dev > Objet : Adding Multiple Contributions, was:Re: Simple use case problem > > > 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/lresend > e/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] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]