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 }