+++ /dev/null
-package com.indexdata.pz2utils4jsf.config;\r
-\r
-import java.io.IOException;\r
-import java.util.ArrayList;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import javax.enterprise.context.SessionScoped;\r
-import javax.enterprise.inject.Alternative;\r
-import javax.faces.context.ExternalContext;\r
-import javax.faces.context.FacesContext;\r
-import javax.inject.Named;\r
-import javax.servlet.ServletContext;\r
-import javax.servlet.http.HttpServletRequest;\r
-\r
-import org.apache.log4j.Logger;\r
-\r
-import com.indexdata.masterkey.config.MasterkeyConfiguration;\r
-import com.indexdata.masterkey.config.ModuleConfiguration;\r
-import com.indexdata.pz2utils4jsf.errors.ConfigurationException;\r
-import com.indexdata.pz2utils4jsf.utils.Utils;\r
-import static com.indexdata.pz2utils4jsf.utils.Utils.nl;\r
-\r
-/**\r
- * Reads configuration from a MasterKey configuration scheme\r
- * \r
- * \r
- * @author Niels Erik\r
- *\r
- */\r
-@Named @SessionScoped @Alternative\r
-public class Mk2ConfigReader implements ConfigurationReader {\r
-\r
- private static final long serialVersionUID = 8865086878660568870L;\r
- private static Logger logger = Logger.getLogger(Mk2ConfigReader.class);\r
- private Map<String,Configuration> configs = new HashMap<String,Configuration>(); \r
- private Map<String,Configurable> configurables = new HashMap<String,Configurable>();\r
-\r
- public Mk2ConfigReader () throws IOException {\r
- logger.info(Utils.objectId(this) + " is instantiating Pazpar2 service configuration by MasterKey configuration scheme.");\r
- }\r
-\r
- @Override\r
- public Configuration getConfiguration(Configurable configurable) throws ConfigurationException { \r
- if (configs.get(configurable.getModuleName()) == null) {\r
- Configuration config = readConfig(configurable);\r
- configs.put(configurable.getModuleName(), config); \r
- configurables.put(configurable.getModuleName(), configurable);\r
- }\r
- return configs.get(configurable.getModuleName()); \r
- }\r
- \r
- private Configuration readConfig (Configurable configurable) throws ConfigurationException {\r
- Configuration config = new Configuration();\r
- ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();\r
- ServletContext servletContext = (ServletContext) externalContext.getContext(); \r
- MasterkeyConfiguration mkConfigContext;\r
- try {\r
- mkConfigContext = MasterkeyConfiguration.getInstance(servletContext,\r
- "pazpar-application-jsf", ((HttpServletRequest) externalContext.getRequest()).getServerName());\r
- } catch (IOException e) {\r
- throw new ConfigurationException(Mk2ConfigReader.class + " could not read configuration for '" + configurable.getModuleName() + "' using MasterKey configuration scheme: "+e.getMessage(),e);\r
- } \r
- try {\r
- ModuleConfiguration moduleConfig = mkConfigContext.getModuleConfiguration(configurable.getModuleName()); \r
- config.addAll(configurable.getDefaults(),moduleConfig.getConfigMap());\r
- config.set("configpath", moduleConfig.getConfigFilePath()); \r
- } catch (IOException e) {\r
- throw new ConfigurationException(Mk2ConfigReader.class + " could not read configuration for '"+ configurable.getModuleName() + "': "+e.getMessage(),e);\r
- } \r
- return config;\r
- }\r
- \r
- public List<String> document() {\r
- List<String> doc = new ArrayList<String>();\r
- doc.add("Application properties as read by " + this.getClass());\r
- for (String moduleName : configs.keySet()) {\r
- doc.add(nl+"Module: " + moduleName);\r
- Configurable module = configurables.get(moduleName);\r
- Map<String,String> map = configs.get(moduleName).getConfigMap();\r
- for (String key : map.keySet()) {\r
- doc.add(nl+key+": "+ map.get(key) +\r
- (module.getDefaults().containsKey(key) ? \r
- (module.getDefaults().get(key).equals(map.get(key)) ? " [default]" : " [override]")\r
- : "")); \r
- }\r
- }\r
- return doc;\r
- }\r
- \r
-\r
-}\r