From b6aefb0989160828eedce767df0605222b5cd65e Mon Sep 17 00:00:00 2001 From: Nils Christian Ehmke <nie@informatik.uni-kiel.de> Date: Mon, 26 Dec 2011 17:02:35 +0100 Subject: [PATCH] Added some more functionality; Refactored some code; Added the plugin-finder. --- .../beans/AvailablePluginsBean.java | 2 +- .../{ => webgui}/beans/ComponentBean.java | 2 +- .../beans/CurrentProjectBean.java | 2 +- .../beans/CurrentSelectedPluginBean.java | 2 +- .../{ => webgui}/beans/ProjectsBean.java | 2 +- .../java/kieker/webgui/beans/StringBean.java | 24 ++++++++++++ .../kieker/{ => webgui}/beans/TreeBean.java | 2 +- .../kieker/webgui/common/PluginFinder.java | 39 +++++++++++++++++++ Kieker.WebGUI/src/main/webapp/main.xhtml | 12 +++++- 9 files changed, 80 insertions(+), 7 deletions(-) rename Kieker.WebGUI/src/main/java/kieker/{ => webgui}/beans/AvailablePluginsBean.java (95%) rename Kieker.WebGUI/src/main/java/kieker/{ => webgui}/beans/ComponentBean.java (98%) rename Kieker.WebGUI/src/main/java/kieker/{ => webgui}/beans/CurrentProjectBean.java (91%) rename Kieker.WebGUI/src/main/java/kieker/{ => webgui}/beans/CurrentSelectedPluginBean.java (76%) rename Kieker.WebGUI/src/main/java/kieker/{ => webgui}/beans/ProjectsBean.java (98%) create mode 100644 Kieker.WebGUI/src/main/java/kieker/webgui/beans/StringBean.java rename Kieker.WebGUI/src/main/java/kieker/{ => webgui}/beans/TreeBean.java (97%) create mode 100644 Kieker.WebGUI/src/main/java/kieker/webgui/common/PluginFinder.java diff --git a/Kieker.WebGUI/src/main/java/kieker/beans/AvailablePluginsBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/AvailablePluginsBean.java similarity index 95% rename from Kieker.WebGUI/src/main/java/kieker/beans/AvailablePluginsBean.java rename to Kieker.WebGUI/src/main/java/kieker/webgui/beans/AvailablePluginsBean.java index 89458881..f1be8d02 100644 --- a/Kieker.WebGUI/src/main/java/kieker/beans/AvailablePluginsBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/AvailablePluginsBean.java @@ -1,4 +1,4 @@ -package kieker.beans; +package kieker.webgui.beans; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; diff --git a/Kieker.WebGUI/src/main/java/kieker/beans/ComponentBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/ComponentBean.java similarity index 98% rename from Kieker.WebGUI/src/main/java/kieker/beans/ComponentBean.java rename to Kieker.WebGUI/src/main/java/kieker/webgui/beans/ComponentBean.java index 6938d17e..3b47ebd4 100644 --- a/Kieker.WebGUI/src/main/java/kieker/beans/ComponentBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/ComponentBean.java @@ -1,4 +1,4 @@ -package kieker.beans; +package kieker.webgui.beans; import javax.faces.bean.ApplicationScoped; import javax.faces.bean.ManagedBean; diff --git a/Kieker.WebGUI/src/main/java/kieker/beans/CurrentProjectBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/CurrentProjectBean.java similarity index 91% rename from Kieker.WebGUI/src/main/java/kieker/beans/CurrentProjectBean.java rename to Kieker.WebGUI/src/main/java/kieker/webgui/beans/CurrentProjectBean.java index f6d46719..162bc70f 100644 --- a/Kieker.WebGUI/src/main/java/kieker/beans/CurrentProjectBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/CurrentProjectBean.java @@ -1,4 +1,4 @@ -package kieker.beans; +package kieker.webgui.beans; import kieker.analysis.model.analysisMetaModel.MIProject; diff --git a/Kieker.WebGUI/src/main/java/kieker/beans/CurrentSelectedPluginBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/CurrentSelectedPluginBean.java similarity index 76% rename from Kieker.WebGUI/src/main/java/kieker/beans/CurrentSelectedPluginBean.java rename to Kieker.WebGUI/src/main/java/kieker/webgui/beans/CurrentSelectedPluginBean.java index 630ca5c2..af894290 100644 --- a/Kieker.WebGUI/src/main/java/kieker/beans/CurrentSelectedPluginBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/CurrentSelectedPluginBean.java @@ -1,4 +1,4 @@ -package kieker.beans; +package kieker.webgui.beans; /** * diff --git a/Kieker.WebGUI/src/main/java/kieker/beans/ProjectsBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/ProjectsBean.java similarity index 98% rename from Kieker.WebGUI/src/main/java/kieker/beans/ProjectsBean.java rename to Kieker.WebGUI/src/main/java/kieker/webgui/beans/ProjectsBean.java index 9f18ed15..1e668396 100644 --- a/Kieker.WebGUI/src/main/java/kieker/beans/ProjectsBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/ProjectsBean.java @@ -1,4 +1,4 @@ -package kieker.beans; +package kieker.webgui.beans; import java.util.ArrayList; import java.util.List; diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/StringBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/StringBean.java new file mode 100644 index 00000000..b14a57e2 --- /dev/null +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/StringBean.java @@ -0,0 +1,24 @@ +package kieker.webgui.beans; + +import javax.faces.bean.ManagedBean; +import javax.faces.bean.RequestScoped; + +/** + * + * @author Nils Christian Ehmke + */ +@ManagedBean +@RequestScoped +public class StringBean { + + private String string; + + public String getString() { + return string; + } + + public void setString(String string) { + this.string = string; + } + +} diff --git a/Kieker.WebGUI/src/main/java/kieker/beans/TreeBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/TreeBean.java similarity index 97% rename from Kieker.WebGUI/src/main/java/kieker/beans/TreeBean.java rename to Kieker.WebGUI/src/main/java/kieker/webgui/beans/TreeBean.java index 0d2ecfc9..9f8112ae 100644 --- a/Kieker.WebGUI/src/main/java/kieker/beans/TreeBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/TreeBean.java @@ -1,4 +1,4 @@ -package kieker.beans; +package kieker.webgui.beans; import javax.faces.bean.ApplicationScoped; import javax.faces.bean.ManagedBean; diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/PluginFinder.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/PluginFinder.java new file mode 100644 index 00000000..2c96f898 --- /dev/null +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/PluginFinder.java @@ -0,0 +1,39 @@ +package kieker.webgui.common; + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; +import kieker.analysis.plugin.port.Plugin; + +/** + * @author Nils Christian Ehmke + */ +public class PluginFinder { + + public static List<Class<?>> getAllPluginsWithinJar(final URL url) throws IOException { + final ClassLoader classLoader = new URLClassLoader(new URL[]{url}); + final JarFile jarFile = new JarFile(new File(url.getPath())); + final List<Class<?>> result = new ArrayList<Class<?>>(); + Enumeration<JarEntry> jarEntries = jarFile.entries(); + while (jarEntries.hasMoreElements()) { + JarEntry jarEntry = (JarEntry) jarEntries.nextElement(); + try { + String name = jarEntry.toString(); + name = name.replace('/', '.'); + name = name.replace(".class", ""); + Class<?> c = classLoader.loadClass(name); + if (c.isAnnotationPresent(Plugin.class)) { + result.add(c); + } + } catch (Throwable ex) { + } + } + return result; + } +} diff --git a/Kieker.WebGUI/src/main/webapp/main.xhtml b/Kieker.WebGUI/src/main/webapp/main.xhtml index cc18abb3..1e1bfa88 100644 --- a/Kieker.WebGUI/src/main/webapp/main.xhtml +++ b/Kieker.WebGUI/src/main/webapp/main.xhtml @@ -33,7 +33,7 @@ <h:form> <p:menubar style="font-size: 15px"> <p:submenu label="Projects"> - <p:menuitem value="New Project" action="#{projectsBean.addProject('NewProject')}" ajax="true" update="ProjectsList"/> + <p:menuitem value="New Project" onclick="NewProjectDialog.show();" ajax="true" update="ProjectsList"/> <p:menuitem value="Save Project"/> <p:separator /> <p:menuitem value="Delete Project"/> @@ -115,6 +115,16 @@ <h:outputText value="Copyright (c) 2011 Kieker Project"/> <br/><br/> <a href="https://se.informatik.uni-kiel.de/kieker/">https://se.informatik.uni-kiel.de/kieker/</a> </p:dialog> + + <p:dialog header="New Project" resizable="false" modal="true" style="font-size: 15px;width: auto" widgetVar="NewProjectDialog"> + <h:form> + <h:outputText value="Please enter the name of the new project: " /><br/><br/> + <center> + <p:inputText style="width: 90%" value="#{stringBean.string}" /><br/><br/> + <p:commandButton value="Submit" action="#{projectsBean.addProject(stringBean.string)}" update="ProjectsList" oncomplete="NewProjectDialog.hide();"/> + </center> + </h:form> + </p:dialog> </f:view> </html> -- GitLab