]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fixes #2007 : Application runner includes application-class-name in pathinfo
authorJoonas Lehtinen <joonas.lehtinen@itmill.com>
Wed, 3 Sep 2008 17:18:04 +0000 (17:18 +0000)
committerJoonas Lehtinen <joonas.lehtinen@itmill.com>
Wed, 3 Sep 2008 17:18:04 +0000 (17:18 +0000)
svn changeset:5352/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java
src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java

index 05581f6854606b4dc95223d9c7fd94df1bac3e06..ead0e181296272e7ceb20bfa4a8f46fd47e473fe 100644 (file)
@@ -151,10 +151,10 @@ public class ApplicationServlet extends HttpServlet {
     private String debugMode = "";
 
     // Is this servlet application runner
-    private boolean isApplicationRunnerServlet = false;
+    boolean isApplicationRunnerServlet = false;
 
     // If servlet is application runner, store request's classname
-    private String applicationRunnerClassname = null;
+    String applicationRunnerClassname = null;
 
     private ClassLoader classLoader;
 
@@ -750,8 +750,12 @@ public class ApplicationServlet extends HttpServlet {
 
         final BufferedWriter page = new BufferedWriter(new OutputStreamWriter(
                 response.getOutputStream()));
-        final String pathInfo = request.getPathInfo() == null ? "/" : request
+        String pathInfo = request.getPathInfo() == null ? "/" : request
                 .getPathInfo();
+        if (isApplicationRunnerServlet) {
+            pathInfo = pathInfo
+                    .substring(applicationRunnerClassname.length() + 1);
+        }
         String title = ((window == null || window.getCaption() == null) ? "IT Mill Toolkit 5"
                 : window.getCaption());
 
@@ -1602,7 +1606,7 @@ public class ApplicationServlet extends HttpServlet {
 
         if (mgr == null) {
             // Creates new manager
-            mgr = new CommunicationManager(application);
+            mgr = new CommunicationManager(application, this);
             applicationToAjaxAppMgrMap.put(application, mgr);
         }
         return mgr;
index 530078596c67a6d826334a043736d8896d185fe5..0bdd50d801e3f0717a2fbe6f2cf2073548577756 100644 (file)
@@ -86,15 +86,19 @@ public class CommunicationManager implements Paintable.RepaintRequestListener {
 
     private int idSequence = 0;
 
+    private final ApplicationServlet applicationServlet;
+
     private final Application application;
 
     private List locales;
 
     private int pendingLocalesIndex;
 
-    public CommunicationManager(Application application) {
+    public CommunicationManager(Application application,
+            ApplicationServlet applicationServlet) {
         this.application = application;
         requireLocale(application.getLocale().toString());
+        this.applicationServlet = applicationServlet;
     }
 
     /**
@@ -587,7 +591,7 @@ public class CommunicationManager implements Paintable.RepaintRequestListener {
 
     public class ErrorHandlerErrorEvent implements ErrorEvent {
 
-        private Throwable throwable;
+        private final Throwable throwable;
 
         public ErrorHandlerErrorEvent(Throwable throwable) {
             this.throwable = throwable;
@@ -795,6 +799,13 @@ public class CommunicationManager implements Paintable.RepaintRequestListener {
         // Find the window where the request is handled
         String path = request.getPathInfo();
 
+        // Remove app-runner class-name!
+        if (applicationServlet.isApplicationRunnerServlet) {
+            path = path
+                    .substring(1 + applicationServlet.applicationRunnerClassname
+                            .length());
+        }
+
         // Remove UIDL from the path
         path = path.substring("/UIDL".length());