org.alfresco.util.bean
Class HierarchicalBeanLoader

java.lang.Object
  extended by org.alfresco.util.bean.HierarchicalBeanLoader
All Implemented Interfaces:
org.springframework.beans.factory.FactoryBean, org.springframework.beans.factory.InitializingBean, org.springframework.context.ApplicationContextAware

public class HierarchicalBeanLoader
extends java.lang.Object
implements org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.FactoryBean, org.springframework.context.ApplicationContextAware

Factory bean to find beans using a class hierarchy to drive the lookup. The well-known placeholder HierarchicalBeanLoader.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. The bean is looked up in the context at each point until the bean is found or the base of the class hierarchy is reached.

For example assume bean names:

    BEAN 1: contentDAO.org.hibernate.dialect.Dialect
    BEAN 2: contentDAO.org.hibernate.dialect.MySQLInnoDBDialect
    BEAN 3: propertyValueDAO.org.hibernate.dialect.Dialect
    BEAN 4: propertyValueDAO.org.hibernate.dialect.MySQLDialect
 
and
    dialectBaseClass = org.hibernate.dialect.Dialect
 
For dialect org.hibernate.dialect.MySQLInnoDBDialect the following will be returned:
    contentDAO.bean.dialect == BEAN 2
    propertyValueDAO.bean.dialect == BEAN 4
 
For dialectorg.hibernate.dialect.MySQLDBDialect the following will be returned:
    contentDAO.bean.dialect == BEAN 1
    propertyValueDAO.bean.dialect == BEAN 4
 
For dialectorg.hibernate.dialect.Dialect the following will be returned:
    contentDAO.bean.dialect == BEAN 1
    propertyValueDAO.bean.dialect == BEAN 3
 

Since:
3.2SP1

Field Summary
static java.lang.String DEFAULT_DIALECT_PLACEHOLDER
           
static java.lang.String DEFAULT_DIALECT_REGEX
           
 
Constructor Summary
HierarchicalBeanLoader()
          Create a new HierarchicalResourceLoader.
 
Method Summary
 void afterPropertiesSet()
           
 java.lang.Object getObject()
          Replaces the
 java.lang.Class getObjectType()
           
 boolean isSingleton()
           
 void setApplicationContext(org.springframework.context.ApplicationContext ctx)
          The application context that this bean factory serves.
 void setDialectBaseClass(java.lang.String className)
          Set the class to be used during hierarchical dialect replacement.
 void setDialectClass(java.lang.String className)
           
 void setTargetBeanName(java.lang.String targetBeanName)
           
 void setTargetClass(java.lang.Class targetClass)
          Set the target class that will be returned by HierarchicalBeanLoader.getObjectType()
 
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

HierarchicalBeanLoader

public HierarchicalBeanLoader()
Create a new HierarchicalResourceLoader.

Method Detail

setApplicationContext

public void setApplicationContext(org.springframework.context.ApplicationContext ctx)
The application context that this bean factory serves.

Specified by:
setApplicationContext in interface org.springframework.context.ApplicationContextAware

setTargetBeanName

public void setTargetBeanName(java.lang.String targetBeanName)
Parameters:
targetBeanName - the name of the target bean to return, including the HierarchicalBeanLoader.DEFAULT_DIALECT_PLACEHOLDER where the specific dialect must be replaced.

setTargetClass

public void setTargetClass(java.lang.Class targetClass)
Set the target class that will be returned by HierarchicalBeanLoader.getObjectType()

Parameters:
targetClass - the type that this factory returns

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

getObjectType

public java.lang.Class getObjectType()
Specified by:
getObjectType in interface org.springframework.beans.factory.FactoryBean
Returns:
Returns target class

isSingleton

public boolean isSingleton()
Specified by:
isSingleton in interface org.springframework.beans.factory.FactoryBean
Returns:
Returns true always

getObject

public java.lang.Object getObject()
                           throws java.lang.Exception
Replaces the

Specified by:
getObject in interface org.springframework.beans.factory.FactoryBean
Throws:
java.lang.Exception


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