diff options
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.java | 31 |
1 files changed, 31 insertions, 0 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 131d77a03..3185a16c9 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 @@ -37,6 +37,7 @@ import org.osgi.framework.wiring.FrameworkWiring; public class ClassLoaderHookTests extends AbstractFrameworkHookTests { private static final String TEST_BUNDLE = "substitutes.a"; private static final String TEST_CLASSNAME = "substitutes.x.Ax"; + private static final String TEST_CLASSNAME_RESOURCE = "substitutes/x/Ax.class"; private static final String HOOK_CONFIGURATOR_BUNDLE = "classloader.hooks.a"; 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"; @@ -44,6 +45,8 @@ public class ClassLoaderHookTests extends AbstractFrameworkHookTests { 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 static final String FILTER_CLASS_PATHS = "classloader.hooks.a.filter.class.paths"; + private static final String PREVENT_RESOURCE_LOAD_PRE = "classloader.hooks.a.fail.resource.load.pre"; + private static final String PREVENT_RESOURCE_LOAD_POST = "classloader.hooks.a.fail.resource.load.post"; private Map<String, String> configuration; private Framework framework; @@ -56,6 +59,8 @@ public class ClassLoaderHookTests extends AbstractFrameworkHookTests { setRecursionLoad(false); setRecursionLoadSupported(false); setFilterClassPaths(false); + setPreventResourceLoadPre(false); + setPreventResourceLoadPost(false); String loc = bundleInstaller.getBundleLocation(HOOK_CONFIGURATOR_BUNDLE); loc = loc.substring(loc.indexOf("file:")); classLoader.addURL(new URL(loc)); @@ -100,6 +105,14 @@ public class ClassLoaderHookTests extends AbstractFrameworkHookTests { System.setProperty(FILTER_CLASS_PATHS, Boolean.toString(value)); } + private void setPreventResourceLoadPre(boolean value) { + System.setProperty(PREVENT_RESOURCE_LOAD_PRE, Boolean.toString(value)); + } + + private void setPreventResourceLoadPost(boolean value) { + System.setProperty(PREVENT_RESOURCE_LOAD_POST, Boolean.toString(value)); + } + public void testRejectTransformationFromWeavingHook() throws Exception { setRejectTransformation(true); initAndStartFramework(); @@ -193,4 +206,22 @@ public class ClassLoaderHookTests extends AbstractFrameworkHookTests { // expected } } + + public void testPreventResourceLoadFromClassLoadingHook() throws Exception { + setPreventResourceLoadPre(false); + setPreventResourceLoadPost(false); + initAndStartFramework(); + Bundle b = installBundle(); + URL resource = b.getResource(TEST_CLASSNAME_RESOURCE); + assertNotNull("Could not find resource.", resource); + + setPreventResourceLoadPre(true); + resource = b.getResource(TEST_CLASSNAME_RESOURCE); + assertNull("Could find resource.", resource); + + setPreventResourceLoadPre(false); + setPreventResourceLoadPost(true); + resource = b.getResource(TEST_CLASSNAME_RESOURCE); + assertNull("Could find resource.", resource); + } } |