org.alfresco.util.resource
Class HierarchicalResourceLoader

java.lang.Object
  extended by org.springframework.core.io.DefaultResourceLoader
      extended by 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 HierarchicalResourceLoader.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
 
and
    dialectBaseClass = org.hibernate.dialect.Dialect
 
For 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)

Field Summary
static java.lang.String DEFAULT_DIALECT_PLACEHOLDER
           
static java.lang.String DEFAULT_DIALECT_REGEX
           
 
Fields inherited from interface org.springframework.core.io.ResourceLoader
CLASSPATH_URL_PREFIX
 
Constructor Summary
HierarchicalResourceLoader()
          Create a new HierarchicalResourceLoader.
 
Method Summary
 void afterPropertiesSet()
           
 org.springframework.core.io.Resource getResource(java.lang.String location)
          Get a resource using the defined class hierarchy as a search path.
 void setDialectBaseClass(java.lang.String className)
          Set the class to be used during hierarchical dialect replacement.
 void setDialectClass(java.lang.String className)
           
 
Methods inherited from class org.springframework.core.io.DefaultResourceLoader
getClassLoader, getResourceByPath, setClassLoader
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_DIALECT_PLACEHOLDER

public static final java.lang.String DEFAULT_DIALECT_PLACEHOLDER
See Also:
Constant Field Values

DEFAULT_DIALECT_REGEX

public static final java.lang.String DEFAULT_DIALECT_REGEX
See Also:
Constant Field Values
Constructor Detail

HierarchicalResourceLoader

public HierarchicalResourceLoader()
Create a new HierarchicalResourceLoader.

Method Detail

setDialectBaseClass

public void setDialectBaseClass(java.lang.String className)
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

public void setDialectClass(java.lang.String className)

afterPropertiesSet

public void afterPropertiesSet()
                        throws java.lang.Exception
Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
Throws:
java.lang.Exception

getResource

public org.springframework.core.io.Resource getResource(java.lang.String location)
Get a resource using the defined class hierarchy as a search path.

Specified by:
getResource in interface org.springframework.core.io.ResourceLoader
Overrides:
getResource in class org.springframework.core.io.DefaultResourceLoader
Parameters:
location - the location including a placeholder
Returns:
a resource found by successive searches using class name replacement, or null if not found.


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.