Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/hooks/framework/ClassLoaderHookTests.java')
-rw-r--r--bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/hooks/framework/ClassLoaderHookTests.java33
1 files changed, 31 insertions, 2 deletions
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/hooks/framework/ClassLoaderHookTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/hooks/framework/ClassLoaderHookTests.java
index 56d2b76e1..d342e8ecd 100644
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/hooks/framework/ClassLoaderHookTests.java
+++ b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/hooks/framework/ClassLoaderHookTests.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013, 2016 IBM Corporation and others.
+ * Copyright (c) 2013, 2017 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
@@ -32,6 +32,8 @@ public class ClassLoaderHookTests extends AbstractFrameworkHookTests {
private static final String HOOK_CONFIGURATOR_CLASS = "org.eclipse.osgi.tests.classloader.hooks.a.TestHookConfigurator";
private static final String REJECT_PROP = "classloader.hooks.a.reject";
private static final String BAD_TRANSFORM_PROP = "classloader.hooks.a.bad.transform";
+ private static final String RECURSION_LOAD = "classloader.hooks.a.recursion.load";
+ private static final String RECURSION_LOAD_SUPPORTED = "classloader.hooks.a.recursion.load.supported";
private Map<String, String> configuration;
private Framework framework;
@@ -41,6 +43,8 @@ public class ClassLoaderHookTests extends AbstractFrameworkHookTests {
super.setUp();
setRejectTransformation(false);
setBadTransform(false);
+ setRecursionLoad(false);
+ setRecursionLoadSupported(false);
String loc = bundleInstaller.getBundleLocation(HOOK_CONFIGURATOR_BUNDLE);
loc = loc.substring(loc.indexOf("file:"));
classLoader.addURL(new URL(loc));
@@ -65,7 +69,7 @@ public class ClassLoaderHookTests extends AbstractFrameworkHookTests {
return framework.getBundleContext().installBundle(location);
}
- private void setRejectTransformation(boolean value) throws Exception {
+ private void setRejectTransformation(boolean value) {
System.setProperty(REJECT_PROP, Boolean.toString(value));
}
@@ -73,6 +77,14 @@ public class ClassLoaderHookTests extends AbstractFrameworkHookTests {
System.setProperty(BAD_TRANSFORM_PROP, Boolean.toString(value));
}
+ private void setRecursionLoad(boolean value) {
+ System.setProperty(RECURSION_LOAD, Boolean.toString(value));
+ }
+
+ private void setRecursionLoadSupported(boolean value) {
+ System.setProperty(RECURSION_LOAD_SUPPORTED, Boolean.toString(value));
+ }
+
public void testRejectTransformationFromWeavingHook() throws Exception {
setRejectTransformation(true);
initAndStartFramework();
@@ -95,6 +107,7 @@ public class ClassLoaderHookTests extends AbstractFrameworkHookTests {
refreshBundles(Collections.singleton(b));
try {
b.loadClass(TEST_CLASSNAME);
+ fail("Expected a ClassFormatError.");
} catch (ClassFormatError e) {
// expected
}
@@ -115,11 +128,27 @@ public class ClassLoaderHookTests extends AbstractFrameworkHookTests {
refreshBundles(Collections.singleton(b));
try {
b.loadClass(TEST_CLASSNAME);
+ fail("Expected a ClassFormatError.");
} catch (ClassFormatError e) {
// expected
}
}
+ public void testRecursionFromClassLoadingHookNotSupported() throws Exception {
+ setRecursionLoad(true);
+ initAndStartFramework();
+ Bundle b = installBundle();
+ b.loadClass(TEST_CLASSNAME);
+ }
+
+ public void testRecursionFromClassLoadingHookIsSupported() throws Exception {
+ setRecursionLoad(true);
+ setRecursionLoadSupported(true);
+ initAndStartFramework();
+ Bundle b = installBundle();
+ b.loadClass(TEST_CLASSNAME);
+ }
+
private void refreshBundles(Collection<Bundle> bundles) throws InterruptedException {
final CountDownLatch refreshSignal = new CountDownLatch(1);
framework.adapt(FrameworkWiring.class).refreshBundles(bundles, new FrameworkListener() {

Back to the top