diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/logging/RDFServiceLogger.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/logging/RDFServiceLogger.java index 8428f7aee..d7f0ffa7a 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/logging/RDFServiceLogger.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/logging/RDFServiceLogger.java @@ -82,8 +82,8 @@ public class RDFServiceLogger implements AutoCloseable { restriction = Pattern.compile(restrictionString); } catch (Exception e) { log.error("Failed to compile the pattern for " - + Keys.LOGGING_RDF_RESTRICTION.key() + " = " - + restriction + " " + e); + + Keys.LOGGING_RDF_RESTRICTION + " = " + restriction + + " " + e); isEnabled = false; } } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/developer/DeveloperSettings.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/developer/DeveloperSettings.java index 5ab41ef6a..822e434e4 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/developer/DeveloperSettings.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/developer/DeveloperSettings.java @@ -67,7 +67,7 @@ public class DeveloperSettings { * Enable the I18nLogger to log each string request. */ I18N_LOG_STRINGS("developer.i18n.logStringRequests", true), - + /** * Enable the LoggingRDFService */ @@ -85,21 +85,74 @@ public class DeveloperSettings { LOGGING_RDF_RESTRICTION("developer.loggingRDFService.restriction", false); - private final String key; + private final String propertyName; + private final String elementId; private final boolean bool; - Keys(String key, boolean bool) { - this.key = key; + private Keys(String propertyName, boolean bool) { + this.propertyName = propertyName; + this.elementId = produceElementId(); this.bool = bool; } - public String key() { - return key; + public String propertyName() { + return propertyName; + } + + public String elementId() { + return elementId; } boolean isBoolean() { return bool; } + + /** + * The element ID is camel-case instead of period-delimited. So + * "developer.enabled" becomes "developerEnabled". + */ + String produceElementId() { + StringBuilder id = new StringBuilder(propertyName.length()); + boolean capitalize = false; + for (int i = 0; i < propertyName.length(); i++) { + char c = propertyName.charAt(i); + if (c == '.') { + capitalize = true; + } else if (capitalize) { + id.append(Character.toUpperCase(c)); + capitalize = false; + } else { + id.append(c); + } + } + return id.toString(); + } + + @Override + public String toString() { + return propertyName; + } + + static Keys fromElementId(String id) { + for (Keys k : Keys.values()) { + if (k.elementId.equals(id)) { + return k; + } + } + log.error("Can't find key for element id: '" + id + "'"); + return null; + } + + static Keys fromPropertyName(String name) { + for (Keys k : Keys.values()) { + if (k.propertyName.equals(name)) { + return k; + } + } + log.error("Can't find key for property name: '" + name + "'"); + return null; + } + } // ---------------------------------------------------------------------- @@ -133,7 +186,7 @@ public class DeveloperSettings { private DeveloperSettings(ServletContext ctx) { updateFromFile(ctx); } - + /** * Read the initial settings from "developer.properties" in the Vitro home * directory. @@ -141,7 +194,7 @@ public class DeveloperSettings { * This method is "protected" so we can override it for unit tests. */ protected void updateFromFile(ServletContext ctx) { - Map fromFile = new HashMap<>(); + Map fromFile = new HashMap<>(); ConfigurationProperties props = ConfigurationProperties.getBean(ctx); String home = props.getProperty("vitro.home"); @@ -152,7 +205,8 @@ public class DeveloperSettings { Properties dsProps = new Properties(); dsProps.load(reader); for (String key : dsProps.stringPropertyNames()) { - fromFile.put(key, dsProps.getProperty(key)); + fromFile.put(Keys.fromPropertyName(key), + dsProps.getProperty(key)); } } catch (Exception e) { log.warn("Failed to load 'developer.properties' file.", e); @@ -171,16 +225,16 @@ public class DeveloperSettings { dumpParameterMap(parameterMap); } - Map fromRequest = new HashMap<>(); + Map fromRequest = new HashMap<>(); for (String key : parameterMap.keySet()) { - fromRequest.put(key, parameterMap.get(key)[0]); + fromRequest.put(Keys.fromElementId(key), parameterMap.get(key)[0]); } update(fromRequest); } - private void update(Map changedSettings) { + private void update(Map changedSettings) { for (Keys key : Keys.values()) { - String s = changedSettings.get(key.key()); + String s = changedSettings.get(key); if (s != null) { if (key.isBoolean()) { settings.put(key, Boolean.valueOf(s)); @@ -199,10 +253,10 @@ public class DeveloperSettings { return getString(key); } } - + public boolean getBoolean(Keys key) { if (!key.isBoolean()) { - throw new IllegalArgumentException("Key '" + key.key() + throw new IllegalArgumentException("Key '" + key + "' does not take a boolean value."); } if (settings.containsKey(key)) { @@ -215,7 +269,7 @@ public class DeveloperSettings { public String getString(Keys key) { if (key.isBoolean()) { - throw new IllegalArgumentException("Key '" + key.key() + throw new IllegalArgumentException("Key '" + key + "' takes a boolean value."); } if (settings.containsKey(key)) { @@ -229,7 +283,7 @@ public class DeveloperSettings { public Map getSettingsMap() { Map map = new HashMap<>(); for (Keys key : Keys.values()) { - map.put(key.key(), get(key)); + map.put(key.elementId(), get(key)); } return map; } diff --git a/webapp/web/js/developer/developerPanel.js b/webapp/web/js/developer/developerPanel.js index 601e65de8..a432d710f 100644 --- a/webapp/web/js/developer/developerPanel.js +++ b/webapp/web/js/developer/developerPanel.js @@ -34,34 +34,33 @@ document.getElementById("developerPanelSaveButton").onclick = function() { updateDeveloperPanel(collectFormData()); } - document.getElementById("developer.enabled").onchange = updateDisabledFields - document.getElementById("developer.loggingRDFService.enable").onchange = updateDisabledFields + document.getElementById("developerEnabled").onchange = updateDisabledFields + document.getElementById("developerLoggingRDFServiceEnable").onchange = updateDisabledFields } function updateDisabledFields() { - var developerEnabled = document.getElementById("developer.enabled").checked; - document.getElementById("developer.defeatFreemarkerCache").disabled = !developerEnabled; - document.getElementById("developer.insertFreemarkerDelimiters").disabled = !developerEnabled; - document.getElementById("developer.i18n.defeatCache").disabled = !developerEnabled; - document.getElementById("developer.i18n.logStringRequests").disabled = !developerEnabled; - document.getElementById("developer.loggingRDFService.enable").disabled = !developerEnabled; + var developerEnabled = document.getElementById("developerEnabled").checked; + document.getElementById("developerDefeatFreemarkerCache").disabled = !developerEnabled; + document.getElementById("developerInsertFreemarkerDelimiters").disabled = !developerEnabled; + document.getElementById("developerI18nDefeatCache").disabled = !developerEnabled; + document.getElementById("developerI18nLogStringRequests").disabled = !developerEnabled; + document.getElementById("developerLoggingRDFServiceEnable").disabled = !developerEnabled; - var rdfServiceEnabled = developerEnabled && document.getElementById("developer.loggingRDFService.enable").checked; - document.getElementById("developer.loggingRDFService.stackTrace").disabled = !rdfServiceEnabled; - document.getElementById("developer.loggingRDFService.restriction").disabled = !rdfServiceEnabled; + var rdfServiceEnabled = developerEnabled && document.getElementById("developerLoggingRDFServiceEnable").checked; + document.getElementById("developerLoggingRDFServiceStackTrace").disabled = !rdfServiceEnabled; + document.getElementById("developerLoggingRDFServiceRestriction").disabled = !rdfServiceEnabled; } function collectFormData() { var data = new Object(); - data["developer.panelOpen"] = false; - getCheckbox("developer.enabled", data); - getCheckbox("developer.defeatFreemarkerCache", data); - getCheckbox("developer.insertFreemarkerDelimiters", data); - getCheckbox("developer.i18n.defeatCache", data); - getCheckbox("developer.i18n.logStringRequests", data); - getCheckbox("developer.loggingRDFService.enable", data); - getCheckbox("developer.loggingRDFService.stackTrace", data); - getText("developer.loggingRDFService.restriction", data); + getCheckbox("developerEnabled", data); + getCheckbox("developerDefeatFreemarkerCache", data); + getCheckbox("developerInsertFreemarkerDelimiters", data); + getCheckbox("developerI18nDefeatCache", data); + getCheckbox("developerI18nLogStringRequests", data); + getCheckbox("developerLoggingRDFServiceEnable", data); + getCheckbox("developerLoggingRDFServiceStackTrace", data); + getText("developerLoggingRDFServiceRestriction", data); return data; } diff --git a/webapp/web/templates/freemarker/page/partials/developerPanel.ftl b/webapp/web/templates/freemarker/page/partials/developerPanel.ftl index 56da326b1..6c86be90a 100644 --- a/webapp/web/templates/freemarker/page/partials/developerPanel.ftl +++ b/webapp/web/templates/freemarker/page/partials/developerPanel.ftl @@ -27,8 +27,8 @@ div.developer .container { } -<#if !settings["developer.enabled"]> -<#elseif !settings["mayControl"]> +<#if !settings.developerEnabled> +<#elseif !settings.mayControl>

${siteName} is running in developer mode.

@@ -40,18 +40,18 @@ div.developer .container {
Freemarker templates
@@ -59,27 +59,27 @@ div.developer .container {
SPARQL Queries
Language support