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
20
21
22
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 }