From 0d8693bb050164e3976d4b689f3fa79588ac01ad Mon Sep 17 00:00:00 2001 From: Ted Nathan Husted Date: Mon, 9 Oct 2006 02:08:06 +0000 Subject: [PATCH] WW-1462 Break out toolbox into QuickStart and SiteGraph plugins. git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@454250 13f79535-47bb-0310-9956-ffa450edef68 --- {toolbox => quickstart}/pom.xml | 0 .../main/java/org/apache/struts2/Main.java | 17 +- .../struts2/quickstart/Configuration.java | 0 .../struts2/quickstart/JettyServer.java | 0 .../apache/struts2/quickstart/Mapping.java | 0 .../quickstart/MultiDirClassLoader.java | 0 .../struts2/quickstart/MultiDirResource.java | 0 .../MultiWebApplicationContext.java | 0 .../apache/struts2/quickstart/QuickStart.java | 0 sitegraph/pom.xml | 132 ++++++++++ .../main/java/org/apache/struts2/Main.java | 231 ++++++++++++++++++ .../apache/struts2/sitegraph/SiteGraph.java | 0 .../sitegraph/StrutsConfigRetriever.java | 0 .../sitegraph/entities/FileBasedView.java | 0 .../sitegraph/entities/FreeMarkerView.java | 0 .../struts2/sitegraph/entities/JspView.java | 0 .../struts2/sitegraph/entities/Target.java | 0 .../sitegraph/entities/VelocityView.java | 0 .../struts2/sitegraph/entities/View.java | 0 .../struts2/sitegraph/model/ActionNode.java | 0 .../apache/struts2/sitegraph/model/Graph.java | 0 .../struts2/sitegraph/model/IndentWriter.java | 0 .../apache/struts2/sitegraph/model/Link.java | 0 .../struts2/sitegraph/model/Render.java | 0 .../sitegraph/model/SiteGraphNode.java | 0 .../struts2/sitegraph/model/SubGraph.java | 0 .../struts2/sitegraph/model/ViewNode.java | 0 .../sitegraph/renderers/DOTRenderer.java | 0 .../struts2/sitegraph/SiteGraphTest.java | 0 .../org/apache/struts2/sitegraph/hello.jsp | 0 .../org/apache/struts2/sitegraph/out.txt | 0 .../org/apache/struts2/sitegraph/struts.xml | 0 .../tutorial/sitegraph/guess-error.ftl | 0 .../tutorial/sitegraph/guess-input.ftl | 0 .../tutorial/sitegraph/guess-success.jsp | 0 35 files changed, 364 insertions(+), 16 deletions(-) rename {toolbox => quickstart}/pom.xml (100%) rename {toolbox => quickstart}/src/main/java/org/apache/struts2/Main.java (93%) rename {toolbox => quickstart}/src/main/java/org/apache/struts2/quickstart/Configuration.java (100%) rename {toolbox => quickstart}/src/main/java/org/apache/struts2/quickstart/JettyServer.java (100%) rename {toolbox => quickstart}/src/main/java/org/apache/struts2/quickstart/Mapping.java (100%) rename {toolbox => quickstart}/src/main/java/org/apache/struts2/quickstart/MultiDirClassLoader.java (100%) rename {toolbox => quickstart}/src/main/java/org/apache/struts2/quickstart/MultiDirResource.java (100%) rename {toolbox => quickstart}/src/main/java/org/apache/struts2/quickstart/MultiWebApplicationContext.java (100%) rename {toolbox => quickstart}/src/main/java/org/apache/struts2/quickstart/QuickStart.java (100%) create mode 100644 sitegraph/pom.xml create mode 100644 sitegraph/src/main/java/org/apache/struts2/Main.java rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/SiteGraph.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/StrutsConfigRetriever.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/entities/FileBasedView.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/entities/FreeMarkerView.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/entities/JspView.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/entities/Target.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/entities/VelocityView.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/entities/View.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/model/ActionNode.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/model/Graph.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/model/IndentWriter.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/model/Link.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/model/Render.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/model/SiteGraphNode.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/model/SubGraph.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/model/ViewNode.java (100%) rename {toolbox => sitegraph}/src/main/java/org/apache/struts2/sitegraph/renderers/DOTRenderer.java (100%) rename {toolbox => sitegraph}/src/test/java/org/apache/struts2/sitegraph/SiteGraphTest.java (100%) rename {toolbox => sitegraph}/src/test/resources/org/apache/struts2/sitegraph/hello.jsp (100%) rename {toolbox => sitegraph}/src/test/resources/org/apache/struts2/sitegraph/out.txt (100%) rename {toolbox => sitegraph}/src/test/resources/org/apache/struts2/sitegraph/struts.xml (100%) rename {toolbox => sitegraph}/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-error.ftl (100%) rename {toolbox => sitegraph}/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-input.ftl (100%) rename {toolbox => sitegraph}/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-success.jsp (100%) diff --git a/toolbox/pom.xml b/quickstart/pom.xml similarity index 100% rename from toolbox/pom.xml rename to quickstart/pom.xml diff --git a/toolbox/src/main/java/org/apache/struts2/Main.java b/quickstart/src/main/java/org/apache/struts2/Main.java similarity index 93% rename from toolbox/src/main/java/org/apache/struts2/Main.java rename to quickstart/src/main/java/org/apache/struts2/Main.java index de760856a..4621c58a3 100644 --- a/toolbox/src/main/java/org/apache/struts2/Main.java +++ b/quickstart/src/main/java/org/apache/struts2/Main.java @@ -49,8 +49,6 @@ public class Main { System.out.println("Where [command] is one of the following:"); System.out.println(" quickstart"); System.out.println(" quickstart:xxx"); - System.out.println(" sitegraph"); - System.out.println(" sitegraph:xxx"); System.out.println(""); System.out.println("Execute the commands for additional usage instructions."); System.out.println("Note: the *:xxx commands are just shortcuts for "); @@ -136,19 +134,6 @@ public class Main { "apps/" + name + "/src/main/resources"}; } - if ("quickstart".equals(command)) { - if (!jdk15) { - System.out.println("Sorry, but QuickStart only runs on Java 1.5."); - System.out.println("You are running: " + version); - System.out.println("Please try again with Java 1.5, or deploy"); - System.out.println(" as a normal J2EE webapp to use Java 1.4."); - return; - } - - launch("org.apache.struts2.quickstart.QuickStart", programArgs, urls); - return; - } - if (command.startsWith("sitegraph:")) { command = "sitegraph"; String name = checkWebAppArgs(args); @@ -201,7 +186,7 @@ public class Main { if (files == null) { return; } - + for (int i = 0; i < files.length; i++) { File f = files[i]; if (f.isDirectory()) { diff --git a/toolbox/src/main/java/org/apache/struts2/quickstart/Configuration.java b/quickstart/src/main/java/org/apache/struts2/quickstart/Configuration.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/quickstart/Configuration.java rename to quickstart/src/main/java/org/apache/struts2/quickstart/Configuration.java diff --git a/toolbox/src/main/java/org/apache/struts2/quickstart/JettyServer.java b/quickstart/src/main/java/org/apache/struts2/quickstart/JettyServer.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/quickstart/JettyServer.java rename to quickstart/src/main/java/org/apache/struts2/quickstart/JettyServer.java diff --git a/toolbox/src/main/java/org/apache/struts2/quickstart/Mapping.java b/quickstart/src/main/java/org/apache/struts2/quickstart/Mapping.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/quickstart/Mapping.java rename to quickstart/src/main/java/org/apache/struts2/quickstart/Mapping.java diff --git a/toolbox/src/main/java/org/apache/struts2/quickstart/MultiDirClassLoader.java b/quickstart/src/main/java/org/apache/struts2/quickstart/MultiDirClassLoader.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/quickstart/MultiDirClassLoader.java rename to quickstart/src/main/java/org/apache/struts2/quickstart/MultiDirClassLoader.java diff --git a/toolbox/src/main/java/org/apache/struts2/quickstart/MultiDirResource.java b/quickstart/src/main/java/org/apache/struts2/quickstart/MultiDirResource.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/quickstart/MultiDirResource.java rename to quickstart/src/main/java/org/apache/struts2/quickstart/MultiDirResource.java diff --git a/toolbox/src/main/java/org/apache/struts2/quickstart/MultiWebApplicationContext.java b/quickstart/src/main/java/org/apache/struts2/quickstart/MultiWebApplicationContext.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/quickstart/MultiWebApplicationContext.java rename to quickstart/src/main/java/org/apache/struts2/quickstart/MultiWebApplicationContext.java diff --git a/toolbox/src/main/java/org/apache/struts2/quickstart/QuickStart.java b/quickstart/src/main/java/org/apache/struts2/quickstart/QuickStart.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/quickstart/QuickStart.java rename to quickstart/src/main/java/org/apache/struts2/quickstart/QuickStart.java diff --git a/sitegraph/pom.xml b/sitegraph/pom.xml new file mode 100644 index 000000000..296c2087a --- /dev/null +++ b/sitegraph/pom.xml @@ -0,0 +1,132 @@ + + + 4.0.0 + + org.apache.struts + struts2-parent + 2.0.1-SNAPSHOT + + org.apache.struts + struts2-sitegraph + jar + Struts 2 - sitegraph + + + + apache-site + scp://people.apache.org/www/struts.apache.org/2.x/struts-sitegraph + + + + + + org.apache.struts + struts2-core + ${pom.version} + + + + javax.servlet + servlet-api + 2.4 + provided + + + + javax.servlet + jsp-api + 2.0 + provided + + + + + jetty + org.mortbay.jetty + 5.1.4 + true + + + + eclipse + jdtcore + 3.1.0 + true + + + + ant + ant + 1.6.5 + true + + + + tomcat + jasper-compiler + 5.5.12 + true + + + + tomcat + jasper-runtime + 5.5.12 + true + + + + tomcat + jasper-compiler-jdt + 5.5.12 + true + + + + commons-el + commons-el + 1.0 + true + + + + commons-io + commons-io + 1.0 + true + + + + commons-lang + commons-lang + 2.1 + true + + + + + junit + junit + test + 3.8.1 + + + + org.springframework + spring-core + 1.2.8 + test + + + + + org.springframework + spring-mock + 1.2.8 + test + + + + + diff --git a/sitegraph/src/main/java/org/apache/struts2/Main.java b/sitegraph/src/main/java/org/apache/struts2/Main.java new file mode 100644 index 000000000..3a51261ad --- /dev/null +++ b/sitegraph/src/main/java/org/apache/struts2/Main.java @@ -0,0 +1,231 @@ +/* + * $Id$ + * + * Copyright 2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.struts2; + +import java.io.File; +import java.io.FilenameFilter; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * + * + * Struts comes with various related tools included in the struts-core-VERSION.jar file. You can access these + * tools by simply unpacking the Struts distribution and running java -jar struts-core-VERSION.jar. + * Struts will automatically include all jars in the same directory as the struts-core-VERSION.jar file as well as all + * jars in the lib directory. This means you can invoke these tools either from within the standard directory + * structure found in the Struts distribution, or from within your WEB-INF/lib directory. + * + *

You can access the help information for these tools by simply running the jar without any arguments. + * + * + */ +public class Main { + public static void main(String[] args) { + if (args.length == 0) { + System.out.println("Usage:"); + System.out.println(" java -jar struts-toolbox.jar [command] (optional command args)"); + System.out.println(""); + System.out.println("Where [command] is one of the following:"); + System.out.println(" sitegraph"); + System.out.println(" sitegraph:xxx"); + System.out.println(""); + System.out.println("Execute the commands for additional usage instructions."); + System.out.println("Note: the *:xxx commands are just shortcuts for "); + System.out.println(" running the command on a webapp in the apps dir."); + return; + } + + // check the JDK version + String version = System.getProperty("java.version"); + boolean jdk15 = version.indexOf("1.5") != -1; + + String javaHome = System.getProperty("java.home"); + ArrayList urls = new ArrayList(); + try { + findJars(new File("lib"), urls); + + // use all the jars in the current that aren't the src jar + File wd = new File("."); + File[] jars = wd.listFiles(new FilenameFilter() { + public boolean accept(File dir, String name) { + return name.endsWith(".jar") && name.indexOf("-src.") == -1; + } + }); + for (int i = 0; i < jars.length; i++) { + File jar = jars[i]; + urls.add(jar.toURL()); + } + + // ... but there might not be any (ie: we're in development in IDEA), so use this as backup + urls.add(new File(System.getProperty("struts.classes", "build/java")).toURL()); + urls.add(new File(System.getProperty("xwork.classes", "../xwork/build/java/")).toURL()); + + // load tools.jar from JAVA_HOME + File tools = new File(javaHome, "lib/tools.jar"); + if (!tools.exists()) { + // hmm, not there, how about java.home? + tools = new File(javaHome, "../lib/tools.jar"); + } + if (!tools.exists()) { + // try the OS X common path + tools = new File(javaHome, "../Classes/classes.jar"); + } + if (!tools.exists()) { + // try the other OS X common path + tools = new File(javaHome, "../Classes/classes.jar"); + } + if (!tools.exists()) { + // did the user specify it by hand? + String prop = System.getProperty("tools"); + if (prop != null) { + tools = new File(prop); + } + } + if (!tools.exists()) { + System.out.println("Error: Could not find tools.jar! Please do one of the following: "); + System.out.println(""); + System.out.println(" - Use the JDK's JVM (ie: c:\\jdk1.5.0\\bin\\java)"); + System.out.println(" - Specify JAVA_HOME to point to your JDK 1.5 home"); + System.out.println(" - Specify a direct path to tools.jar via, as shown below:"); + System.out.println(""); + System.out.println(" java -Dtools=/path/to/tools.jar -jar struts.jar ..."); + return; + } + + // finally, add the verified tools.jar + urls.add(tools.toURL()); + } catch (MalformedURLException e) { + e.printStackTrace(); + System.out.println("Could not find URLs -- see stack trace."); + } + + String command = args[0]; + String[] programArgs = new String[args.length - 1]; + System.arraycopy(args, 1, programArgs, 0, programArgs.length); + + if (command.startsWith("sitegraph:")) { + command = "sitegraph"; + String name = checkWebAppArgs(args); + programArgs = new String[]{"-config", "apps/" + name + "/src/webapp/WEB-INF/classes", + "-views", "apps/" + name + "/src/webapp", + "-output", "."}; + } + + if ("sitegraph".equals(command)) { + launch("org.apache.struts2.sitegraph.SiteGraph", programArgs, urls); + } + } + + private static String checkWebAppArgs(String[] args) { + int colon = args[0].indexOf(':'); + String name = null; + try { + name = args[0].substring(colon + 1); + } catch (Exception e) { + //this is OK to skip + } + if (name == null || name.equals("")) { + System.out.println("Error: you must specify the webapp you wish"); + System.out.println(" to deploy. The webapp name must be the"); + System.out.println(" name of the directory found in apps/."); + System.out.println(""); + System.out.println("Example: java -jar struts-core-VERSION.jar quickstart:sandbox"); + System.exit(1); + } + + return name; + } + + private static void launch(String program, String[] programArgs, List urls) { + Collections.reverse(urls); + URL[] urlArray = urls.toArray(new URL[urls.size()]); + URLClassLoader cl = new MainClassLoader(urlArray); + Thread.currentThread().setContextClassLoader(cl); + try { + Class clazz = cl.loadClass(program); + Method main = clazz.getDeclaredMethod("main", new Class[]{String[].class}); + main.invoke(null, new Object[]{programArgs}); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private static void findJars(File file, ArrayList urls) throws MalformedURLException { + File[] files = file.listFiles(); + if (files == null) { + return; + } + + for (int i = 0; i < files.length; i++) { + File f = files[i]; + if (f.isDirectory()) { + findJars(f, urls); + } else if (f.getName().endsWith(".jar")) { + if (isValid(f.getName())) { + urls.add(f.toURL()); + } + } + } + } + + private static boolean isValid(String name) { + return !"dom.jar".equals(name); + } + + /** + * Reverses the typical order of classloading to defer only to the parent if the current class loader can't be + * found. This is required to allow for the launcher to be embedded within struts.jar (otherwise the dependencies + * wouldn't be found by the system ClassLoader when invoking using "java -jar struts-core-VERSION.jar ..."). + */ + public static class MainClassLoader extends URLClassLoader { + public MainClassLoader(URL[] urls) { + super(urls); + } + + public Class loadClass(String name, boolean resolve) throws ClassNotFoundException { + if (name.startsWith("org.xml.") || name.startsWith("org.w3c.") + || name.startsWith("java.") || name.startsWith("javax.") + || name.startsWith("sun.") || name.startsWith("com.sun.")) { + return super.loadClass(name, resolve); + } + + ClassLoader parent = getParent(); + // First, check if the class has already been loaded + Class c = findLoadedClass(name); + if (c == null) { + try { + c = findClass(name); + } catch (Throwable t) { + // If still not found, only then ask the parent + c = parent.loadClass(name); + } + } + if (resolve) { + resolveClass(c); + } + + return c; + } + } +} diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/SiteGraph.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/SiteGraph.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/SiteGraph.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/SiteGraph.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/StrutsConfigRetriever.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/StrutsConfigRetriever.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/StrutsConfigRetriever.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/StrutsConfigRetriever.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/entities/FileBasedView.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/FileBasedView.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/entities/FileBasedView.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/FileBasedView.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/entities/FreeMarkerView.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/FreeMarkerView.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/entities/FreeMarkerView.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/FreeMarkerView.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/entities/JspView.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/JspView.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/entities/JspView.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/JspView.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/entities/Target.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/Target.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/entities/Target.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/Target.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/entities/VelocityView.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/VelocityView.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/entities/VelocityView.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/VelocityView.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/entities/View.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/View.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/entities/View.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/entities/View.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/model/ActionNode.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/model/ActionNode.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/model/ActionNode.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/model/ActionNode.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/model/Graph.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/model/Graph.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/model/Graph.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/model/Graph.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/model/IndentWriter.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/model/IndentWriter.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/model/IndentWriter.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/model/IndentWriter.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/model/Link.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/model/Link.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/model/Link.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/model/Link.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/model/Render.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/model/Render.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/model/Render.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/model/Render.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/model/SiteGraphNode.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/model/SiteGraphNode.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/model/SiteGraphNode.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/model/SiteGraphNode.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/model/SubGraph.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/model/SubGraph.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/model/SubGraph.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/model/SubGraph.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/model/ViewNode.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/model/ViewNode.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/model/ViewNode.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/model/ViewNode.java diff --git a/toolbox/src/main/java/org/apache/struts2/sitegraph/renderers/DOTRenderer.java b/sitegraph/src/main/java/org/apache/struts2/sitegraph/renderers/DOTRenderer.java similarity index 100% rename from toolbox/src/main/java/org/apache/struts2/sitegraph/renderers/DOTRenderer.java rename to sitegraph/src/main/java/org/apache/struts2/sitegraph/renderers/DOTRenderer.java diff --git a/toolbox/src/test/java/org/apache/struts2/sitegraph/SiteGraphTest.java b/sitegraph/src/test/java/org/apache/struts2/sitegraph/SiteGraphTest.java similarity index 100% rename from toolbox/src/test/java/org/apache/struts2/sitegraph/SiteGraphTest.java rename to sitegraph/src/test/java/org/apache/struts2/sitegraph/SiteGraphTest.java diff --git a/toolbox/src/test/resources/org/apache/struts2/sitegraph/hello.jsp b/sitegraph/src/test/resources/org/apache/struts2/sitegraph/hello.jsp similarity index 100% rename from toolbox/src/test/resources/org/apache/struts2/sitegraph/hello.jsp rename to sitegraph/src/test/resources/org/apache/struts2/sitegraph/hello.jsp diff --git a/toolbox/src/test/resources/org/apache/struts2/sitegraph/out.txt b/sitegraph/src/test/resources/org/apache/struts2/sitegraph/out.txt similarity index 100% rename from toolbox/src/test/resources/org/apache/struts2/sitegraph/out.txt rename to sitegraph/src/test/resources/org/apache/struts2/sitegraph/out.txt diff --git a/toolbox/src/test/resources/org/apache/struts2/sitegraph/struts.xml b/sitegraph/src/test/resources/org/apache/struts2/sitegraph/struts.xml similarity index 100% rename from toolbox/src/test/resources/org/apache/struts2/sitegraph/struts.xml rename to sitegraph/src/test/resources/org/apache/struts2/sitegraph/struts.xml diff --git a/toolbox/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-error.ftl b/sitegraph/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-error.ftl similarity index 100% rename from toolbox/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-error.ftl rename to sitegraph/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-error.ftl diff --git a/toolbox/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-input.ftl b/sitegraph/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-input.ftl similarity index 100% rename from toolbox/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-input.ftl rename to sitegraph/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-input.ftl diff --git a/toolbox/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-success.jsp b/sitegraph/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-success.jsp similarity index 100% rename from toolbox/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-success.jsp rename to sitegraph/src/test/resources/org/apache/struts2/sitegraph/tutorial/sitegraph/guess-success.jsp