diff options
author | Matti Tahvonen <matti.tahvonen@itmill.com> | 2009-09-01 12:10:02 +0000 |
---|---|---|
committer | Matti Tahvonen <matti.tahvonen@itmill.com> | 2009-09-01 12:10:02 +0000 |
commit | 35bd9ce9717772823ce2de2bbb281f46d84cfcbe (patch) | |
tree | 48b4d35b9679725cd2724f02e1c0f28f797ba4f5 /src/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java | |
parent | f5f093815e01f073d91063ce06b86bbbd9deae1d (diff) | |
download | vaadin-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.java | 51 |
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; } |