blob: 2e4c7850247373529a3ac37ce7da86fa6ba31af4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
/*
@ITMillApache2LicenseForJavaFiles@
*/
package com.vaadin.demo.util;
import java.io.File;
import com.vaadin.Application;
import com.vaadin.terminal.SystemError;
import com.vaadin.ui.Label;
import com.vaadin.ui.Panel;
/**
* Provides sample directory based on application directory. If this fails then
* sampleDirectory property is read. If no sample directory is resolved, then a
* panel displaying error message is added to main window.
*
* @author IT Mill Ltd.
*
*/
public class SampleDirectory {
/**
* Get sample directory.
*
* @param application
* @return file pointing to sample directory
*/
public static File getDirectory(Application application) {
String errorMessage = "Access to application "
+ "context base directory failed, "
+ "possible security constraint with Application "
+ "Server or Servlet Container.<br />";
File file = application.getContext().getBaseDirectory();
if ((file == null) || (!file.canRead())
|| (file.getAbsolutePath() == null)) {
// cannot access example directory, possible security issue with
// Application Server or Servlet Container
// Try to read sample directory from web.xml parameter
if (application.getProperty("sampleDirectory") != null) {
file = new File(application.getProperty("sampleDirectory"));
if ((file != null) && (file.canRead())
&& (file.getAbsolutePath() != null)) {
// Success using property
return file;
}
// Failure using property
errorMessage += "Failed also to access sample directory <b>["
+ application.getProperty("sampleDirectory")
+ "]</b> defined in <b>sampleDirectory property</b>.";
} else {
// Failure using application context base dir, no property set
errorMessage += "<b>Note: </b>You can set this manually in "
+ "web.xml by defining " + "sampleDirectory property.";
}
} else {
// Success using application context base dir
return file;
}
// Add failure notification as an Panel to main window
final Panel errorPanel = new Panel("Demo application error");
errorPanel.setStyle("strong");
errorPanel.setComponentError(new SystemError(
"Cannot provide sample directory"));
errorPanel.addComponent(new Label(errorMessage, Label.CONTENT_XHTML));
// Remove all components from applications main window
application.getMainWindow().getLayout().removeAllComponents();
// Add error panel
application.getMainWindow().getLayout().addComponent(errorPanel);
return null;
}
}
|