]> source.dussan.org Git - vaadin-framework.git/commitdiff
Make ApplicationRunnerServlet work with Root classes
authorLeif Åstrand <leif@vaadin.com>
Fri, 18 Nov 2011 13:05:26 +0000 (15:05 +0200)
committerLeif Åstrand <leif@vaadin.com>
Fri, 18 Nov 2011 13:05:26 +0000 (15:05 +0200)
src/com/vaadin/terminal/gwt/server/ApplicationRunnerServlet.java

index ffc5d8cfc7efc3f417b9afb0040d6ecad7a0ca5d..628cbed884c94ae3aa9fad2ecb6369cb4ac88a67 100644 (file)
@@ -15,6 +15,8 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import com.vaadin.Application;
+import com.vaadin.terminal.WrappedRequest;
+import com.vaadin.ui.Root;
 
 @SuppressWarnings("serial")
 public class ApplicationRunnerServlet extends AbstractApplicationServlet {
@@ -65,7 +67,18 @@ public class ApplicationRunnerServlet extends AbstractApplicationServlet {
 
         // Creates a new application instance
         try {
-            final Application application = getApplicationClass().newInstance();
+            final Class<? extends Application> applicationClass = getApplicationClass();
+            if (Root.class.isAssignableFrom(applicationClass)) {
+                // default getApplicationClass never checks if it's a subclass
+                // of Application
+                return new Application() {
+                    @Override
+                    protected String getRootClassName(WrappedRequest request) {
+                        return applicationClass.getCanonicalName();
+                    }
+                };
+            }
+            final Application application = applicationClass.newInstance();
             return application;
         } catch (final IllegalAccessException e) {
             throw new ServletException(e);
@@ -150,7 +163,6 @@ public class ApplicationRunnerServlet extends AbstractApplicationServlet {
         return uris;
     }
 
-    @SuppressWarnings("unchecked")
     @Override
     protected Class<? extends Application> getApplicationClass()
             throws ClassNotFoundException {