summaryrefslogtreecommitdiffstats
path: root/src/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java
diff options
context:
space:
mode:
authorMatti Tahvonen <matti.tahvonen@itmill.com>2009-09-01 12:10:02 +0000
committerMatti Tahvonen <matti.tahvonen@itmill.com>2009-09-01 12:10:02 +0000
commit35bd9ce9717772823ce2de2bbb281f46d84cfcbe (patch)
tree48b4d35b9679725cd2724f02e1c0f28f797ba4f5 /src/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java
parentf5f093815e01f073d91063ce06b86bbbd9deae1d (diff)
downloadvaadin-framework-35bd9ce9717772823ce2de2bbb281f46d84cfcbe.tar.gz
vaadin-framework-35bd9ce9717772823ce2de2bbb281f46d84cfcbe.zip
enhancement to app runner (ability to specify default packages for quicker access to tests)
svn changeset:8617/svn branch:6.1
Diffstat (limited to 'src/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java')
-rw-r--r--src/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java51
1 files changed, 39 insertions, 12 deletions
diff --git a/src/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java b/src/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java
index c9c0f314fb..8ffd7b3f16 100644
--- a/src/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java
+++ b/src/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java
@@ -18,20 +18,25 @@ public class ApplicationRunnerServlet extends AbstractApplicationServlet {
* The name of the application class currently used. Only valid within one
* request.
*/
- String applicationClassName = "";
+ private String[] defaultPackages;
+ private HttpServletRequest request;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
+ String initParameter = servletConfig
+ .getInitParameter("defaultPackages");
+ if (initParameter != null) {
+ defaultPackages = initParameter.split(",");
+ }
}
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
- applicationClassName = getApplicationRunnerApplicationClassName(request);
+ this.request = request;
super.service(request, response);
- applicationClassName = "";
-
+ this.request = null;
}
@Override
@@ -40,7 +45,7 @@ public class ApplicationRunnerServlet extends AbstractApplicationServlet {
URL url = super.getApplicationUrl(request);
String path = url.toString();
- path += applicationClassName;
+ path += getApplicationRunnerApplicationClassName(request);
path += "/";
return new URL(path);
@@ -52,11 +57,8 @@ public class ApplicationRunnerServlet extends AbstractApplicationServlet {
// Creates a new application instance
try {
- Class<?> applicationClass = getClassLoader().loadClass(
- applicationClassName);
- final Application application = (Application) applicationClass
+ final Application application = (Application) getApplicationClass()
.newInstance();
-
return application;
} catch (final IllegalAccessException e) {
throw new ServletException(e);
@@ -66,7 +68,7 @@ public class ApplicationRunnerServlet extends AbstractApplicationServlet {
throw new ServletException(
new InstantiationException(
"Failed to load application class: "
- + applicationClassName));
+ + getApplicationRunnerApplicationClassName(request)));
}
}
@@ -145,7 +147,31 @@ public class ApplicationRunnerServlet extends AbstractApplicationServlet {
@Override
protected Class getApplicationClass() throws ClassNotFoundException {
// TODO use getClassLoader() ?
- return getClass().getClassLoader().loadClass(applicationClassName);
+
+ Class<? extends Application> appClass = null;
+
+ String baseName = getApplicationRunnerApplicationClassName(request);
+ try {
+ appClass = (Class<? extends Application>) getClass()
+ .getClassLoader().loadClass(baseName);
+ return appClass;
+ } catch (Exception e) {
+ //
+ for (int i = 0; i < defaultPackages.length; i++) {
+ try {
+ appClass = (Class<? extends Application>) getClass()
+ .getClassLoader().loadClass(
+ defaultPackages[i] + "." + baseName);
+ } catch (Exception e2) {
+ // TODO: handle exception
+ }
+ if (appClass != null) {
+ return appClass;
+ }
+ }
+ }
+
+ throw new ClassNotFoundException();
}
@Override
@@ -155,7 +181,8 @@ public class ApplicationRunnerServlet extends AbstractApplicationServlet {
return null;
}
- path = path.substring(1 + applicationClassName.length());
+ path = path.substring(1 + getApplicationRunnerApplicationClassName(
+ request).length());
return path;
}