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