1 package com.indexdata.pz2utils4jsf.config;
\r
3 import java.io.IOException;
\r
4 import java.util.ArrayList;
\r
5 import java.util.List;
\r
7 import javax.enterprise.context.SessionScoped;
\r
8 import javax.enterprise.inject.Alternative;
\r
9 import javax.faces.context.ExternalContext;
\r
10 import javax.faces.context.FacesContext;
\r
11 import javax.inject.Named;
\r
12 import javax.servlet.ServletContext;
\r
13 import javax.servlet.http.HttpServletRequest;
\r
15 import org.apache.log4j.Logger;
\r
17 import com.indexdata.masterkey.config.MasterkeyConfiguration;
\r
18 import com.indexdata.masterkey.config.ModuleConfiguration;
\r
19 import com.indexdata.pz2utils4jsf.errors.ConfigurationException;
\r
20 import com.indexdata.pz2utils4jsf.utils.Utils;
\r
21 import static com.indexdata.pz2utils4jsf.utils.Utils.nl;
\r
23 @Named @SessionScoped @Alternative
\r
24 public class Pz2ConfigureByMk2Config implements Pz2Configurator {
\r
26 private static final long serialVersionUID = 8865086878660568870L;
\r
27 private static Logger logger = Logger.getLogger(Pz2ConfigureByMk2Config.class);
\r
28 private Pz2Config pz2config = null;
\r
29 private String configFilePathAndName = "none";
\r
31 public Pz2ConfigureByMk2Config () throws IOException {
\r
32 logger.info(Utils.objectId(this) + " is instantiating Pazpar2 service configuration by MasterKey configuration scheme.");
\r
36 public Pz2Config getConfig() throws ConfigurationException {
\r
37 if (pz2config == null) {
\r
43 private void createConfig () throws ConfigurationException {
\r
44 ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
\r
45 ServletContext servletContext = (ServletContext) externalContext.getContext();
\r
46 MasterkeyConfiguration mkConfigContext;
\r
48 mkConfigContext = MasterkeyConfiguration.getInstance(servletContext,
\r
49 "pazpar-application-jsf", ((HttpServletRequest) externalContext.getRequest()).getServerName());
\r
50 } catch (IOException e) {
\r
51 throw new ConfigurationException("Pz2ConfigureByMk2Config could not configure Pazpar2 client using MasterKey configuration scheme: "+e.getMessage(),e);
\r
53 configFilePathAndName = mkConfigContext.getConfigFileLocation().getConfigFilePath();
\r
55 ModuleConfiguration moduleConfig = mkConfigContext.getModuleConfiguration("pz2client");
\r
56 pz2config = new Pz2Config(moduleConfig);
\r
57 logger.info(document());
\r
58 } catch (IOException e) {
\r
59 throw new ConfigurationException("Pz2ConfigureByMk2Config could not get configuration for module 'pz2client': "+e.getMessage(),e);
\r
64 public List<String> document() {
\r
65 List<String> doc = new ArrayList<String>();
\r
66 doc.add(":"+nl+"Attempted to configure service using the file " + configFilePathAndName);
\r
67 doc.add(nl+"-- Configured to access Pazpar2 at: " +pz2config.get("PAZPAR2_URL"));
\r
68 if (pz2config.get("PAZPAR2_SERVICE_XML") != null) {
\r
69 doc.add(nl+"-- Configured to use the service definition contained in " + pz2config.getConfigFilePath() + "/" + pz2config.get("PAZPAR2_SERVICE_XML"));
\r
70 if (pz2config.get("PAZPAR2_SETTINGS_XML") != null) {
\r
71 doc.add(nl+"-- Configured to use the target settings contained in " + pz2config.getConfigFilePath() + "/" + pz2config.get("PAZPAR2_SETTINGS_XML"));
\r
73 doc.add(nl+"-- Configured to use the server side target settings as defined in the service definition.");
\r
75 } else if (pz2config.get("PAZPAR2_SERVICE_ID") != null) {
\r
76 doc.add(nl+"-- Configured to use the server side service definition identified by service id \""+pz2config.get("PAZPAR2_SERVICE_ID") + "\"");
\r
78 doc.add(nl+"Error: Did not find service ID nor service definition XML file for setting up a pazpar2 service.");
\r