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: import org.springframework.util.ResourceUtils;
20:
21: /**
22: * Strategy interface for loading resources (e.. class path or file system
23: * resources). An {@link org.springframework.context.ApplicationContext}
24: * is required to provide this functionality, plus extended
25: * {@link org.springframework.core.io.support.ResourcePatternResolver} support.
26: *
27: * <p>{@link DefaultResourceLoader} is a standalone implementation that is
28: * usable outside an ApplicationContext, also used by {@link ResourceEditor}.
29: *
30: * <p>Bean properties of type Resource and Resource array can be populated
31: * from Strings when running in an ApplicationContext, using the particular
32: * context's resource loading strategy.
33: *
34: * @author Juergen Hoeller
35: * @since 10.03.2004
36: * @see Resource
37: * @see org.springframework.core.io.support.ResourcePatternResolver
38: * @see org.springframework.context.ApplicationContext
39: * @see org.springframework.context.ResourceLoaderAware
40: */
41: public interface ResourceLoader {
42:
43: /** Pseudo URL prefix for loading from the class path: "classpath:" */
44: String CLASSPATH_URL_PREFIX = ResourceUtils.CLASSPATH_URL_PREFIX;
45:
46: /**
47: * Return a Resource handle for the specified resource.
48: * The handle should always be a reusable resource descriptor,
49: * allowing for multiple {@link Resource#getInputStream()} calls.
50: * <p><ul>
51: * <li>Must support fully qualified URLs, e.g. "file:C:/test.dat".
52: * <li>Must support classpath pseudo-URLs, e.g. "classpath:test.dat".
53: * <li>Should support relative file paths, e.g. "WEB-INF/test.dat".
54: * (This will be implementation-specific, typically provided by an
55: * ApplicationContext implementation.)
56: * </ul>
57: * <p>Note that a Resource handle does not imply an existing resource;
58: * you need to invoke {@link Resource#exists} to check for existence.
59: * @param location the resource location
60: * @return a corresponding Resource handle
61: * @see #CLASSPATH_URL_PREFIX
62: * @see org.springframework.core.io.Resource#exists
63: * @see org.springframework.core.io.Resource#getInputStream
64: */
65: Resource getResource(String location);
66:
67: /**
68: * Expose the ClassLoader used by this ResourceLoader.
69: * <p>Clients which need to access the ClassLoader directly can do so
70: * in a uniform manner with the ResourceLoader, rather than relying
71: * on the thread context ClassLoader.
72: * @return the ClassLoader (never <code>null</code>)
73: */
74: ClassLoader getClassLoader();
75:
76: }
|