diff options
author | Artur Signell <artur@vaadin.com> | 2012-04-03 23:14:02 +0300 |
---|---|---|
committer | Artur Signell <artur@vaadin.com> | 2012-04-05 00:09:19 +0300 |
commit | bb9c96cf931d664afb211bb977b33362658afa7a (patch) | |
tree | 6336a5af571e8f0dae305068a24f26b5c53cd988 | |
parent | 69ea130cd3cf57ed1373adf7899fb1f4c9184a32 (diff) | |
download | vaadin-framework-bb9c96cf931d664afb211bb977b33362658afa7a.tar.gz vaadin-framework-bb9c96cf931d664afb211bb977b33362658afa7a.zip |
Moved ApplicationRunnerServlet to test folder and improved find method
-rw-r--r-- | tests/testbench/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java (renamed from src/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java) | 60 |
1 files changed, 41 insertions, 19 deletions
diff --git a/src/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java b/tests/testbench/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java index 064d2b16af..69e8367a0c 100644 --- a/src/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java +++ b/tests/testbench/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java @@ -3,9 +3,13 @@ */ package com.vaadin.terminal.gwt.server; +import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; +import java.util.Collections; +import java.util.LinkedHashSet; +import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; @@ -16,6 +20,7 @@ import javax.servlet.http.HttpServletResponse; import com.vaadin.Application; import com.vaadin.terminal.WrappedRequest; +import com.vaadin.tests.components.TestBase; import com.vaadin.ui.Root; @SuppressWarnings("serial") @@ -45,7 +50,8 @@ public class ApplicationRunnerServlet extends AbstractApplicationServlet { * The name of the application class currently used. Only valid within one * request. */ - private String[] defaultPackages; + private LinkedHashSet<String> defaultPackages = new LinkedHashSet<String>(); + private final ThreadLocal<HttpServletRequest> request = new ThreadLocal<HttpServletRequest>(); @Override @@ -54,7 +60,27 @@ public class ApplicationRunnerServlet extends AbstractApplicationServlet { String initParameter = servletConfig .getInitParameter("defaultPackages"); if (initParameter != null) { - defaultPackages = initParameter.split(","); + Collections.addAll(defaultPackages, initParameter.split(",")); + } + String str = TestBase.class.getName().replace('.', '/') + ".class"; + URL url = getClassLoader().getResource(str); + if ("file".equals(url.getProtocol())) { + File comVaadinTests = new File(url.getPath()).getParentFile() + .getParentFile(); + addDirectories(comVaadinTests, defaultPackages, "com.vaadin.tests"); + + } + } + + private void addDirectories(File parent, LinkedHashSet<String> packages, + String parentPackage) { + packages.add(parentPackage); + + for (File f : parent.listFiles()) { + if (f.isDirectory()) { + String newPackage = parentPackage + "." + f.getName(); + addDirectories(f, packages, newPackage); + } } } @@ -205,23 +231,19 @@ public class ApplicationRunnerServlet extends AbstractApplicationServlet { return appClass; } catch (Exception e) { // - if (defaultPackages != null) { - for (int i = 0; i < defaultPackages.length; i++) { - try { - appClass = getClass().getClassLoader().loadClass( - defaultPackages[i] + "." + baseName); - } catch (ClassNotFoundException ee) { - // Ignore as this is expected for many packages - } catch (Exception e2) { - // TODO: handle exception - logger.log( - Level.FINE, - "Failed to find application class in the default package.", - e2); - } - if (appClass != null) { - return appClass; - } + for (String pkg : defaultPackages) { + try { + appClass = getClass().getClassLoader().loadClass( + pkg + "." + baseName); + } catch (ClassNotFoundException ee) { + // Ignore as this is expected for many packages + } catch (Exception e2) { + // TODO: handle exception + logger.log(Level.FINE, "Failed to find application class " + + pkg + "." + baseName, e2); + } + if (appClass != null) { + return appClass; } } |