Class 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
     
    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)
    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

      Fields 
      Modifier and Type Field Description
      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
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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

        addProtocolResolver, clearResourceCaches, getClassLoader, getProtocolResolvers, getResourceByPath, getResourceCache, 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.