View Javadoc
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  import javax.annotation.Nonnull;
11  
12  
13  public class PluginTrackBundleBeanDefinitionDecorator implements BeanDefinitionDecorator {
14  
15      @Nonnull
16      @Override
17      public BeanDefinitionHolder decorate(@Nonnull Node source, @Nonnull BeanDefinitionHolder holder,
18                                           @Nonnull ParserContext ctx) {
19          final String trackBundleAsString = ((Attr) source).getValue();
20          if (isTrackBundleEnabled(trackBundleAsString)) {
21              new PluginBeanDefinitionRegistry(ctx.getRegistry()).addBundleTrackingBean(holder.getBeanName());
22          }
23          return holder;
24  
25      }
26  
27      private boolean isTrackBundleEnabled(String trackBundle) {
28          return Boolean.parseBoolean(trackBundle);
29      }
30  }