info.magnolia.module.blossom.context
Class ObservedBeanFactoryBean

java.lang.Object
  extended by org.springframework.aop.framework.ProxyConfig
      extended by org.springframework.aop.framework.AdvisedSupport
          extended by org.springframework.aop.framework.ProxyCreatorSupport
              extended by org.springframework.aop.framework.ProxyFactoryBean
                  extended by info.magnolia.module.blossom.context.ObservedBeanFactoryBean
All Implemented Interfaces:
Serializable, javax.jcr.observation.EventListener, org.springframework.aop.framework.Advised, org.springframework.aop.TargetClassAware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.FactoryBean, org.springframework.beans.factory.InitializingBean, org.springframework.context.ApplicationContextAware, org.springframework.context.ApplicationEventPublisherAware

public class ObservedBeanFactoryBean
extends org.springframework.aop.framework.ProxyFactoryBean
implements org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.BeanNameAware, org.springframework.context.ApplicationContextAware, org.springframework.beans.factory.BeanFactoryAware, javax.jcr.observation.EventListener, org.springframework.beans.factory.DisposableBean, org.springframework.context.ApplicationEventPublisherAware

FactoryBean that creates a bean and populates its properties with values from the repository and reloads the bean automatically when the repository is updated. The returned instance is a proxy that delegates calls to the instance created from the repository. The instance delegated to is transparently swapped. The proxy is by default a JDK dynamic proxy proxying all the objects interfaces. This can be changed to a cglib proxy by setting the property proxyTargetClass to true. There is a delay mechanism in place that aggregates events in order to postpone reloading while the repository is being updated. By default any change postpones reloading by 15 seconds but no longer than 60 seconds. These values can be configured.

Since:
1.2
See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.springframework.aop.framework.ProxyFactoryBean
GLOBAL_SUFFIX
 
Fields inherited from class org.springframework.aop.framework.AdvisedSupport
EMPTY_TARGET_SOURCE
 
Constructor Summary
ObservedBeanFactoryBean()
           
 
Method Summary
 void afterPropertiesSet()
           
protected  Object createInstance()
           
 void destroy()
           
protected  void destroyInstance(Object instance)
           
protected  javax.jcr.Node getConfigurationNode()
           
 Class<?> getDefaultClass()
           
 String getPath()
           
 String getRepository()
          Deprecated. 
 String getWorkspace()
           
 void onEvent(javax.jcr.observation.EventIterator events)
           
protected  void reloadInstance()
           
 void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
           
 void setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher)
           
 void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
           
 void setBeanName(String beanName)
           
 void setDefaultClass(Class<?> defaultClass)
           
 void setMaxObservationDelay(int maxObservationDelay)
           
 void setObservationDelay(int observationDelay)
           
 void setPath(String path)
           
 void setRepository(String repository)
          Deprecated. 
 void setWorkspace(String workspace)
           
protected  void startObservation()
           
protected  void stopObservation()
           
protected  Object transformNode(javax.jcr.Node node)
           
 
Methods inherited from class org.springframework.aop.framework.ProxyFactoryBean
adviceChanged, createCompositeInterface, getObject, getObjectType, getProxy, isSingleton, setAdvisorAdapterRegistry, setAutodetectInterfaces, setBeanClassLoader, setFrozen, setInterceptorNames, setProxyClassLoader, setProxyInterfaces, setSingleton, setTargetName
 
Methods inherited from class org.springframework.aop.framework.ProxyCreatorSupport
addListener, createAopProxy, getAopProxyFactory, isActive, removeListener, setAopProxyFactory
 
Methods inherited from class org.springframework.aop.framework.AdvisedSupport
addAdvice, addAdvice, addAdvisor, addAdvisor, addAllAdvisors, addInterface, adviceIncluded, copyConfigurationFrom, copyConfigurationFrom, countAdvicesOfType, getAdvisorChainFactory, getAdvisors, getAdvisorsInternal, getInterceptorsAndDynamicInterceptionAdvice, getProxiedInterfaces, getTargetClass, getTargetSource, indexOf, indexOf, isInterfaceProxied, isPreFiltered, removeAdvice, removeAdvisor, removeAdvisor, removeInterface, replaceAdvisor, setAdvisorChainFactory, setInterfaces, setPreFiltered, setTarget, setTargetClass, setTargetSource, toProxyConfigString, toString, updateAdvisorArray
 
Methods inherited from class org.springframework.aop.framework.ProxyConfig
copyFrom, isExposeProxy, isFrozen, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setOpaque, setOptimize, setProxyTargetClass
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.springframework.aop.framework.Advised
isExposeProxy, isFrozen, isProxyTargetClass, setExposeProxy
 

Constructor Detail

ObservedBeanFactoryBean

public ObservedBeanFactoryBean()
Method Detail

getDefaultClass

public Class<?> getDefaultClass()

setDefaultClass

public void setDefaultClass(Class<?> defaultClass)

getRepository

@Deprecated
public String getRepository()
Deprecated. 


setRepository

@Deprecated
public void setRepository(String repository)
Deprecated. 


getWorkspace

public String getWorkspace()

setWorkspace

public void setWorkspace(String workspace)

getPath

public String getPath()

setPath

public void setPath(String path)

setMaxObservationDelay

public void setMaxObservationDelay(int maxObservationDelay)

setObservationDelay

public void setObservationDelay(int observationDelay)

afterPropertiesSet

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

destroy

public void destroy()
             throws Exception
Specified by:
destroy in interface org.springframework.beans.factory.DisposableBean
Throws:
Exception

onEvent

public void onEvent(javax.jcr.observation.EventIterator events)
Specified by:
onEvent in interface javax.jcr.observation.EventListener

setApplicationContext

public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
Specified by:
setApplicationContext in interface org.springframework.context.ApplicationContextAware

setBeanFactory

public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
Specified by:
setBeanFactory in interface org.springframework.beans.factory.BeanFactoryAware
Overrides:
setBeanFactory in class org.springframework.aop.framework.ProxyFactoryBean

setApplicationEventPublisher

public void setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher)
Specified by:
setApplicationEventPublisher in interface org.springframework.context.ApplicationEventPublisherAware

setBeanName

public void setBeanName(String beanName)
Specified by:
setBeanName in interface org.springframework.beans.factory.BeanNameAware

createInstance

protected Object createInstance()
                         throws info.magnolia.content2bean.Content2BeanException,
                                javax.jcr.RepositoryException
Throws:
info.magnolia.content2bean.Content2BeanException
javax.jcr.RepositoryException

destroyInstance

protected void destroyInstance(Object instance)

reloadInstance

protected void reloadInstance()
                       throws info.magnolia.content2bean.Content2BeanException,
                              javax.jcr.RepositoryException
Throws:
info.magnolia.content2bean.Content2BeanException
javax.jcr.RepositoryException

transformNode

protected Object transformNode(javax.jcr.Node node)
                        throws info.magnolia.content2bean.Content2BeanException
Throws:
info.magnolia.content2bean.Content2BeanException

getConfigurationNode

protected javax.jcr.Node getConfigurationNode()
                                       throws javax.jcr.RepositoryException
Throws:
javax.jcr.RepositoryException

startObservation

protected void startObservation()

stopObservation

protected void stopObservation()


Copyright © 2009-2012 Magnolia International Ltd.. All Rights Reserved.