View Javadoc

1   package com.atlassian.plugin.servlet.descriptors;
2   
3   import java.util.ArrayList;
4   import java.util.HashMap;
5   import java.util.Iterator;
6   import java.util.List;
7   import java.util.Map;
8   
9   import org.apache.commons.logging.Log;
10  import org.apache.commons.logging.LogFactory;
11  import org.dom4j.Element;
12  
13  import com.atlassian.plugin.Plugin;
14  import com.atlassian.plugin.PluginParseException;
15  import com.atlassian.plugin.hostcontainer.HostContainer;
16  import com.atlassian.plugin.descriptors.AbstractModuleDescriptor;
17  
18  /**
19   * Acts as a base for other servlet type module descriptors to inherit.  It adds parsing and retrieval of any paths
20   * declared in the descriptor with <url-pattern> as well as <init-param>s. 
21   * 
22   * @since 2.1.0
23   */
24  public abstract class BaseServletModuleDescriptor<T> extends AbstractModuleDescriptor<T>
25  {
26      protected static final Log log = LogFactory.getLog(BaseServletModuleDescriptor.class);
27  
28      private List<String> paths;
29      private Map<String,String> initParams;
30  
31      public void init(Plugin plugin, Element element) throws PluginParseException
32      {
33          super.init(plugin, element);
34      
35          List<Element> urlPatterns = element.elements("url-pattern");
36          paths = new ArrayList<String>(urlPatterns.size());
37      
38          for (Iterator<Element> iterator = urlPatterns.iterator(); iterator.hasNext();)
39          {
40              Element urlPattern = iterator.next();
41              paths.add(urlPattern.getTextTrim());
42          }
43  
44          if (paths.isEmpty())
45              throw new PluginParseException("There must be at least one path specified");
46      
47          initParams = new HashMap<String,String>();
48          List<Element> paramsList = element.elements("init-param");
49          for (Iterator<Element> i = paramsList.iterator(); i.hasNext();) {
50              Element initParamEl = i.next();
51              Element paramNameEl = initParamEl.element("param-name");
52              Element paramValueEl = initParamEl.element("param-value");
53              if (paramNameEl != null && paramValueEl != null) {
54                  initParams.put(paramNameEl.getTextTrim(), paramValueEl.getTextTrim());
55              } else {
56                  log.warn("Invalid init-param XML for servlet module: " + getCompleteKey());
57              }
58          }
59      }
60  
61      public List<String> getPaths()
62      {
63          return paths;
64      }
65  
66      public Map<String,String> getInitParams()
67      {
68          return initParams;
69      }
70  
71  }