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();