0fc81d4d6786e17e9c6e689af0c22a834baf46cc
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / pz2utils4jsf / config / Pz2ConfigureByWebXml.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.HashMap;\r
7 import java.util.List;\r
8 import java.util.Map;\r
9 \r
10 import javax.enterprise.context.SessionScoped;\r
11 import javax.enterprise.inject.Alternative;\r
12 import javax.faces.context.ExternalContext;\r
13 import javax.faces.context.FacesContext;\r
14 import javax.inject.Named;\r
15 import javax.servlet.ServletContext;\r
16 \r
17 import org.apache.log4j.Logger;\r
18 \r
19 import com.indexdata.pz2utils4jsf.errors.ConfigurationException;\r
20 \r
21 \r
22 @Named @SessionScoped @Alternative\r
23 public class Pz2ConfigureByWebXml implements Pz2Configurator {\r
24 \r
25   private static final long serialVersionUID = 144390224959311772L;\r
26   private static Logger logger = Logger.getLogger(Pz2ConfigureByWebXml.class);\r
27   private Pz2Config pz2config = null;\r
28   private Map<String,String> parameters = new HashMap<String,String>(); \r
29   \r
30   public Pz2ConfigureByWebXml () {\r
31     logger.info("Instantiating Pazpar2 service configuration by web.xml parameters");\r
32   }\r
33   \r
34   @Override\r
35   public Pz2Config getConfig() throws ConfigurationException {\r
36     if (pz2config == null) {\r
37       createConfig();\r
38     }\r
39     return pz2config;\r
40   }\r
41   \r
42   private void createConfig () throws ConfigurationException {\r
43     ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();\r
44     ServletContext servletContext = (ServletContext) externalContext.getContext();    \r
45     parameters.put("PAZPAR2_URL", servletContext.getInitParameter("PAZPAR2_URL"));\r
46     if (parameters.get("PAZPAR2_URL")==null || parameters.get("PAZPAR2_URL").length()==0) {      \r
47       throw new ConfigurationException("Pz2ConfigureByWebXml could not find mandatory context-param 'PAZPAR2_URL'");\r
48     }\r
49     parameters.put("PAZPAR2_SERVICE_ID", servletContext.getInitParameter("PAZPAR2_SERVICE_ID"));\r
50     if (parameters.get("PAZPAR2_SERVICE_ID")==null || parameters.get("PAZPAR2_SERVICE_ID").length()==0) {      \r
51       throw new ConfigurationException("Pz2ConfigureByWebXml could not find mandatory context-param 'PAZPAR2_SERVICE_ID'");\r
52     }\r
53     pz2config = new Pz2Config(parameters);\r
54   }\r
55   \r
56   public List<String> document() {\r
57     List<String> doc = new ArrayList<String>();    \r
58     doc.add("Attempted to configure service using web.xml context-parameters ");\r
59     doc.add(nl+"-- Configured to access Pazpar2 at [" +parameters.get("PAZPAR2_URL") + "]");\r
60     doc.add(nl+"-- Configured to use the server side service definition identified by service id [" +parameters.get("PAZPAR2_SERVICE_ID") + "]");\r
61     return doc;    \r
62   }\r
63 }\r