/*
* Created on 05.07.2013
*
*/
package org.jdesktop.swingx.plaf;
import java.net.URL;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.ServiceLoader;
import java.util.logging.Logger;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
/**
* Contains failing tests used for debugging the reason for sandbox
* failures. We understand the reasons now, but let's keep the
* tests to not forget.<p>
*
* Note: to run this test manually, remove the ignore annotation
* can't automatically run tests that install a securityManager
* (because I found no way to uninstall it when the test class is done)
*
* @author Jeanette Winzenburg, Berlin
*/
@Ignore
@RunWith(JUnit4.class)
public class LookAndFeelAddonsSandboxDebug extends
LookAndFeelAddonsSandboxOnTest {
@SuppressWarnings("unused")
private static final Logger LOG = Logger
.getLogger(LookAndFeelAddonsSandboxDebug.class.getName());
/**
* Testing privileged access to the ServiceLoader.
* Bare grabbing inside the priviledgeAction doesn't work,
* probably because the classes are
* loaded lazily
*/
@Test
public void testServiceLoaderPrivileged() {
ServiceLoader<LookAndFeelAddons> loader =
AccessController.doPrivileged(new PrivilegedAction<ServiceLoader<LookAndFeelAddons>>() {
@Override
public ServiceLoader<LookAndFeelAddons> run() {
return ServiceLoader.load(LookAndFeelAddons.class);
}
});
assertTrue("loader must have addons: fails here because the loading happens lazily", loader.iterator().hasNext());
}
/**
* Issue #1567-swingx: addon lookup doesn't work in security
* restricted contexts.
*
* Here test if we have access to the serviceProvider resource.
* Not like this - any way to do in the sandbox?
*/
@Test
public void testAccessMetaInf() {
Class<?> clazz = LookAndFeelAddons.class;
// JW: just a reminder (to myself)
// class.getResource interprets path as relative without
// leading slash
// classloader.getResource always absolute
String services = "META-INF/services/" + clazz.getName();
// using the classloader (just as ServiceLoader does)
// absolute path always
URL url = clazz.getClassLoader().getResource(services);
assertNotNull("services must be found: fails in security restricted contexts because the loader " +
"has no access to the provider configuration file",
url);
}
/**
* Issue #1567-swingx: addon lookup doesn't work in security
* restricted contexts.
*
* The core of the issue seems to be that
* ServiceLoader doesn't read the provided addons - expected
* or not?
*/
@Test
public void testServiceLoader() {
ServiceLoader<LookAndFeelAddons> loader = ServiceLoader.load(LookAndFeelAddons.class);
assertTrue("loader must have addons: fails in security restricted contexts because the loader " +
"has no access to the provider configuration file",
loader.iterator().hasNext());
}
}