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.Node;
8   
9   import javax.annotation.Nonnull;
10  
11  /**
12   * Matches the <plugin:interface> element and registers it against the bean for later processing.
13   */
14  public class PluginInterfaceBeanDefinitionDecorator implements BeanDefinitionDecorator {
15      /**
16       * Called when the Spring parser encounters an "interface" element.
17       *
18       * @param source The interface element
19       * @param holder The containing bean definition
20       * @param ctx    The parser context
21       * @return The containing bean definition
22       */
23      @Nonnull
24      @Override
25      public BeanDefinitionHolder decorate(@Nonnull Node source, @Nonnull BeanDefinitionHolder holder,
26                                           @Nonnull ParserContext ctx) {
27          final String inf = source.getTextContent();
28          if (inf != null) {
29              new PluginBeanDefinitionRegistry(ctx.getRegistry()).addBeanInterface(holder.getBeanName(), inf.trim());
30          }
31          return holder;
32      }
33  }