Bug 207847 Warnings in the log file when nl fragments for osgi bundles are present.
diff --git a/bundles/org.eclipse.osgi.tests/.classpath b/bundles/org.eclipse.osgi.tests/.classpath
index fb0c6a2..5a592fe 100644
--- a/bundles/org.eclipse.osgi.tests/.classpath
+++ b/bundles/org.eclipse.osgi.tests/.classpath
@@ -27,6 +27,12 @@
<classpathentry kind="src" output="bundle_tests/buddy.dependent.a" path="bundles_src/buddy.dependent.a"/>
<classpathentry kind="src" output="bundle_tests/buddy.dependent.a.test1" path="bundles_src/buddy.dependent.a.test1"/>
<classpathentry kind="src" output="bundle_tests/buddy.dependent.a.test2" path="bundles_src/buddy.dependent.a.test2"/>
+ <classpathentry kind="src" output="bundle_tests/test.fragment1" path="bundles_src/test.fragment1"/>
+ <classpathentry kind="src" output="bundle_tests/test.fragment2" path="bundles_src/test.fragment2"/>
+ <classpathentry kind="src" output="bundle_tests/test.fragment3" path="bundles_src/test.fragment3"/>
+ <classpathentry kind="src" output="bundle_tests/test.fragment4" path="bundles_src/test.fragment4"/>
+ <classpathentry kind="src" output="bundle_tests/test.fragment5" path="bundles_src/test.fragment5"/>
+
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.osgi.tests/build.properties b/bundles/org.eclipse.osgi.tests/build.properties
index eb1c251..917e81e 100644
--- a/bundles/org.eclipse.osgi.tests/build.properties
+++ b/bundles/org.eclipse.osgi.tests/build.properties
@@ -68,6 +68,16 @@
manifest.bundle_tests/buddy.dependent.a.test1.jar = META-INF/MANIFEST.MF
source.bundle_tests/buddy.dependent.a.test2.jar = bundles_src/buddy.dependent.a.test2/
manifest.bundle_tests/buddy.dependent.a.test2.jar = META-INF/MANIFEST.MF
+source.bundle_tests/test.fragment1.jar = bundles_src/test.fragment1/
+manifest.bundle_tests/test.fragment1.jar = META-INF/MANIFEST.MF
+source.bundle_tests/test.fragment2.jar = bundles_src/test.fragment2/
+manifest.bundle_tests/test.fragment2.jar = META-INF/MANIFEST.MF
+source.bundle_tests/test.fragment3.jar = bundles_src/test.fragment3/
+manifest.bundle_tests/test.fragment3.jar = META-INF/MANIFEST.MF
+source.bundle_tests/test.fragment4.jar = bundles_src/test.fragment4/
+manifest.bundle_tests/test.fragment4.jar = META-INF/MANIFEST.MF
+source.bundle_tests/test.fragment5.jar = bundles_src/test.fragment5/
+manifest.bundle_tests/test.fragment5.jar = META-INF/MANIFEST.MF
jars.compile.order = osgitests.jar,\
bundle_tests/test.jar,\
@@ -95,4 +105,10 @@
bundle_tests/buddy.registered.a.test2.jar,\
bundle_tests/buddy.dependent.a,\
bundle_tests/buddy.dependent.a.test1.jar,\
- bundle_tests/buddy.dependent.a.test2.jar
+ bundle_tests/buddy.dependent.a.test2.jar,\
+ bundle_tests/test.fragment1.jar,\
+ bundle_tests/test.fragment2.jar,\
+ bundle_tests/test.fragment3.jar,\
+ bundle_tests/test.fragment4.jar,\
+ bundle_tests/test.fragment5.jar
+
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment1/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment1/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1b5383b
--- /dev/null
+++ b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment1/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: test.fragment1
+Bundle-SymbolicName: test.fragment1
+Bundle-Version: 1.0.0
+Fragment-Host: test1
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment2/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment2/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..06029a2
--- /dev/null
+++ b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment2/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: test.fragment2
+Bundle-SymbolicName: test.fragment2
+Bundle-Version: 1.0.0
+Fragment-Host: test1
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment3/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment3/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5eb286e
--- /dev/null
+++ b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment3/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: test.fragment3
+Bundle-SymbolicName: test.fragment3
+Bundle-Version: 1.0.0
+Fragment-Host: test1
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment4/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment4/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c0768c4
--- /dev/null
+++ b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment4/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: test.fragment4
+Bundle-SymbolicName: test.fragment4
+Bundle-Version: 1.0.0
+Fragment-Host: test1
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment5/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment5/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8afa4a4
--- /dev/null
+++ b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment5/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: test.fragment5
+Bundle-SymbolicName: test.fragment5
+Bundle-Version: 1.0.0
+Fragment-Host: test1
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ClassLoadingBundleTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ClassLoadingBundleTests.java
index 6240826..67311bd 100644
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ClassLoadingBundleTests.java
+++ b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ClassLoadingBundleTests.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -536,6 +536,28 @@
assertEquals("stuff resource", "stuff classpath test2", readURL((URL) resourceURLs.get(3)));
}
+ public void testBug207847() throws BundleException {
+ Bundle test = installer.installBundle("test"); //$NON-NLS-1$
+ installer.resolveBundles(new Bundle[] {test});
+ test.start();
+
+ Bundle frag1 = installer.installBundle("test.fragment1"); //$NON-NLS-1$
+ Bundle frag2 = installer.installBundle("test.fragment2"); //$NON-NLS-1$
+ Bundle frag3 = installer.installBundle("test.fragment3"); //$NON-NLS-1$
+ Bundle frag4 = installer.installBundle("test.fragment4"); //$NON-NLS-1$
+ Bundle frag5 = installer.installBundle("test.fragment5"); //$NON-NLS-1$
+ installer.resolveBundles(new Bundle[] {frag1, frag2, frag3, frag4, frag5});
+
+ assertTrue("host is not resolved", (test.getState() & Bundle.ACTIVE) != 0); //$NON-NLS-1$
+ assertTrue("frag1 is not resolved", (frag1.getState() & Bundle.RESOLVED) != 0); //$NON-NLS-1$
+ assertTrue("frag2 is not resolved", (frag2.getState() & Bundle.RESOLVED) != 0); //$NON-NLS-1$
+ assertTrue("frag3 is not resolved", (frag3.getState() & Bundle.RESOLVED) != 0); //$NON-NLS-1$
+ assertTrue("frag4 is not resolved", (frag4.getState() & Bundle.RESOLVED) != 0); //$NON-NLS-1$
+ assertTrue("frag5 is not resolved", (frag5.getState() & Bundle.RESOLVED) != 0); //$NON-NLS-1$
+ }
+
+
+
// TODO temporarily disable til we can debug the build test machine on Win XP
// public void testBuddyClassLoadingRegistered1() throws Exception{
// Bundle registeredA = installer.installBundle("buddy.registered.a");
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PackageAdminImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PackageAdminImpl.java
index b0365b0..964ee65 100644
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PackageAdminImpl.java
+++ b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PackageAdminImpl.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -14,7 +14,7 @@
import java.io.IOException;
import java.security.AccessController;
import java.security.PrivilegedAction;
-import java.util.ArrayList;
+import java.util.*;
import org.eclipse.osgi.framework.adaptor.BundleClassLoader;
import org.eclipse.osgi.framework.adaptor.BundleData;
import org.eclipse.osgi.framework.debug.Debug;
@@ -338,6 +338,11 @@
}
private AbstractBundle[] applyDeltas(BundleDelta[] bundleDeltas) throws BundleException {
+ Arrays.sort(bundleDeltas, new Comparator() {
+ public int compare(Object delta0, Object delta1) {
+ return (int) (((BundleDelta) delta0).getBundle().getBundleId() - ((BundleDelta) delta1).getBundle().getBundleId());
+ }
+ });
ArrayList results = new ArrayList(bundleDeltas.length);
for (int i = 0; i < bundleDeltas.length; i++) {
int type = bundleDeltas[i].getType();