Browse Source

enhancement to app runner (ability to specify default packages for quicker access to tests)

svn changeset:8617/svn branch:6.1
tags/6.7.0.beta1
Matti Tahvonen 15 years ago
parent
commit
35bd9ce971

+ 6
- 4
WebContent/WEB-INF/web.xml View File

@@ -32,10 +32,12 @@
<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>
<servlet-name>VaadinApplicationRunner</servlet-name>
<servlet-class>com.vaadin.terminal.gwt.server.ApplicationRunnerServlet</servlet-class>
<init-param><param-name>defaultPackages</param-name>
<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>
</servlet>


<servlet>

+ 39
- 12
src/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java View File

@@ -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;
}


Loading…
Cancel
Save