Multiple hosts for a fragment that exports a package causes
ArrayIndexOutOfBoundsException
------------------------------------------------------------------------------------------
Key: FELIX-3463
URL: https://issues.apache.org/jira/browse/FELIX-3463
Project: Felix
Issue Type: Bug
Components: Resolver
Environment: All
Reporter: Thomas Watson
Sample manifests:
Bundle-ManifestVersion: 2
Bundle-SymbolicName: h1
Bundle-Version: 1.0.0
Export-Package:
h1.a; version=1.0,
h1.b; version=1.0; uses:="h1.a"
Bundle-ManifestVersion: 2
Bundle-SymbolicName: h1
Bundle-Version: 1.1.0
Export-Package:
h1.a; version=1.0,
h1.b; version=1.0; uses:="h1.a"
Bundle-ManifestVersion: 2
Bundle-SymbolicName: f1
Bundle-Version: 1.0.0
Export-Package:
f1.a; version=1.0;uses:="h1.a"
Fragment-Host: h1
Bundle-ManifestVersion: 2
Bundle-SymbolicName: b3
Bundle-Version: 1.0.0
Import-Package: f1.a
Then attempt to resolve b3. When inserting the HostedCapabilities an attempt
is made to remove the original capability from the fragment. But it has
already been removed when processing the first host. I think you could do a
simple check for -1 before attempting to remove the original capability.
java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.remove(ArrayList.java:390)
at org.apache.felix.resolver.Candidates.prepare(Candidates.java:760)
at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:125)
at
org.eclipse.osgi.container.ModuleResolver$ResolveProcess.resolve(ModuleResolver.java:378)
at
org.eclipse.osgi.container.ModuleResolver.resolveDelta(ModuleResolver.java:47)
at
org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:238)
at
org.eclipse.osgi.tests.TestModuleContainer.testMultiHost(TestModuleContainer.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at
org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
--
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