<description>IT Mill Testing Tools URI</description>
</context-param>
- <servlet>
- <servlet-name>VaadinApplicationRunner</servlet-name>
- <servlet-class>com.vaadin.terminal.gwt.server.ApplicationRunnerServlet</servlet-class>
- </servlet>
+ <servlet>\r
+ <servlet-name>VaadinApplicationRunner</servlet-name>\r
+ <servlet-class>com.vaadin.terminal.gwt.server.ApplicationRunnerServlet</servlet-class>\r
+ <init-param><param-name>defaultPackages</param-name>\r
+ <param-value>com.vaadin.tests,com.vaadin.demo,com.vaadin.tests,com.vaadin.tests.components,com.vaadin.tests.components.layouts,com.vaadin.tests.components.panel,com.vaadin.tests.components.combobox,com.vaadin.tests.components.popupview,com.vaadin.tests.components.datefield,com.vaadin.tests.components.richtextarea,com.vaadin.tests.components.absolutelayout,com.vaadin.tests.components.embedded,com.vaadin.tests.components.splitpanel,com.vaadin.tests.components.abstractfield,com.vaadin.tests.components.form,com.vaadin.tests.components.table,com.vaadin.tests.components.accordion,com.vaadin.tests.components.label,com.vaadin.tests.components.tabsheet,com.vaadin.tests.components.beanitemcontainer,com.vaadin.tests.components.link,com.vaadin.tests.components.textfield,com.vaadin.tests.components.button,com.vaadin.tests.components.optiongroup,com.vaadin.tests.components.tree,com.vaadin.tests.components.caption,com.vaadin.tests.components.orderedlayout,com.vaadin.tests.components.window</param-value></init-param>\r
+ </servlet>\r
<servlet>
* 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
URL url = super.getApplicationUrl(request);
String path = url.toString();
- path += applicationClassName;
+ path += getApplicationRunnerApplicationClassName(request);
path += "/";
return new URL(path);
// 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);
throw new ServletException(
new InstantiationException(
"Failed to load application class: "
- + applicationClassName));
+ + getApplicationRunnerApplicationClassName(request)));
}
}
@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
return null;
}
- path = path.substring(1 + applicationClassName.length());
+ path = path.substring(1 + getApplicationRunnerApplicationClassName(
+ request).length());
return path;
}