f3669aeaf9ac7d0696b0157caebd6ed5f565164a
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / pz2utils4jsf / config / WebXmlConfigReader.java
1 package com.indexdata.pz2utils4jsf.config;\r
2 \r
3 import static com.indexdata.pz2utils4jsf.utils.Utils.nl;\r
4 \r
5 import java.util.ArrayList;\r
6 import java.util.Enumeration;\r
7 import java.util.HashMap;\r
8 import java.util.List;\r
9 import java.util.Map;\r
10 \r
11 import javax.enterprise.context.SessionScoped;\r
12 import javax.enterprise.inject.Alternative;\r
13 import javax.faces.context.ExternalContext;\r
14 import javax.faces.context.FacesContext;\r
15 import javax.inject.Named;\r
16 import javax.servlet.ServletContext;\r
17 \r
18 import org.apache.log4j.Logger;\r
19 \r
20 import com.indexdata.pz2utils4jsf.errors.ConfigurationException;\r
21 \r
22 @Named @SessionScoped @Alternative\r
23 public class WebXmlConfigReader implements ConfigurationReader {\r
24 \r
25   private static final long serialVersionUID = 144390224959311772L;\r
26   private static Logger logger = Logger.getLogger(WebXmlConfigReader.class);\r
27   private Configuration config = null;\r
28   private Map<String,String> parameters = new HashMap<String,String>(); \r
29   \r
30   public WebXmlConfigReader () {\r
31     logger.info("Instantiating Pazpar2 service configuration by web.xml parameters");\r
32   }\r
33   \r
34   public Configuration getConfiguration(Configurable configurable) throws ConfigurationException {\r
35     if (config == null) {\r
36       parameters.putAll(configurable.getDefaults());\r
37       parameters.putAll(readConfig());\r
38       config = new Configuration(parameters);\r
39     }\r
40     return config;\r
41   }\r
42       \r
43   private Map<String,String> readConfig () throws ConfigurationException {\r
44     Map<String,String> map = new HashMap<String,String>();\r
45     ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();\r
46     ServletContext servletContext = (ServletContext) externalContext.getContext();        \r
47     Enumeration<String> enumer = servletContext.getInitParameterNames();\r
48     while (enumer.hasMoreElements()) {\r
49       String name = enumer.nextElement();\r
50       map.put(name,servletContext.getInitParameter(name));\r
51     }\r
52     return map;    \r
53   }\r
54   \r
55   public List<String> document() {\r
56     List<String> doc = new ArrayList<String>();\r
57     doc.add("Application properties as read by " + this.getClass());\r
58     for (String key :  parameters.keySet()) {\r
59       doc.add(nl+key+": "+ parameters.get(key));\r
60     }\r
61     return doc;\r
62   }\r
63 }\r