Use final and reduce code redundancy.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/60922b3e Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/60922b3e Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/60922b3e Branch: refs/heads/master Commit: 60922b3e6d45d8c3ff1912c7e2fcb18a0ec14844 Parents: 722aa88 Author: Matt Sicker <boa...@gmail.com> Authored: Sun Mar 6 14:00:33 2016 -0600 Committer: Matt Sicker <boa...@gmail.com> Committed: Sun Mar 6 14:00:45 2016 -0600 ---------------------------------------------------------------------- .../PropertiesConfigurationBuilder.java | 204 +++++++------------ 1 file changed, 72 insertions(+), 132 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/60922b3e/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java index 589971a..41802d4 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java @@ -70,52 +70,30 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory @Override public PropertiesConfiguration build() { - String value = rootProperties.getProperty(STATUS_KEY); - if (value != null) { - builder.setStatusLevel(Level.toLevel(value, Level.ERROR)); - } else { - builder.setStatusLevel(Level.ERROR); - } - value = rootProperties.getProperty(SHUTDOWN_HOOK); - if (value != null) { - builder.setShutdownHook(value); - } - value = rootProperties.getProperty(VERBOSE); - if (value != null) { - builder.setVerbosity(value); - } - value = rootProperties.getProperty(PACKAGES); - if (value != null) { - builder.setPackages(value); - } - value = rootProperties.getProperty(CONFIG_NAME); - if (value != null) { - builder.setConfigurationName(value); - } - value = rootProperties.getProperty(MONITOR_INTERVAL); - if (value != null) { - builder.setMonitorInterval(value); - } - value = rootProperties.getProperty(ADVERTISER_KEY); - if (value != null) { - builder.setAdvertiser(value); - } - Properties props = PropertiesUtil.extractSubset(rootProperties, "property"); - for (String key : props.stringPropertyNames()) { - builder.addProperty(key, props.getProperty(key)); + builder + .setStatusLevel(Level.toLevel(rootProperties.getProperty(STATUS_KEY), Level.ERROR)) + .setShutdownHook(rootProperties.getProperty(SHUTDOWN_HOOK)) + .setVerbosity(rootProperties.getProperty(VERBOSE)) + .setPackages(rootProperties.getProperty(PACKAGES)) + .setConfigurationName(rootProperties.getProperty(CONFIG_NAME)) + .setMonitorInterval(rootProperties.getProperty(MONITOR_INTERVAL, "0")) + .setAdvertiser(rootProperties.getProperty(ADVERTISER_KEY)); + + final Properties propertyPlaceholders = PropertiesUtil.extractSubset(rootProperties, "property"); + for (final String key : propertyPlaceholders.stringPropertyNames()) { + builder.addProperty(key, propertyPlaceholders.getProperty(key)); } - String scriptProp = rootProperties.getProperty("scripts"); + final String scriptProp = (String) rootProperties.remove("scripts"); if (scriptProp != null) { - String[] scriptNames = scriptProp.split(","); - for (String scriptName : scriptNames) { - String name = scriptName.trim(); - Properties scriptProps = PropertiesUtil.extractSubset(rootProperties, "script." + name); - String type = scriptProps.getProperty("type"); + final String[] scriptNames = scriptProp.split(","); + for (final String scriptName : scriptNames) { + final String name = scriptName.trim(); + final Properties scriptProps = PropertiesUtil.extractSubset(rootProperties, "script." + name); + final String type = (String) scriptProps.remove("type"); if (type == null) { throw new ConfigurationException("No type provided for script - must be Script or ScriptFile"); } - scriptProps.remove("type"); if (type.equalsIgnoreCase("script")) { builder.add(createScript(scriptProps)); } else { @@ -124,94 +102,78 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory } } - Properties levelProps = PropertiesUtil.extractSubset(rootProperties, "customLevel"); + final Properties levelProps = PropertiesUtil.extractSubset(rootProperties, "customLevel"); if (levelProps.size() > 0) { - for (String key : levelProps.stringPropertyNames()) { - builder.add(builder.newCustomLevel(key, Integer.parseInt(props.getProperty(key)))); + for (final String key : levelProps.stringPropertyNames()) { + builder.add(builder.newCustomLevel(key, Integer.parseInt(levelProps.getProperty(key)))); } } - String filterProp = rootProperties.getProperty("filters"); + final String filterProp = (String) rootProperties.remove("filters"); if (filterProp != null) { - String[] filterNames = filterProp.split(","); - for (String filterName : filterNames) { - String name = filterName.trim(); + final String[] filterNames = filterProp.split(","); + for (final String filterName : filterNames) { + final String name = filterName.trim(); builder.add(createFilter(name, PropertiesUtil.extractSubset(rootProperties, "filter." + name))); } } - String appenderProp = rootProperties.getProperty("appenders"); + + final String appenderProp = (String) rootProperties.remove("appenders"); if (appenderProp != null) { - String[] appenderNames = appenderProp.split(","); - for (String appenderName : appenderNames) { - String name = appenderName.trim(); + final String[] appenderNames = appenderProp.split(","); + for (final String appenderName : appenderNames) { + final String name = appenderName.trim(); builder.add(createAppender(name, PropertiesUtil.extractSubset(rootProperties, "appender." + name))); } } - String loggerProp = rootProperties.getProperty("loggers"); + + final String loggerProp = (String) rootProperties.remove("loggers"); if (loggerProp != null) { - String[] loggerNames = loggerProp.split(","); - for (String loggerName : loggerNames) { - String name = loggerName.trim(); + final String[] loggerNames = loggerProp.split(","); + for (final String loggerName : loggerNames) { + final String name = loggerName.trim(); if (!name.equals(LoggerConfig.ROOT)) { builder.add(createLogger(name, PropertiesUtil.extractSubset(rootProperties, "logger." + name))); } } } - props = PropertiesUtil.extractSubset(rootProperties, "rootLogger"); + final Properties props = PropertiesUtil.extractSubset(rootProperties, "rootLogger"); if (props.size() > 0) { builder.add(createRootLogger(props)); } - return builder.build(); } private ScriptComponentBuilder createScript(final Properties properties) { - String name = properties.getProperty("name"); - if (name != null) { - properties.remove("name"); - } - String language = properties.getProperty("language"); - if (language != null) { - properties.remove("language"); - } - String text = properties.getProperty("text"); - if (text != null) { - properties.remove("text"); - } - ScriptComponentBuilder scriptBuilder = builder.newScript(name, language, text); + final String name = (String) properties.remove("name"); + final String language = (String) properties.remove("language"); + final String text = (String) properties.remove("text"); + final ScriptComponentBuilder scriptBuilder = builder.newScript(name, language, text); return processRemainingProperties(scriptBuilder, properties); } private ScriptFileComponentBuilder createScriptFile(final Properties properties) { - String name = properties.getProperty("name"); - if (name != null) { - properties.remove("name"); - } - String path = properties.getProperty("path"); - if (path != null) { - properties.remove("path"); - } - ScriptFileComponentBuilder scriptFileBuilder = builder.newScriptFile(name, path); + final String name = (String) properties.remove("name"); + final String path = (String) properties.remove("path"); + final ScriptFileComponentBuilder scriptFileBuilder = builder.newScriptFile(name, path); return processRemainingProperties(scriptFileBuilder, properties); } private AppenderComponentBuilder createAppender(final String key, final Properties properties) { - String name = properties.getProperty(CONFIG_NAME); + final String name = (String) properties.remove(CONFIG_NAME); if (Strings.isEmpty(name)) { throw new ConfigurationException("No name attribute provided for Appender " + key); } - properties.remove(CONFIG_NAME); - String type = properties.getProperty(CONFIG_TYPE); + final String type = (String) properties.remove(CONFIG_TYPE); if (Strings.isEmpty(type)) { throw new ConfigurationException("No type attribute provided for Appender " + key); } - properties.remove(CONFIG_TYPE); - AppenderComponentBuilder appenderBuilder = builder.newAppender(name, type); + final AppenderComponentBuilder appenderBuilder = builder.newAppender(name, type); addFiltersToComponent(appenderBuilder, properties); - Properties layoutProps = PropertiesUtil.extractSubset(properties, "layout"); + final Properties layoutProps = PropertiesUtil.extractSubset(properties, "layout"); if (layoutProps.size() > 0) { appenderBuilder.add(createLayout(name, layoutProps)); } @@ -220,31 +182,23 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory } private FilterComponentBuilder createFilter(final String key, final Properties properties) { - String type = properties.getProperty(CONFIG_TYPE); + final String type = (String) properties.remove(CONFIG_TYPE); if (Strings.isEmpty(type)) { throw new ConfigurationException("No type attribute provided for Appender " + key); } - properties.remove(CONFIG_TYPE); - String onMatch = properties.getProperty("onMatch"); - if (onMatch != null) { - properties.remove("onMatch"); - } - String onMisMatch = properties.getProperty("onMisMatch"); - if (onMisMatch != null) { - properties.remove("onMisMatch"); - } - FilterComponentBuilder filterBuilder = builder.newFilter(type, onMatch, onMisMatch); + final String onMatch = (String) properties.remove("onMatch"); + final String onMisMatch = (String) properties.remove("onMisMatch"); + final FilterComponentBuilder filterBuilder = builder.newFilter(type, onMatch, onMisMatch); return processRemainingProperties(filterBuilder, properties); } private AppenderRefComponentBuilder createAppenderRef(final String key, final Properties properties) { - String ref = properties.getProperty("ref"); + final String ref = (String) properties.remove("ref"); if (Strings.isEmpty(ref)) { throw new ConfigurationException("No ref attribute provided for AppenderRef " + key); } - properties.remove("ref"); - AppenderRefComponentBuilder appenderRefBuilder = builder.newAppenderRef(ref); - String level = properties.getProperty("level"); + final AppenderRefComponentBuilder appenderRefBuilder = builder.newAppenderRef(ref); + final String level = (String) properties.remove("level"); if (!Strings.isEmpty(level)) { appenderRefBuilder.addAttribute("level", level); } @@ -252,17 +206,13 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory } private LoggerComponentBuilder createLogger(final String key, final Properties properties) { - String name = properties.getProperty(CONFIG_NAME); + final String name = (String) properties.remove(CONFIG_NAME); if (Strings.isEmpty(name)) { throw new ConfigurationException("No name attribute provided for Logger " + key); } - properties.remove(CONFIG_NAME); - String level = properties.getProperty("level"); - if (level != null) { - properties.remove("level"); - } - LoggerComponentBuilder loggerBuilder; - String type = properties.getProperty(CONFIG_TYPE); + final String level = (String) properties.remove("level"); + final String type = (String) properties.remove(CONFIG_TYPE); + final LoggerComponentBuilder loggerBuilder; if (type != null) { if (type.equalsIgnoreCase("asyncLogger")) { loggerBuilder = builder.newAsyncLogger(name, level); @@ -274,7 +224,7 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory } addLoggersToComponent(loggerBuilder, properties); addFiltersToComponent(loggerBuilder, properties); - String additivity = properties.getProperty("additivity"); + final String additivity = (String) properties.remove("additivity"); if (!Strings.isEmpty(additivity)) { loggerBuilder.addAttribute("additivity", additivity); } @@ -282,12 +232,9 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory } private RootLoggerComponentBuilder createRootLogger(final Properties properties) { - String level = properties.getProperty("level"); - if (level != null) { - properties.remove("level"); - } - RootLoggerComponentBuilder loggerBuilder; - String type = properties.getProperty(CONFIG_TYPE); + final String level = (String) properties.remove("level"); + final String type = (String) properties.remove(CONFIG_TYPE); + final RootLoggerComponentBuilder loggerBuilder; if (type != null) { if (type.equalsIgnoreCase("asyncRoot")) { loggerBuilder = builder.newAsyncRootLogger(level); @@ -302,39 +249,34 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory } private LayoutComponentBuilder createLayout(final String appenderName, final Properties properties) { - String type = properties.getProperty(CONFIG_TYPE); + final String type = (String) properties.remove(CONFIG_TYPE); if (Strings.isEmpty(type)) { throw new ConfigurationException("No type attribute provided for Layout on Appender " + appenderName); } - properties.remove(CONFIG_TYPE); - LayoutComponentBuilder layoutBuilder = builder.newLayout(type); + final LayoutComponentBuilder layoutBuilder = builder.newLayout(type); return processRemainingProperties(layoutBuilder, properties); } private static <B extends ComponentBuilder<B>> ComponentBuilder<B> createComponent(final ComponentBuilder<?> parent, final String key, final Properties properties) { - String name = properties.getProperty(CONFIG_NAME); - if (name != null) { - properties.remove(CONFIG_NAME); - } - String type = properties.getProperty(CONFIG_TYPE); + final String name = (String) properties.remove(CONFIG_NAME); + final String type = (String) properties.remove(CONFIG_TYPE); if (Strings.isEmpty(type)) { throw new ConfigurationException("No type attribute provided for component " + key); } - properties.remove(CONFIG_TYPE); - ComponentBuilder<B> componentBuilder = parent.getBuilder().newComponent(name, type); + final ComponentBuilder<B> componentBuilder = parent.getBuilder().newComponent(name, type); return processRemainingProperties(componentBuilder, properties); } private static <B extends ComponentBuilder<?>> B processRemainingProperties(final B builder, final Properties properties) { while (properties.size() > 0) { - String propertyName = properties.stringPropertyNames().iterator().next(); + final String propertyName = properties.stringPropertyNames().iterator().next(); int index = propertyName.indexOf('.'); if (index > 0) { - String prefix = propertyName.substring(0, index); - Properties componentProperties = PropertiesUtil.extractSubset(properties, prefix); + final String prefix = propertyName.substring(0, index); + final Properties componentProperties = PropertiesUtil.extractSubset(properties, prefix); builder.addComponent(createComponent(builder, prefix, componentProperties)); } else { builder.addAttribute(propertyName, properties.getProperty(propertyName)); @@ -346,9 +288,8 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory private <B extends FilterableComponentBuilder<? extends ComponentBuilder<?>>> B addFiltersToComponent( final B componentBuilder, final Properties properties) { - final String filters = properties.getProperty("filters"); + final String filters = (String) properties.remove("filters"); if (filters != null) { - properties.remove("filters"); final String[] filterNames = filters.split(","); for (final String name : filterNames) { final String filterName = name.trim(); @@ -361,9 +302,8 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory private <B extends LoggableComponentBuilder<? extends ComponentBuilder<?>>> B addLoggersToComponent( final B loggerBuilder, final Properties properties) { - final String appenderRefs = properties.getProperty("appenderRefs"); + final String appenderRefs = (String) properties.remove("appenderRefs"); if (appenderRefs != null) { - properties.remove("appenderRefs"); final String[] refNames = appenderRefs.split(","); for (final String refName : refNames) { final String appenderRef = refName.trim();