Author: jleroux
Date: Fri Jun 29 10:03:22 2018 New Revision: 1834662 URL: http://svn.apache.org/viewvc?rev=1834662&view=rev Log: Improved: Factorize code logic from ‘ConfigXMLReader’ (OFBIZ-10453) There is a lot of repetitive code in ConfigXMLReader. Using a functional interface as a parameter of a generic algorithm avoids those repetitions. Thanks: Mathieu Lirzin Modified: ofbiz/ofbiz-framework/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java Modified: ofbiz/ofbiz-framework/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java?rev=1834662&r1=1834661&r2=1834662&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java Fri Jun 29 10:03:22 2018 @@ -32,6 +32,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.function.Function; import java.util.stream.Collectors; import javax.servlet.ServletContext; @@ -218,120 +219,67 @@ public class ConfigXMLReader { } } - public Map<String, Event> getAfterLoginEventList() throws WebAppConfigurationException { - MapContext<String, Event> result = MapContext.getMapContext(); - for (URL includeLocation : includes) { - ControllerConfig controllerConfig = getControllerConfig(includeLocation); - result.push(controllerConfig.getAfterLoginEventList()); + private <K, V> Map<K, V> pushIncludes(Function<ControllerConfig, Map<K, V>> f) throws WebAppConfigurationException { + MapContext<K, V> res = MapContext.getMapContext(); + for (URL include : includes) { + res.push(getControllerConfig(include).pushIncludes(f)); + } + res.push(f.apply(this)); + return res; + } + + private String getIncludes(Function<ControllerConfig, String> f) throws WebAppConfigurationException { + String val = f.apply(this); + if (val != null) { + return val; + } + for (URL include : includes) { + String inc = getControllerConfig(include).getIncludes(f); + if (inc != null) { + return inc; + } } - result.push(afterLoginEventList); - return result; + return null; + } + + public Map<String, Event> getAfterLoginEventList() throws WebAppConfigurationException { + return pushIncludes(ccfg -> ccfg.afterLoginEventList); } public Map<String, Event> getBeforeLogoutEventList() throws WebAppConfigurationException { - MapContext<String, Event> result = MapContext.getMapContext(); - for (URL includeLocation : includes) { - ControllerConfig controllerConfig = getControllerConfig(includeLocation); - result.push(controllerConfig.getBeforeLogoutEventList()); - } - result.push(beforeLogoutEventList); - return result; + return pushIncludes(ccfg -> ccfg.beforeLogoutEventList); } public String getDefaultRequest() throws WebAppConfigurationException { - if (defaultRequest != null) { - return defaultRequest; - } - for (URL includeLocation : includes) { - ControllerConfig controllerConfig = getControllerConfig(includeLocation); - String defaultRequest = controllerConfig.getDefaultRequest(); - if (defaultRequest != null) { - return defaultRequest; - } - } - return null; + return getIncludes(ccfg -> ccfg.defaultRequest); } public String getErrorpage() throws WebAppConfigurationException { - if (errorpage != null) { - return errorpage; - } - for (URL includeLocation : includes) { - ControllerConfig controllerConfig = getControllerConfig(includeLocation); - String errorpage = controllerConfig.getErrorpage(); - if (errorpage != null) { - return errorpage; - } - } - return null; + return getIncludes(ccfg -> ccfg.errorpage); } public Map<String, String> getEventHandlerMap() throws WebAppConfigurationException { - MapContext<String, String> result = MapContext.getMapContext(); - for (URL includeLocation : includes) { - ControllerConfig controllerConfig = getControllerConfig(includeLocation); - result.push(controllerConfig.getEventHandlerMap()); - } - result.push(eventHandlerMap); - return result; + return pushIncludes(ccfg -> ccfg.eventHandlerMap); } public Map<String, Event> getFirstVisitEventList() throws WebAppConfigurationException { - MapContext<String, Event> result = MapContext.getMapContext(); - for (URL includeLocation : includes) { - ControllerConfig controllerConfig = getControllerConfig(includeLocation); - result.push(controllerConfig.getFirstVisitEventList()); - } - result.push(firstVisitEventList); - return result; + return pushIncludes(ccfg -> ccfg.firstVisitEventList); } public String getOwner() throws WebAppConfigurationException { - if (owner != null) { - return owner; - } - for (URL includeLocation : includes) { - ControllerConfig controllerConfig = getControllerConfig(includeLocation); - String owner = controllerConfig.getOwner(); - if (owner != null) { - return owner; - } - } - return null; + return getIncludes(ccfg -> ccfg.owner); } public Map<String, Event> getPostprocessorEventList() throws WebAppConfigurationException { - MapContext<String, Event> result = MapContext.getMapContext(); - for (URL includeLocation : includes) { - ControllerConfig controllerConfig = getControllerConfig(includeLocation); - result.push(controllerConfig.getPostprocessorEventList()); - } - result.push(postprocessorEventList); - return result; + return pushIncludes(ccfg -> ccfg.postprocessorEventList); } public Map<String, Event> getPreprocessorEventList() throws WebAppConfigurationException { - MapContext<String, Event> result = MapContext.getMapContext(); - for (URL includeLocation : includes) { - ControllerConfig controllerConfig = getControllerConfig(includeLocation); - result.push(controllerConfig.getPreprocessorEventList()); - } - result.push(preprocessorEventList); - return result; + return pushIncludes(ccfg -> ccfg.preprocessorEventList); } public String getProtectView() throws WebAppConfigurationException { - if (protectView != null) { - return protectView; - } - for (URL includeLocation : includes) { - ControllerConfig controllerConfig = getControllerConfig(includeLocation); - String protectView = controllerConfig.getProtectView(); - if (protectView != null) { - return protectView; - } - } - return null; + return getIncludes(ccfg -> ccfg.protectView); } // XXX: Temporary wrapper to handle conversion from Map to MultiMap. @@ -391,51 +339,19 @@ public class ConfigXMLReader { } public String getSecurityClass() throws WebAppConfigurationException { - if (securityClass != null) { - return securityClass; - } - for (URL includeLocation : includes) { - ControllerConfig controllerConfig = getControllerConfig(includeLocation); - String securityClass = controllerConfig.getSecurityClass(); - if (securityClass != null) { - return securityClass; - } - } - return null; + return getIncludes(ccfg -> ccfg.securityClass); } public String getStatusCode() throws WebAppConfigurationException { - if (statusCode != null) { - return statusCode; - } - for (URL includeLocation : includes) { - ControllerConfig controllerConfig = getControllerConfig(includeLocation); - String statusCode = controllerConfig.getStatusCode(); - if (statusCode != null) { - return statusCode; - } - } - return null; + return getIncludes(ccfg -> ccfg.statusCode); } public Map<String, String> getViewHandlerMap() throws WebAppConfigurationException { - MapContext<String, String> result = MapContext.getMapContext(); - for (URL includeLocation : includes) { - ControllerConfig controllerConfig = getControllerConfig(includeLocation); - result.push(controllerConfig.getViewHandlerMap()); - } - result.push(viewHandlerMap); - return result; + return pushIncludes(ccfg -> ccfg.viewHandlerMap); } public Map<String, ViewMap> getViewMapMap() throws WebAppConfigurationException { - MapContext<String, ViewMap> result = MapContext.getMapContext(); - for (URL includeLocation : includes) { - ControllerConfig controllerConfig = getControllerConfig(includeLocation); - result.push(controllerConfig.getViewMapMap()); - } - result.push(viewMapMap); - return result; + return pushIncludes(ccfg -> ccfg.viewMapMap); } private void loadGeneralConfig(Element rootElement) { |
Free forum by Nabble | Edit this page |