Package org.alfresco.util.resource
Class HierarchicalResourceLoader
java.lang.Object
org.springframework.core.io.DefaultResourceLoader
org.alfresco.util.resource.HierarchicalResourceLoader
- All Implemented Interfaces:
org.springframework.beans.factory.InitializingBean,org.springframework.core.io.ResourceLoader
public class HierarchicalResourceLoader
extends org.springframework.core.io.DefaultResourceLoader
implements org.springframework.beans.factory.InitializingBean
Locate resources by using a class hierarchy to drive the search. The well-known placeholder
DEFAULT_DIALECT_PLACEHOLDER is replaced with successive class names starting from the dialect class and progressing up the hierarchy until the base class is reached. A full resource search using Spring's DefaultResourceLoader is done at each point until the resource is found or the base of the class hierarchy is reached.
For example assume classpath resources:
RESOURCE 1: config/ibatis/org.hibernate.dialect.Dialect/SqlMap-DOG.xml
RESOURCE 2: config/ibatis/org.hibernate.dialect.MySQLInnoDBDialect/SqlMap-DOG.xml
RESOURCE 3: config/ibatis/org.hibernate.dialect.Dialect/SqlMap-CAT.xml
RESOURCE 4: config/ibatis/org.hibernate.dialect.MySQLDialect/SqlMap-CAT.xml
anddialectBaseClass = org.hibernate.dialect.DialectFor dialect org.hibernate.dialect.MySQLInnoDBDialect the following will be returned:
config/ibatis/#resource.dialect#/SqlMap-DOG.xml == RESOURCE 2
config/ibatis/#resource.dialect#/SqlMap-CAT.xml == RESOURCE 4
For dialectorg.hibernate.dialect.MySQLDBDialect the following will be returned:
config/ibatis/#resource.dialect#/SqlMap-DOG.xml == RESOURCE 1
config/ibatis/#resource.dialect#/SqlMap-CAT.xml == RESOURCE 4
For dialectorg.hibernate.dialect.Dialect the following will be returned:
config/ibatis/#resource.dialect#/SqlMap-DOG.xml == RESOURCE 1
config/ibatis/#resource.dialect#/SqlMap-CAT.xml == RESOURCE 3
- Since:
- 3.2 (Mobile)
- Author:
- Derek Hulley
-
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.core.io.DefaultResourceLoader
org.springframework.core.io.DefaultResourceLoader.ClassPathContextResource -
Field Summary
FieldsFields inherited from interface org.springframework.core.io.ResourceLoader
CLASSPATH_URL_PREFIX -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidorg.springframework.core.io.ResourcegetResource(String location) Get a resource using the defined class hierarchy as a search path.voidsetDialectBaseClass(String className) Set the class to be used during hierarchical dialect replacement.voidsetDialectClass(String className) Methods inherited from class org.springframework.core.io.DefaultResourceLoader
addProtocolResolver, clearResourceCaches, getClassLoader, getProtocolResolvers, getResourceByPath, getResourceCache, setClassLoader
-
Field Details
-
DEFAULT_DIALECT_PLACEHOLDER
- See Also:
-
DEFAULT_DIALECT_REGEX
- See Also:
-
-
Constructor Details
-
HierarchicalResourceLoader
public HierarchicalResourceLoader()Create a new HierarchicalResourceLoader.
-
-
Method Details
-
setDialectBaseClass
Set the class to be used during hierarchical dialect replacement. Searches for the configuration location will not go further up the hierarchy than this class.- Parameters:
className- the name of the class or interface
-
setDialectClass
-
afterPropertiesSet
- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
Exception
-
getResource
Get a resource using the defined class hierarchy as a search path.- Specified by:
getResourcein interfaceorg.springframework.core.io.ResourceLoader- Overrides:
getResourcein classorg.springframework.core.io.DefaultResourceLoader- Parameters:
location- the location including aplaceholder- Returns:
- a resource found by successive searches using class name replacement, or null if not found.
-