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
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;
}
}
--- /dev/null
+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