Catches and reports missing web.xml init parameter
authorNiels Erik G. Nielsen <nielserik@indexdata.com>
Wed, 13 Mar 2013 11:14:27 +0000 (07:14 -0400)
committerNiels Erik G. Nielsen <nielserik@indexdata.com>
Wed, 13 Mar 2013 11:14:27 +0000 (07:14 -0400)
src/main/java/com/indexdata/pz2utils4jsf/config/Pz2ConfigureByMk2Config.java
src/main/java/com/indexdata/pz2utils4jsf/errors/ErrorHelper.java
src/main/java/com/indexdata/pz2utils4jsf/pazpar2/Pz2Session.java

index a085561..e809486 100644 (file)
@@ -17,6 +17,7 @@ import org.apache.log4j.Logger;
 import com.indexdata.masterkey.config.MasterkeyConfiguration;\r
 import com.indexdata.masterkey.config.ModuleConfiguration;\r
 import com.indexdata.pz2utils4jsf.utils.Utils;\r
+import static com.indexdata.pz2utils4jsf.utils.Utils.nl;\r
 \r
 @Named @SessionScoped @Alternative\r
 public class Pz2ConfigureByMk2Config implements Pz2Configurator  {\r
@@ -24,6 +25,7 @@ public class Pz2ConfigureByMk2Config implements Pz2Configurator  {
   private static final long serialVersionUID = 8865086878660568870L;\r
   private static Logger logger = Logger.getLogger(Pz2ConfigureByMk2Config.class);\r
   private Pz2Config pz2config = null;\r
+  private String configFilePathAndName = "none";\r
 \r
   public Pz2ConfigureByMk2Config () throws IOException {\r
     logger.info(Utils.objectId(this) + " is instantiating Pazpar2 service configuration by MasterKey configuration scheme.");\r
@@ -39,10 +41,11 @@ public class Pz2ConfigureByMk2Config implements Pz2Configurator  {
   \r
   private void createConfig () throws IOException {\r
     ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();\r
-    ServletContext servletContext = (ServletContext) externalContext.getContext();       \r
+    ServletContext servletContext = (ServletContext) externalContext.getContext();  \r
     MasterkeyConfiguration mkConfigContext =\r
         MasterkeyConfiguration.getInstance(servletContext,\r
         "pazpar-application-jsf", ((HttpServletRequest) externalContext.getRequest()).getServerName());\r
+    configFilePathAndName = mkConfigContext.getConfigFileLocation().getConfigFilePath();\r
     ModuleConfiguration moduleConfig = mkConfigContext.getModuleConfiguration("pz2client");\r
     pz2config = new Pz2Config(moduleConfig);\r
     logger.info(document());\r
@@ -51,19 +54,19 @@ public class Pz2ConfigureByMk2Config implements Pz2Configurator  {
 \r
   public List<String> document() {\r
     List<String> doc = new ArrayList<String>();\r
-    \r
-    doc.add("-- App set to access Pazpar2 at: " +pz2config.get("PAZPAR2_URL"));\r
+    doc.add("Attempted to configure service using the file " + configFilePathAndName);\r
+    doc.add(nl+"-- Configured to access Pazpar2 at: " +pz2config.get("PAZPAR2_URL"));\r
     if (pz2config.get("PAZPAR2_SERVICE_XML") != null) {\r
-      doc.add("-- App set to use the service definition contained in " + pz2config.getConfigFilePath() + "/" + pz2config.get("PAZPAR2_SERVICE_XML"));\r
+      doc.add(nl+"-- Configured to use the service definition contained in " + pz2config.getConfigFilePath() + "/" + pz2config.get("PAZPAR2_SERVICE_XML"));\r
       if (pz2config.get("PAZPAR2_SETTINGS_XML") != null) {\r
-        doc.add("-- App set to use the target settings contained in " + pz2config.getConfigFilePath() + "/" + pz2config.get("PAZPAR2_SETTINGS_XML"));\r
+        doc.add(nl+"-- Configured to use the target settings contained in " + pz2config.getConfigFilePath() + "/" + pz2config.get("PAZPAR2_SETTINGS_XML"));\r
       } else {\r
-        doc.add("-- App set to use the server side target settings as defined in the service definition.");\r
+        doc.add(nl+"-- Configured to use the server side target settings as defined in the service definition.");\r
       }\r
     } else if (pz2config.get("PAZPAR2_SERVICE_ID") != null) {\r
-      doc.add("-- App set to use the server side service definition identified by service id \""+pz2config.get("PAZPAR2_SERVICE_ID") + "\"");\r
+      doc.add(nl+"-- Configured to use the server side service definition identified by service id \""+pz2config.get("PAZPAR2_SERVICE_ID") + "\"");\r
     } else {\r
-      doc.add("Error: Did not find service ID nor service definition XML file to set up pazpar2 service.");\r
+      doc.add(nl+"Error: Did not find service ID nor service definition XML file for setting up a pazpar2 service.");\r
     }\r
     return doc;\r
   }\r
index 4f05b77..0fcc526 100644 (file)
@@ -24,6 +24,7 @@ public class ErrorHelper implements Serializable {
                          LOCAL_SETTINGS_FILE_NOT_FOUND,\r
                          MASTERKEY_CONFIG_FILE_NOT_FOUND,\r
                          MISSING_MANDATORY_PARAMETER,\r
+                         MISSING_MK2_CONFIG_INIT_PARAMETER,\r
                          NOT_RESOLVED,\r
                          SKIP_SUGGESTIONS};\r
 \r
@@ -72,6 +73,10 @@ public class ErrorHelper implements Serializable {
       return ErrorCode.SKIP_SUGGESTIONS;\r
     } else if (appError.getMessage().contains("Missing mandatory parameter")) {\r
       return ErrorCode.MISSING_MANDATORY_PARAMETER;\r
+    } else if (appError.getMessage().contains("Init parameter")\r
+               && appError.getMessage().contains("MASTERKEY")\r
+               && appError.getMessage().contains("missing in deployment descriptor")) {\r
+      return ErrorCode.MISSING_MK2_CONFIG_INIT_PARAMETER;\r
     }\r
     return ErrorCode.NOT_RESOLVED;\r
   }\r
@@ -113,6 +118,12 @@ public class ErrorHelper implements Serializable {
                " file used. Please check the property file for the parameter given in the error message ");\r
       addConfigurationDocumentation(suggestions);\r
       break;\r
+    case MISSING_MK2_CONFIG_INIT_PARAMETER:\r
+      suggestions.add("A mandatory init parameter was not found in the deployment descriptor (web.xml)." +\r
+               " Following init parameters must be present in web.xml when using the Masterkey (MK2) configuration scheme:" +\r
+               " MASTERKEY_ROOT_CONFIG_DIR (i.e. '/etc/masterkey'), MASTERKEY_COMPONENT_CONFIG_DIR (i.e. '/myapp'), " +\r
+               "MASTERKEY_CONFIG_FILE_NAME (i.e. 'myapp.properties'");      \r
+      break;\r
     case NOT_RESOLVED:\r
       suggestions.add("Unforeseen error situation. No suggestions prepared.");\r
       break;\r
index 3034a74..1bac38b 100644 (file)
@@ -75,7 +75,7 @@ public class Pz2Session implements Pz2Interface {
           logger.error("Could not instantiate Pazpar2 client: " + pe.getMessage());\r
           configurationErrors.add(new ConfigurationError("Pz2Client error","ProxyError","Could not create Pazpar2 client: " +pe.getMessage(),errorHelper));                \r
         } \r
-        logger.info("Got " + configurationErrors.size() + " configuration errors");        \r
+        logger.info("Found " + configurationErrors.size() + " configuration errors");        \r
       }\r
       resetDataObjects();\r
     } else {\r