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 89458881ba6acf9c3d9d6dd78861f71647802d32..f1be8d02406d5ff4fd1f33961a21b1714aecd59d 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 6938d17e684d5eae89767fc950180f0acff7939a..3b47ebd4a4471ff061d1c5d91432e9cf353dc8c8 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 f6d4671929f4cc03947944bd7ff194d10e10a5ef..162bc70f308a0685fbd59fd5df61dfccac3ea094 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 630ca5c273a7e316e2740ae58e9268709cee56b8..af89429067a375e74c2d4f6d3c64ca11eecb5c79 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 9f18ed15bb5290fd08a1e017dbb749d73a505cce..1e6683965ef91e11227449cb83dd67b721398ca5 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 0000000000000000000000000000000000000000..b14a57e282948636cde2f99a4bc84429f409698b --- /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 0d2ecfc972cd04fcc6f3082facc61ce47b7de660..9f8112ae8f3eee49382417858af4c0966a8921d5 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 0000000000000000000000000000000000000000..2c96f898c1a21c2adc551de912db09078442b221 --- /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 cc18abb311c728f845161964eab5f8e5cd7ef220..1e1bfa88f1b185252db55310fe92c481939ed744 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>