diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/FileManager.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/FileManager.java index c7de9563a406891de07ba47b833645b5cf454998..ef2b968a64b21f2e8a4ac767720814b5a0a3e20b 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/FileManager.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/FileManager.java @@ -146,7 +146,7 @@ public final class FileManager { // TODO Copy before saving as the controller destroys at least the dependencies. final AnalysisController controller = new AnalysisController(project); return controller.saveToFile(fileProject); - } catch (final Exception ex) { + } catch (final NullPointerException ex) { FileManager.LOG.error("Could not save project '" + projectName + "'.", ex); return false; } @@ -202,16 +202,12 @@ public final class FileManager { */ final File projectFile = new File(directory, directory.getName() + FileManager.EXTENSION); if (projectFile.exists()) { - try { - /* - * Try to load the project. - */ - final MIProject project = AnalysisController.loadFromFile(projectFile); - if (project != null) { - resultList.add(project); - } - } catch (final Exception ex) { - FileManager.LOG.error("Could not load project '" + directory.getName() + "'.", ex); + /* + * Try to load the project. + */ + final MIProject project = AnalysisController.loadFromFile(projectFile); + if (project != null) { + resultList.add(project); } } } @@ -364,11 +360,7 @@ public final class FileManager { final File projectFile = new File(FileManager.PROJECT_DIR + File.separator + projectName + File.separator + projectName + FileManager.EXTENSION); if (projectFile.isFile()) { - try { - return AnalysisController.loadFromFile(projectFile); - } catch (final Exception ex) { - FileManager.LOG.warn("Error reloaded project '" + projectName + "'", ex); - } + return AnalysisController.loadFromFile(projectFile); } return null; diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/PluginClassLoader.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/PluginClassLoader.java index cd624f352306c1ae48f03c099da6a94c5f9f9093..fa508c19f73a5b056539cc9df696f5bcc1495b94 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/PluginClassLoader.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/PluginClassLoader.java @@ -22,6 +22,8 @@ package kieker.webgui.common; import java.net.URL; import java.net.URLClassLoader; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -46,7 +48,7 @@ public final class PluginClassLoader { /** * This list contains a class loader for each url added to this class loader. */ - private final Map<URL, URLClassLoader> classLoaders = new HashMap<URL, URLClassLoader>(); + private final Map<String, URLClassLoader> classLoaders = new HashMap<String, URLClassLoader>(); /** * The default constructor of this class. @@ -62,10 +64,15 @@ public final class PluginClassLoader { * The URL of the dependency to be added. */ public void addURL(final URL url) { - final URLClassLoader newClassLoader = new URLClassLoader(new URL[] { url }, AnalysisController.class.getClassLoader()); - synchronized (this) { - this.classLoaders.put(url, newClassLoader); - } + /* Create the new class loader within a privileged block. */ + final URLClassLoader newClassLoader = (URLClassLoader) AccessController.doPrivileged(new PrivilegedAction() { + @Override + public Object run() { + return new URLClassLoader(new URL[] { url }, AnalysisController.class.getClassLoader()); + } + }); + + this.classLoaders.put(url.toString(), newClassLoader); } /** @@ -83,8 +90,10 @@ public final class PluginClassLoader { * * @return The singleton instance of this class. */ - public static final synchronized PluginClassLoader getInstance() { - return PluginClassLoader.INSTANCE; + public static final PluginClassLoader getInstance() { + synchronized (PluginClassLoader.class) { + return PluginClassLoader.INSTANCE; + } } /** diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/converter/ClassToStringConverter.java b/Kieker.WebGUI/src/main/java/kieker/webgui/converter/ClassToStringConverter.java index a6a4094bdf0a92f41319edbb3e52d333e0cac4ff..c84dc840d4730fc50186e9c20aa57c8aecaa3537 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/converter/ClassToStringConverter.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/converter/ClassToStringConverter.java @@ -30,6 +30,7 @@ import javax.faces.convert.FacesConverter; /** * * @author Nils Christian Ehmke + * @version 1.0 */ @FacesConverter(value = ClassToStringConverter.NAME) public class ClassToStringConverter implements Converter { @@ -39,6 +40,9 @@ public class ClassToStringConverter implements Converter { */ public static final String NAME = "kieker.webgui.converter.ClassToStringConverter"; + /** + * This field stores the mapping between the classes as string and the actual classes. + */ private final Map<String, Class<?>> mapping; /**