]> source.dussan.org Git - vaadin-framework.git/commitdiff
ClassLoader is now used to find /ITMILL resources in case getResourceAsStream fails.
authorJani Laakso <jani.laakso@itmill.com>
Wed, 31 Oct 2007 17:52:12 +0000 (17:52 +0000)
committerJani Laakso <jani.laakso@itmill.com>
Wed, 31 Oct 2007 17:52:12 +0000 (17:52 +0000)
Fileupload imports fixed.

svn changeset:2644/svn branch:trunk

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

index e90494af3635eac92f8f1aea340023c3df4515b1..e6c8cd1400ea4ca979fdce0da16fcd715bab2357 100644 (file)
@@ -29,6 +29,7 @@
 package com.itmill.toolkit.terminal.gwt.server;
 
 import java.io.BufferedWriter;
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -44,7 +45,6 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.WeakHashMap;
 
-import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
@@ -52,11 +52,10 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
-import org.apache.commons.fileupload.servlet.ServletFileUpload;
 import org.xml.sax.SAXException;
 
-import com.google.gwt.http.client.Request;
 import com.itmill.toolkit.Application;
+import com.itmill.toolkit.external.org.apache.commons.fileupload.servlet.ServletFileUpload;
 import com.itmill.toolkit.service.FileTypeResolver;
 import com.itmill.toolkit.terminal.DownloadStream;
 import com.itmill.toolkit.terminal.ParameterHandler;
@@ -145,6 +144,8 @@ public class ApplicationServlet extends HttpServlet {
 
        private String debugMode = "";
 
+       private ClassLoader classLoader;
+
        /**
         * Called by the servlet container to indicate to a servlet that the servlet
         * is being placed into service.
@@ -216,6 +217,7 @@ public class ApplicationServlet extends HttpServlet {
                                throw new ServletException(e);
                        }
                }
+               this.classLoader = classLoader;
 
                // Loads the application class using the same class loader
                // as the servlet itself
@@ -418,8 +420,24 @@ public class ApplicationServlet extends HttpServlet {
                ServletContext sc = getServletContext();
                InputStream is = sc.getResourceAsStream(filename);
                if (is == null) {
-                       response.setStatus(404);
-                       return;
+                       // try if requested file is found from classloader
+                       try {
+                               // ClassLoader cld = Thread.currentThread()
+                               // .getContextClassLoader();
+                               // if (cld == null)
+                               // throw new ClassNotFoundException(
+                               // "Could not create ClassLoader.");
+                               // is = cld.getResourceAsStream(filename);
+                               is = this.classLoader.getResourceAsStream(filename);
+                       } catch (Exception e) {
+                               System.err
+                                               .println("Requested resource ["
+                                                               + filename
+                                                               + "] not found from filesystem or through class loader.");
+                               // cannot serve requested file
+                               response.setStatus(404);
+                               return;
+                       }
                }
                String mimetype = sc.getMimeType(filename);
                if (mimetype != null)
@@ -457,9 +475,10 @@ public class ApplicationServlet extends HttpServlet {
                                response.getOutputStream()));
 
                String relative = "";
-               
-               String pathInfo = request.getPathInfo() == null ? "/" : request.getPathInfo();
-               String t =  pathInfo.substring(1);
+
+               String pathInfo = request.getPathInfo() == null ? "/" : request
+                               .getPathInfo();
+               String t = pathInfo.substring(1);
                while (t.indexOf('/') >= 0) {
                        t = t.substring(t.indexOf('/') + 1);
                        relative += "../";
index ccbb716ae93b161de12077e3a7208c78d36f9266..38a46258e43282efcb3f143ed0b3b7b352653ae9 100644 (file)
@@ -59,11 +59,12 @@ import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.commons.fileupload.FileItemIterator;
-import org.apache.commons.fileupload.FileItemStream;
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.commons.fileupload.ProgressListener;
-import org.apache.commons.fileupload.servlet.ServletFileUpload;
+// wrapped to prevent conflicts with possible developer required Apache JARs
+import com.itmill.toolkit.external.org.apache.commons.fileupload.FileItemIterator;
+import com.itmill.toolkit.external.org.apache.commons.fileupload.FileItemStream;
+import com.itmill.toolkit.external.org.apache.commons.fileupload.FileUploadException;
+import com.itmill.toolkit.external.org.apache.commons.fileupload.ProgressListener;
+import com.itmill.toolkit.external.org.apache.commons.fileupload.servlet.ServletFileUpload;
 
 import com.itmill.toolkit.Application;
 import com.itmill.toolkit.Application.WindowAttachEvent;