com.atlassian.templaterenderer.velocity
Class CachingWebPanelRendererTracker

java.lang.Object
  extended by com.atlassian.templaterenderer.velocity.CachingWebPanelRendererTracker
All Implemented Interfaces:
org.springframework.beans.factory.config.BeanPostProcessor, org.springframework.beans.factory.DisposableBean

public class CachingWebPanelRendererTracker
extends Object
implements org.springframework.beans.factory.config.BeanPostProcessor, org.springframework.beans.factory.DisposableBean

Tracks the creation of AbstractCachingWebPanelRenderer and invokes AbstractCachingWebPanelRenderer.destroy() method when the application context is closed. The subclasses of AbstractCachingWebPanelRenderer are defined in atlassian-plugin.xml as web-panel-renderer instead of component. So they are not defined as a bean in the generated META-INF/spring/atlassian-plugins-components.xml. They are instantiated by the WebPanelRendererModuleDescriptor invoking the createModule() method of a ModuleFactory, which in a Spring-backed plugin system calls the Spring IoC container programmatically to instantiate an instance of the given module class and autowire it. Beans created this way are not defined as part of the Spring application context; thus, when the Spring application context is closed, the destroy() method of these beans are not called even if they implement the DisposableBean interface. Therefore, we need to track AbstractCachingWebPanelRenderer programmatically.

Since:
v1.3.4

Constructor Summary
CachingWebPanelRendererTracker()
           
 
Method Summary
 void destroy()
           
 Object postProcessAfterInitialization(Object bean, String beanName)
           
 Object postProcessBeforeInitialization(Object bean, String beanName)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CachingWebPanelRendererTracker

public CachingWebPanelRendererTracker()
Method Detail

postProcessBeforeInitialization

public Object postProcessBeforeInitialization(Object bean,
                                              String beanName)
                                       throws org.springframework.beans.BeansException
Specified by:
postProcessBeforeInitialization in interface org.springframework.beans.factory.config.BeanPostProcessor
Throws:
org.springframework.beans.BeansException

postProcessAfterInitialization

public Object postProcessAfterInitialization(Object bean,
                                             String beanName)
                                      throws org.springframework.beans.BeansException
Specified by:
postProcessAfterInitialization in interface org.springframework.beans.factory.config.BeanPostProcessor
Throws:
org.springframework.beans.BeansException

destroy

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


Copyright © 2012 Atlassian. All Rights Reserved.