1 package com.atlassian.plugin.spring.pluginns;
2
3 import com.atlassian.plugin.spring.PluginBeanDefinitionRegistry;
4 import org.springframework.beans.factory.config.BeanDefinitionHolder;
5 import org.springframework.beans.factory.xml.BeanDefinitionDecorator;
6 import org.springframework.beans.factory.xml.ParserContext;
7 import org.w3c.dom.Attr;
8 import org.w3c.dom.Node;
9
10
11 public class PluginTrackBundleBeanDefinitionDecorator implements BeanDefinitionDecorator
12 {
13
14 public BeanDefinitionHolder decorate(Node source, BeanDefinitionHolder holder, ParserContext ctx)
15 {
16 final String trackBundleAsString = ((Attr) source).getValue();
17 if (isTrackBundleEnabled(trackBundleAsString))
18 {
19 new PluginBeanDefinitionRegistry(ctx.getRegistry()).addBundleTrackingBean(holder.getBeanName());
20 }
21 return holder;
22
23 }
24
25 private boolean isTrackBundleEnabled(String trackBundle)
26 {
27 return Boolean.parseBoolean(trackBundle);
28 }
29 }