01: /*
02: * Copyright 2002-2007 the original author or authors.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16:
17: package org.springframework.core.io;
18:
19: /**
20: * {@link ResourceLoader} implementation that resolves plain paths as
21: * file system resources rather than as class path resources
22: * (the latter is {@link DefaultResourceLoader}'s default strategy).
23: *
24: * <p><b>NOTE:</b> Plain paths will always be interpreted as relative
25: * to the current VM working directory, even if they start with a slash.
26: * (This is consistent with the semantics in a Servlet container.)
27: * <b>Use an explicit "file:" prefix to enforce an absolute file path.</b>
28: *
29: * <p>{@link org.springframework.context.support.FileSystemXmlApplicationContext}
30: * is a full-fledged ApplicationContext implementation that provides
31: * the same resource path resolution strategy.
32: *
33: * @author Juergen Hoeller
34: * @since 1.1.3
35: * @see DefaultResourceLoader
36: * @see org.springframework.context.support.FileSystemXmlApplicationContext
37: */
38: public class FileSystemResourceLoader extends DefaultResourceLoader {
39:
40: /**
41: * Resolve resource paths as file system paths.
42: * <p>Note: Even if a given path starts with a slash, it will get
43: * interpreted as relative to the current VM working directory.
44: * @param path the path to the resource
45: * @return the corresponding Resource handle
46: * @see FileSystemResource
47: * @see org.springframework.web.context.support.ServletContextResourceLoader#getResourceByPath
48: */
49: protected Resource getResourceByPath(String path) {
50: if (path != null && path.startsWith("/")) {
51: path = path.substring(1);
52: }
53: return new FileSystemContextResource(path);
54: }
55:
56: /**
57: * FileSystemResource that explicitly expresses a context-relative path
58: * through implementing the ContextResource interface.
59: */
60: private static class FileSystemContextResource extends
61: FileSystemResource implements ContextResource {
62:
63: public FileSystemContextResource(String path) {
64: super (path);
65: }
66:
67: public String getPathWithinContext() {
68: return getPath();
69: }
70: }
71:
72: }
|