Bug 287449 Behavior change between 3.4.2 and 3.5 around TCCL management when a Bundle is started
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeShareTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeShareTests.java
index e9e61ea..bddeb51 100644
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeShareTests.java
+++ b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeShareTests.java
@@ -933,6 +933,13 @@
 		} finally {
 			Thread.currentThread().setContextClassLoader(current);
 		}
+		// test that starting directly works
+		try {
+			testTCCL.stop();
+			testTCCL.start();
+		} catch (BundleException e) {
+			fail("Unepected", e); //$NON-NLS-1$
+		}
 		uninstallCompositeBundle(compositeBundle);
 	}
 
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleContextImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleContextImpl.java
index 073da42..b405a3d 100644
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleContextImpl.java
+++ b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleContextImpl.java
@@ -33,6 +33,7 @@
  */
 
 public class BundleContextImpl implements BundleContext, EventDispatcher {
+	private static boolean SET_TCCL = "true".equals(FrameworkProperties.getProperty("eclipse.bundle.setTCCL", "true")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 	/** true if the bundle context is still valid */
 	private volatile boolean valid;
 
@@ -810,6 +811,8 @@
 	}
 
 	Object setContextFinder() {
+		if (!SET_TCCL)
+			return Boolean.FALSE;
 		Thread currentThread = Thread.currentThread();
 		ClassLoader previousTCCL = currentThread.getContextClassLoader();
 		ClassLoader contextFinder = framework.getContextFinder();