[
https://issues.apache.org/jira/browse/FELIX-3522?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13294507#comment-13294507
]
Richard S. Hall commented on FELIX-3522:
----------------------------------------
In ResolverImpl.calculateExportedPackages() we do this to calculate exported
packages for a revision:
Wiring wiring = rc.getWirings().get(resource);
List<Capability> caps = (wiring != null)
? wiring.getResourceCapabilities(null)
: resource.getCapabilities(null);
Notice that if there is a wiring (i.e., the revision is resolved), we get the
caps from Wiring.getResourceCapabilities(). This method should not return
exported packages that were imported (i.e., substituted); it is supposed to
return the "resolved" capabilities.
If it does this correctly, then it shouldn't be the case later that we will see
the same package as being both exported and imported in the package space. Are
you sure that your Wiring.getResourceCapabilities() method is filtering out
substituted exported packages?
> Regression related to uses clause with multiple package providers
> -----------------------------------------------------------------
>
> Key: FELIX-3522
> URL: https://issues.apache.org/jira/browse/FELIX-3522
> Project: Felix
> Issue Type: Bug
> Components: Resolver
> Reporter: Thomas Diesler
> Attachments: test.log, trace-test-resolve-fail.log,
> trace-test-resolve-ok.log
>
>
> For this test
> https://github.com/tdiesler/jbosgi-resolver/blob/master/felix/src/test/java/org/jboss/test/osgi/resolver/UsesDirectiveResolverTest.java
> I get
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.116 sec <<<
> FAILURE!
> testMultipleProviders(org.jboss.test.osgi.resolver.UsesDirectiveResolverTest)
> Time elapsed: 0.096 sec <<< ERROR!
> org.osgi.service.resolver.ResolutionException: Uses constraint violation.
> Unable to resolve resource war.extender.jar
> [AbstractResource[war.extender.jar:0.0.0]] because it is exposed to package
> 'javax.servlet' from resources javax.servlet.api
> [AbstractResource[javax.servlet.api:0.0.0]] and http.service.provider
> [AbstractResource[http.service.provider:0.0.0]] via two dependency chains.
> Chain 1:
> war.extender.jar [AbstractResource[war.extender.jar:0.0.0]]
> import: null
> |
> export: osgi.wiring.package=javax.servlet
> javax.servlet.api [AbstractResource[javax.servlet.api:0.0.0]]
> Chain 2:
> war.extender.jar [AbstractResource[war.extender.jar:0.0.0]]
> import: null
> |
> export: osgi.wiring.package=org.ops4j.pax.web.service; uses:=javax.servlet
> export: osgi.wiring.package=javax.servlet
> http.service.provider [AbstractResource[http.service.provider:0.0.0]]
> at
> org.apache.felix.resolver.ResolverImpl.checkPackageSpaceConsistency(ResolverImpl.java:1134)
> at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:197)
> at
> org.jboss.osgi.resolver.felix.StatelessResolver.resolve(StatelessResolver.java:57)
> at
> org.jboss.test.osgi.resolver.UsesDirectiveResolverTest.testMultipleProviders(UsesDirectiveResolverTest.java:158)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira