1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.opensaml.util.resource;
18
19 import java.io.File;
20 import java.io.FileInputStream;
21 import java.io.FileNotFoundException;
22 import java.io.InputStream;
23 import java.net.URI;
24
25 import org.joda.time.DateTime;
26 import org.opensaml.xml.util.DatatypeHelper;
27
28
29
30
31 public class FilesystemResource extends AbstractFilteredResource {
32
33
34 private File resource;
35
36
37
38
39
40
41
42
43 public FilesystemResource(String resourcePath) throws ResourceException {
44 super();
45
46 if (DatatypeHelper.isEmpty(resourcePath)) {
47 throw new ResourceException("Resource path may not be null or empty");
48 }
49
50 resource = new File(resourcePath);
51 }
52
53
54
55
56
57
58
59
60
61
62 public FilesystemResource(URI resourceURI) throws ResourceException {
63 super();
64
65 if (resourceURI == null) {
66 throw new ResourceException("Resource URL may not be null");
67 }
68
69 resource = new File(resourceURI);
70 }
71
72
73
74
75
76
77
78
79
80
81
82 public FilesystemResource(String resourcePath, ResourceFilter resourceFilter) throws ResourceException {
83 super(resourceFilter);
84
85 if (DatatypeHelper.isEmpty(resourcePath)) {
86 throw new ResourceException("Resource path may not be null or empty");
87 }
88
89 resource = new File(resourcePath);
90 }
91
92
93
94
95
96
97
98
99
100
101
102
103 public FilesystemResource(URI resourceURI, ResourceFilter resourceFilter) throws ResourceException {
104 super(resourceFilter);
105
106 if (resourceURI == null) {
107 throw new ResourceException("Resource URI may not be null");
108 }
109
110 resource = new File(resourceURI);
111 }
112
113
114 public boolean exists() throws ResourceException {
115 return resource.exists();
116 }
117
118
119 public InputStream getInputStream() throws ResourceException {
120 try {
121 FileInputStream ins = new FileInputStream(resource);
122 return applyFilter(ins);
123 } catch (FileNotFoundException e) {
124 throw new ResourceException("Resource file does not exist: " + resource.getAbsolutePath());
125 }
126 }
127
128
129 public DateTime getLastModifiedTime() throws ResourceException {
130 if (!resource.exists()) {
131 throw new ResourceException("Resource file does not exist: " + resource.getAbsolutePath());
132 }
133
134 return new DateTime(resource.lastModified());
135 }
136
137
138 public String getLocation() {
139 return resource.getAbsolutePath();
140 }
141
142
143 public String toString() {
144 return getLocation();
145 }
146
147
148 public int hashCode() {
149 return getLocation().hashCode();
150 }
151
152
153 public boolean equals(Object o) {
154 if (o == this) {
155 return true;
156 }
157
158 if (o instanceof FilesystemResource) {
159 return getLocation().equals(((FilesystemResource) o).getLocation());
160 }
161
162 return false;
163 }
164 }