]> source.dussan.org Git - vaadin-framework.git/commitdiff
Merged fix for #3860 - FileResource.getStream should not consume FileNotFoundException
authorArtur Signell <artur.signell@itmill.com>
Fri, 19 Feb 2010 09:52:53 +0000 (09:52 +0000)
committerArtur Signell <artur.signell@itmill.com>
Fri, 19 Feb 2010 09:52:53 +0000 (09:52 +0000)
svn changeset:11397/svn branch:6.2

src/com/vaadin/terminal/FileResource.java
tests/src/com/vaadin/tests/resources/NonExistingFileResource.java [new file with mode: 0644]

index 46f1a6c02851a6fb50a7a6e4d2e735d6aace9c55..7a9feae6745f3f6ecac0fcb3a225475a4ae52ce4 100644 (file)
@@ -10,6 +10,7 @@ import java.io.FileNotFoundException;
 
 import com.vaadin.Application;
 import com.vaadin.service.FileTypeResolver;
+import com.vaadin.terminal.Terminal.ErrorEvent;
 
 /**
  * <code>FileResources</code> are files or directories on local filesystem. The
@@ -67,7 +68,16 @@ public class FileResource implements ApplicationResource {
             ds.setCacheTime(cacheTime);
             return ds;
         } catch (final FileNotFoundException e) {
-            // No logging for non-existing files at this level.
+            // Log the exception using the application error handler
+            getApplication().getErrorHandler().terminalError(new ErrorEvent() {
+
+                @Override
+                public Throwable getThrowable() {
+                    return e;
+                }
+
+            });
+
             return null;
         }
     }
diff --git a/tests/src/com/vaadin/tests/resources/NonExistingFileResource.java b/tests/src/com/vaadin/tests/resources/NonExistingFileResource.java
new file mode 100644 (file)
index 0000000..b894756
--- /dev/null
@@ -0,0 +1,48 @@
+package com.vaadin.tests.resources;\r
+import java.io.File;\r
+\r
+import com.vaadin.terminal.FileResource;\r
+import com.vaadin.tests.components.TestBase;\r
+import com.vaadin.ui.Button;\r
+import com.vaadin.ui.Button.ClickEvent;\r
+\r
+public class NonExistingFileResource extends TestBase {\r
+\r
+    @Override\r
+    protected void setup() {\r
+        Button existing = createButton("WEB-INF/web.xml");\r
+        Button nonExisting = createButton("WEB-INF/web2.xml");\r
+        addComponent(existing);\r
+        addComponent(nonExisting);\r
+\r
+    }\r
+\r
+    private Button createButton(final String filename) {\r
+        Button b = new Button("Download " + filename);\r
+        b.addListener(new Button.ClickListener() {\r
+\r
+            @Override\r
+            public void buttonClick(ClickEvent event) {\r
+                FileResource res = new FileResource(new File(getContext()\r
+                        .getBaseDirectory()\r
+                        + "/" + filename), NonExistingFileResource.this);\r
+                getMainWindow().open(res);\r
+\r
+            }\r
+        });\r
+        return b;\r
+    }\r
+\r
+    @Override\r
+    protected String getDescription() {\r
+        // TODO Auto-generated method stub\r
+        return null;\r
+    }\r
+\r
+    @Override\r
+    protected Integer getTicketNumber() {\r
+        // TODO Auto-generated method stub\r
+        return null;\r
+    }\r
+\r
+}\r