From: Jani Laakso Date: Wed, 5 Dec 2007 14:39:07 +0000 (+0000) Subject: Fixed #1206 X-Git-Tag: 6.7.0.beta1~5279 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=b6beb7eedf0cd4803098803f866555831918dfea;p=vaadin-framework.git Fixed #1206 Refactored also applicationRunner code more cleaner. svn changeset:3175/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java b/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java index 4a43d22d2d..56c1f3d080 100644 --- a/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java +++ b/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java @@ -297,17 +297,17 @@ public class ApplicationServlet extends HttpServlet { protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - if (request.getPathInfo() != null) { - if (applicationRunnerMode - && (request.getPathInfo().indexOf("/", 1) != -1)) { - final String resourceUrl = request.getPathInfo().substring( - request.getPathInfo().indexOf('/', 1)); - if (resourceUrl.startsWith("/ITMILL/")) { - serveStaticResourcesInITMILL(resourceUrl, response); - return; - } - } else if (request.getPathInfo().startsWith("/ITMILL/")) { - serveStaticResourcesInITMILL(request.getPathInfo(), response); + // check we should serve static files (widgetsets, themes) + if ((request.getPathInfo() != null) + && (request.getPathInfo().length() > 10)) { + if ((request.getContextPath() != null) + && (request.getRequestURI().startsWith("/ITMILL/"))) { + serveStaticResourcesInITMILL(request.getRequestURI(), response); + return; + } else if (request.getRequestURI().startsWith( + request.getContextPath() + "/ITMILL/")) { + serveStaticResourcesInITMILL(request.getRequestURI().substring( + request.getContextPath().length()), response); return; } } @@ -345,25 +345,17 @@ public class ApplicationServlet extends HttpServlet { DownloadStream download = null; // Handles AJAX UIDL requests - final String resourceId = request.getPathInfo(); - if (resourceId != null) { + if (request.getPathInfo() != null) { + String compare = AJAX_UIDL_URI; if (applicationRunnerMode) { - if (resourceId.indexOf("/", 1) != -1) { - final String resourceUrl = resourceId - .substring(resourceId.indexOf('/', 1)); - if (resourceId != null - && (resourceUrl.startsWith(AJAX_UIDL_URI))) { - getApplicationManager(application) - .handleUidlRequest(request, response); - return; - } - } - } else { - if (resourceId.startsWith(AJAX_UIDL_URI)) { - getApplicationManager(application).handleUidlRequest( - request, response); - return; - } + final String[] URIparts = getApplicationRunnerURIs(request); + final String applicationClassname = URIparts[4]; + compare = "/" + applicationClassname + AJAX_UIDL_URI; + } + if (request.getPathInfo().startsWith(compare)) { + getApplicationManager(application).handleUidlRequest( + request, response); + return; } } @@ -448,6 +440,7 @@ public class ApplicationServlet extends HttpServlet { */ private void serveStaticResourcesInITMILL(String filename, HttpServletResponse response) throws IOException { + final ServletContext sc = getServletContext(); InputStream is = sc.getResourceAsStream(filename); if (is == null) { @@ -519,19 +512,16 @@ public class ApplicationServlet extends HttpServlet { // don't use server and port in uri. It may cause problems with some // virtual server configurations which lose the server name String appUrl = ""; - String[] urlParts; + // widgetset is not application specific + String widgetsetUrl = ""; if (applicationRunnerMode) { - String servletPath = request.getContextPath() - + request.getServletPath(); - if (request.getPathInfo().indexOf('/', 1) == -1) { - servletPath += request.getPathInfo(); - } else { - servletPath += request.getPathInfo().substring(1, - request.getPathInfo().indexOf('/', 1)); - } - appUrl = servletPath; + final String[] URIparts = getApplicationRunnerURIs(request); + widgetsetUrl = URIparts[0]; + appUrl = URIparts[1]; } else { - urlParts = getApplicationUrl(request).toString().split("\\/"); + final String[] urlParts = getApplicationUrl(request).toString() + .split("\\/"); + widgetsetUrl = "/" + urlParts[3]; for (int i = 3; i < urlParts.length; i++) { appUrl += "/" + urlParts[i]; } @@ -548,7 +538,7 @@ public class ApplicationServlet extends HttpServlet { } final String staticFilePath = getApplicationOrSystemProperty( - PARAMETER_ITMILL_RESOURCES, appUrl); + PARAMETER_ITMILL_RESOURCES, widgetsetUrl); // Default theme does not use theme URI String themeUri = null; @@ -556,6 +546,7 @@ public class ApplicationServlet extends HttpServlet { // Using custom theme themeUri = staticFilePath + "/" + THEME_DIRECTORY_PATH + themeName; } + page.write("', pathInfo: '" + pathInfo + "', themeUri: " + (themeUri != null ? "'" + themeUri + "'" : "null") + "\n};\n" + "\n" + "