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.descriptors.AbstractModuleDescriptor;
16
17
18
19
20
21
22
23 public abstract class BaseServletModuleDescriptor<T> extends AbstractModuleDescriptor<T>
24 {
25 protected static final Log log = LogFactory.getLog(BaseServletModuleDescriptor.class);
26
27 private List<String> paths;
28 private Map<String,String> initParams;
29
30 public void init(Plugin plugin, Element element) throws PluginParseException
31 {
32 super.init(plugin, element);
33
34 List<Element> urlPatterns = element.elements("url-pattern");
35 paths = new ArrayList<String>(urlPatterns.size());
36
37 for (Iterator<Element> iterator = urlPatterns.iterator(); iterator.hasNext();)
38 {
39 Element urlPattern = iterator.next();
40 paths.add(urlPattern.getTextTrim());
41 }
42
43 if (paths.isEmpty())
44 throw new IllegalArgumentException("There must be at least one path specified");
45
46 initParams = new HashMap<String,String>();
47 List<Element> paramsList = element.elements("init-param");
48 for (Iterator<Element> i = paramsList.iterator(); i.hasNext();) {
49 Element initParamEl = i.next();
50 Element paramNameEl = initParamEl.element("param-name");
51 Element paramValueEl = initParamEl.element("param-value");
52 if (paramNameEl != null && paramValueEl != null) {
53 initParams.put(paramNameEl.getTextTrim(), paramValueEl.getTextTrim());
54 } else {
55 log.warn("Invalid init-param XML for servlet module: " + getCompleteKey());
56 }
57 }
58 }
59
60 public List<String> getPaths()
61 {
62 return paths;
63 }
64
65 public Map<String,String> getInitParams()
66 {
67 return initParams;
68 }
69
70 }