You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2016/03/06 21:01:22 UTC
[1/2] logging-log4j2 git commit: Extract config parsing from factory
class.
Repository: logging-log4j2
Updated Branches:
refs/heads/master 73e19c6b1 -> 60922b3e6
Extract config parsing from factory class.
Other config factory classes are really simple, so this one should be, too. Also reduces code duplication.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/722aa88b
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/722aa88b
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/722aa88b
Branch: refs/heads/master
Commit: 722aa88b62ef1ca26b44236e6e1f900340811655
Parents: 73e19c6
Author: Matt Sicker <bo...@gmail.com>
Authored: Sun Mar 6 13:11:26 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Sun Mar 6 13:11:26 2016 -0600
----------------------------------------------------------------------
.../PropertiesConfigurationBuilder.java | 376 ++++++++++++++++++
.../PropertiesConfigurationFactory.java | 378 +------------------
2 files changed, 383 insertions(+), 371 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/722aa88b/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
new file mode 100644
index 0000000..589971a
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java
@@ -0,0 +1,376 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+
+package org.apache.logging.log4j.core.config.properties;
+
+import java.util.Properties;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.core.config.ConfigurationException;
+import org.apache.logging.log4j.core.config.LoggerConfig;
+import org.apache.logging.log4j.core.config.builder.api.AppenderComponentBuilder;
+import org.apache.logging.log4j.core.config.builder.api.AppenderRefComponentBuilder;
+import org.apache.logging.log4j.core.config.builder.api.ComponentBuilder;
+import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder;
+import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory;
+import org.apache.logging.log4j.core.config.builder.api.FilterComponentBuilder;
+import org.apache.logging.log4j.core.config.builder.api.FilterableComponentBuilder;
+import org.apache.logging.log4j.core.config.builder.api.LayoutComponentBuilder;
+import org.apache.logging.log4j.core.config.builder.api.LoggableComponentBuilder;
+import org.apache.logging.log4j.core.config.builder.api.LoggerComponentBuilder;
+import org.apache.logging.log4j.core.config.builder.api.RootLoggerComponentBuilder;
+import org.apache.logging.log4j.core.config.builder.api.ScriptComponentBuilder;
+import org.apache.logging.log4j.core.config.builder.api.ScriptFileComponentBuilder;
+import org.apache.logging.log4j.core.util.Builder;
+import org.apache.logging.log4j.util.PropertiesUtil;
+import org.apache.logging.log4j.util.Strings;
+
+/**
+ * Helper builder for parsing properties files into a PropertiesConfiguration.
+ *
+ * @since 2.6
+ */
+public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory
+ implements Builder<PropertiesConfiguration> {
+
+ private static final String ADVERTISER_KEY = "advertiser";
+ private static final String STATUS_KEY = "status";
+ private static final String SHUTDOWN_HOOK = "shutdownHook";
+ private static final String VERBOSE = "verbose";
+ private static final String PACKAGES = "packages";
+ private static final String CONFIG_NAME = "name";
+ private static final String MONITOR_INTERVAL = "monitorInterval";
+ private static final String CONFIG_TYPE = "type";
+
+ private final ConfigurationBuilder<PropertiesConfiguration> builder;
+ private Properties rootProperties;
+
+ public PropertiesConfigurationBuilder() {
+ this.builder = newConfigurationBuilder(PropertiesConfiguration.class);
+ }
+
+ public PropertiesConfigurationBuilder setRootProperties(final Properties rootProperties) {
+ this.rootProperties = rootProperties;
+ return this;
+ }
+
+ @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));
+ }
+
+ String scriptProp = rootProperties.getProperty("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");
+ 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 {
+ builder.add(createScriptFile(scriptProps));
+ }
+ }
+ }
+
+ 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))));
+ }
+ }
+
+ String filterProp = rootProperties.getProperty("filters");
+ if (filterProp != null) {
+ String[] filterNames = filterProp.split(",");
+ for (String filterName : filterNames) {
+ String name = filterName.trim();
+ builder.add(createFilter(name, PropertiesUtil.extractSubset(rootProperties, "filter." + name)));
+ }
+ }
+ String appenderProp = rootProperties.getProperty("appenders");
+ if (appenderProp != null) {
+ String[] appenderNames = appenderProp.split(",");
+ for (String appenderName : appenderNames) {
+ String name = appenderName.trim();
+ builder.add(createAppender(name, PropertiesUtil.extractSubset(rootProperties, "appender." + name)));
+ }
+ }
+ String loggerProp = rootProperties.getProperty("loggers");
+ if (loggerProp != null) {
+ String[] loggerNames = loggerProp.split(",");
+ for (String loggerName : loggerNames) {
+ String name = loggerName.trim();
+ if (!name.equals(LoggerConfig.ROOT)) {
+ builder.add(createLogger(name, PropertiesUtil.extractSubset(rootProperties, "logger." + name)));
+ }
+ }
+ }
+
+ 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);
+ 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);
+ return processRemainingProperties(scriptFileBuilder, properties);
+ }
+
+ private AppenderComponentBuilder createAppender(final String key, final Properties properties) {
+ String name = properties.getProperty(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);
+ if (Strings.isEmpty(type)) {
+ throw new ConfigurationException("No type attribute provided for Appender " + key);
+ }
+ properties.remove(CONFIG_TYPE);
+ AppenderComponentBuilder appenderBuilder = builder.newAppender(name, type);
+ addFiltersToComponent(appenderBuilder, properties);
+ Properties layoutProps = PropertiesUtil.extractSubset(properties, "layout");
+ if (layoutProps.size() > 0) {
+ appenderBuilder.add(createLayout(name, layoutProps));
+ }
+
+ return processRemainingProperties(appenderBuilder, properties);
+ }
+
+ private FilterComponentBuilder createFilter(final String key, final Properties properties) {
+ String type = properties.getProperty(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);
+ return processRemainingProperties(filterBuilder, properties);
+ }
+
+ private AppenderRefComponentBuilder createAppenderRef(final String key, final Properties properties) {
+ String ref = properties.getProperty("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");
+ if (!Strings.isEmpty(level)) {
+ appenderRefBuilder.addAttribute("level", level);
+ }
+ return addFiltersToComponent(appenderRefBuilder, properties);
+ }
+
+ private LoggerComponentBuilder createLogger(final String key, final Properties properties) {
+ String name = properties.getProperty(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);
+ if (type != null) {
+ if (type.equalsIgnoreCase("asyncLogger")) {
+ loggerBuilder = builder.newAsyncLogger(name, level);
+ } else {
+ throw new ConfigurationException("Unknown Logger type " + type + " for Logger " + name);
+ }
+ } else {
+ loggerBuilder = builder.newLogger(name, level);
+ }
+ addLoggersToComponent(loggerBuilder, properties);
+ addFiltersToComponent(loggerBuilder, properties);
+ String additivity = properties.getProperty("additivity");
+ if (!Strings.isEmpty(additivity)) {
+ loggerBuilder.addAttribute("additivity", additivity);
+ }
+ return loggerBuilder;
+ }
+
+ 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);
+ if (type != null) {
+ if (type.equalsIgnoreCase("asyncRoot")) {
+ loggerBuilder = builder.newAsyncRootLogger(level);
+ } else {
+ throw new ConfigurationException("Unknown Logger type for root logger" + type);
+ }
+ } else {
+ loggerBuilder = builder.newRootLogger(level);
+ }
+ addLoggersToComponent(loggerBuilder, properties);
+ return addFiltersToComponent(loggerBuilder, properties);
+ }
+
+ private LayoutComponentBuilder createLayout(final String appenderName, final Properties properties) {
+ String type = properties.getProperty(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);
+ 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);
+ 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);
+ 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();
+ int index = propertyName.indexOf('.');
+ if (index > 0) {
+ String prefix = propertyName.substring(0, index);
+ Properties componentProperties = PropertiesUtil.extractSubset(properties, prefix);
+ builder.addComponent(createComponent(builder, prefix, componentProperties));
+ } else {
+ builder.addAttribute(propertyName, properties.getProperty(propertyName));
+ properties.remove(propertyName);
+ }
+ }
+ return builder;
+ }
+
+ private <B extends FilterableComponentBuilder<? extends ComponentBuilder<?>>> B addFiltersToComponent(
+ final B componentBuilder, final Properties properties) {
+ final String filters = properties.getProperty("filters");
+ if (filters != null) {
+ properties.remove("filters");
+ final String[] filterNames = filters.split(",");
+ for (final String name : filterNames) {
+ final String filterName = name.trim();
+ final Properties filterProps = PropertiesUtil.extractSubset(properties, "filter." + filterName);
+ componentBuilder.add(createFilter(filterName, filterProps));
+ }
+ }
+ return componentBuilder;
+ }
+
+ private <B extends LoggableComponentBuilder<? extends ComponentBuilder<?>>> B addLoggersToComponent(
+ final B loggerBuilder, final Properties properties) {
+ final String appenderRefs = properties.getProperty("appenderRefs");
+ if (appenderRefs != null) {
+ properties.remove("appenderRefs");
+ final String[] refNames = appenderRefs.split(",");
+ for (final String refName : refNames) {
+ final String appenderRef = refName.trim();
+ final Properties refProps = PropertiesUtil.extractSubset(properties, "appenderRef." + appenderRef);
+ loggerBuilder.add(createAppenderRef(appenderRef, refProps));
+ }
+ }
+ return loggerBuilder;
+ }
+}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/722aa88b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationFactory.java
index 6be8683..5742d7b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationFactory.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationFactory.java
@@ -16,29 +16,15 @@
*/
package org.apache.logging.log4j.core.config.properties;
-import org.apache.logging.log4j.Level;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
import org.apache.logging.log4j.core.config.ConfigurationException;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.core.config.ConfigurationSource;
-import org.apache.logging.log4j.core.config.LoggerConfig;
import org.apache.logging.log4j.core.config.Order;
-import org.apache.logging.log4j.core.config.builder.api.AppenderComponentBuilder;
-import org.apache.logging.log4j.core.config.builder.api.AppenderRefComponentBuilder;
-import org.apache.logging.log4j.core.config.builder.api.ComponentBuilder;
-import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder;
-import org.apache.logging.log4j.core.config.builder.api.FilterComponentBuilder;
-import org.apache.logging.log4j.core.config.builder.api.LayoutComponentBuilder;
-import org.apache.logging.log4j.core.config.builder.api.LoggerComponentBuilder;
-import org.apache.logging.log4j.core.config.builder.api.RootLoggerComponentBuilder;
-import org.apache.logging.log4j.core.config.builder.api.ScriptComponentBuilder;
-import org.apache.logging.log4j.core.config.builder.api.ScriptFileComponentBuilder;
import org.apache.logging.log4j.core.config.plugins.Plugin;
-import org.apache.logging.log4j.util.PropertiesUtil;
-import org.apache.logging.log4j.util.Strings;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
/**
* Creates a PropertiesConfiguration from a properties file.
@@ -48,14 +34,6 @@ import java.util.Properties;
@Plugin(name = "PropertiesConfigurationFactory", category = ConfigurationFactory.CATEGORY)
@Order(8)
public class PropertiesConfigurationFactory extends ConfigurationFactory {
- private static final String ADVERTISER_KEY = "advertiser";
- private static final String STATUS_KEY = "status";
- private static final String SHUTDOWN_HOOK = "shutdownHook";
- private static final String VERBOSE = "verbose";
- private static final String PACKAGES = "packages";
- private static final String CONFIG_NAME = "name";
- private static final String MONITOR_INTERVAL = "monitorInterval";
- private static final String CONFIG_TYPE = "type";
@Override
protected String[] getSupportedTypes() {
@@ -63,356 +41,14 @@ public class PropertiesConfigurationFactory extends ConfigurationFactory {
}
@Override
- public PropertiesConfiguration getConfiguration(ConfigurationSource source) {
+ public PropertiesConfiguration getConfiguration(final ConfigurationSource source) {
final InputStream configStream = source.getInputStream();
- Properties properties = new Properties();
+ final Properties properties = new Properties();
try {
properties.load(configStream);
} catch (IOException ioe) {
throw new ConfigurationException("Unable to load " + source.toString(), ioe);
}
- ConfigurationBuilder<PropertiesConfiguration> builder = newConfigurationBuilder(PropertiesConfiguration.class);
- String value = properties.getProperty(STATUS_KEY);
- if (value != null) {
- builder.setStatusLevel(Level.toLevel(value, Level.ERROR));
- } else {
- builder.setStatusLevel(Level.ERROR);
- }
- value = properties.getProperty(SHUTDOWN_HOOK);
- if (value != null) {
- builder.setShutdownHook(value);
- }
- value = properties.getProperty(VERBOSE);
- if (value != null) {
- builder.setVerbosity(value);
- }
- value = properties.getProperty(PACKAGES);
- if (value != null) {
- builder.setPackages(value);
- }
- value = properties.getProperty(CONFIG_NAME);
- if (value != null) {
- builder.setConfigurationName(value);
- }
- value = properties.getProperty(MONITOR_INTERVAL);
- if (value != null) {
- builder.setMonitorInterval(value);
- }
- value = properties.getProperty(ADVERTISER_KEY);
- if (value != null) {
- builder.setAdvertiser(value);
- }
- Properties props = PropertiesUtil.extractSubset(properties, "property");
- for (String key : props.stringPropertyNames()) {
- builder.addProperty(key, props.getProperty(key));
- }
-
- String scriptProp = properties.getProperty("scripts");
- if (scriptProp != null) {
- String[] scriptNames = scriptProp.split(",");
- for (String scriptName : scriptNames) {
- String name = scriptName.trim();
- Properties scriptProps = PropertiesUtil.extractSubset(properties, "script." + name);
- String type = scriptProps.getProperty("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(builder, name, scriptProps));
- } else {
- builder.add(createScriptFile(builder, name, scriptProps));
- }
- }
- }
-
- Properties levelProps = PropertiesUtil.extractSubset(properties, "customLevel");
- if (levelProps.size() > 0) {
- for (String key : levelProps.stringPropertyNames()) {
- builder.add(builder.newCustomLevel(key, Integer.parseInt(props.getProperty(key))));
- }
- }
-
- String filterProp = properties.getProperty("filters");
- if (filterProp != null) {
- String[] filterNames = filterProp.split(",");
- for (String filterName : filterNames) {
- String name = filterName.trim();
- builder.add(createFilter(builder, name, PropertiesUtil.extractSubset(properties, "filter." + name)));
- }
- }
- String appenderProp = properties.getProperty("appenders");
- if (appenderProp != null) {
- String[] appenderNames = appenderProp.split(",");
- for (String appenderName : appenderNames) {
- String name = appenderName.trim();
- builder.add(createAppender(builder, name, PropertiesUtil.extractSubset(properties, "appender." +
- name)));
- }
- }
- String loggerProp = properties.getProperty("loggers");
- if (loggerProp != null) {
- String[] loggerNames = loggerProp.split(",");
- for (String loggerName : loggerNames) {
- String name = loggerName.trim();
- if (!name.equals(LoggerConfig.ROOT)) {
- builder.add(createLogger(builder, name, PropertiesUtil.extractSubset(properties, "logger." +
- name)));
- }
- }
- }
-
- props = PropertiesUtil.extractSubset(properties, "rootLogger");
- if (props.size() > 0) {
- builder.add(createRootLogger(builder, props));
- }
-
- return builder.build();
- }
-
-
- private ScriptComponentBuilder createScript(ConfigurationBuilder<PropertiesConfiguration> builder, String key,
- 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);
- processRemainingProperties(scriptBuilder, key, properties);
- return scriptBuilder;
- }
-
- private ScriptFileComponentBuilder createScriptFile(ConfigurationBuilder<PropertiesConfiguration> builder, String key,
- 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);
- processRemainingProperties(scriptFileBuilder, key, properties);
- return scriptFileBuilder;
- }
-
-
- private AppenderComponentBuilder createAppender(ConfigurationBuilder<PropertiesConfiguration> builder, String key,
- Properties properties) {
- String name = properties.getProperty(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);
- if (Strings.isEmpty(type)) {
- throw new ConfigurationException("No type attribute provided for Appender " + key);
- }
- properties.remove(CONFIG_TYPE);
- AppenderComponentBuilder appenderBuilder = builder.newAppender(name, type);
- String filters = properties.getProperty("filters");
- if (filters != null) {
- properties.remove("filters");
- String[] filterNames = filters.split(",");
- for (String filterName : filterNames) {
- filterName = filterName.trim();
- Properties filterProps = PropertiesUtil.extractSubset(properties, "filter." + filterName);
- appenderBuilder.add(createFilter(builder, filterName, filterProps));
- }
- }
- Properties layoutProps = PropertiesUtil.extractSubset(properties, "layout");
- if (layoutProps.size() > 0) {
- appenderBuilder.add(createLayout(builder, name, layoutProps));
- }
-
- processRemainingProperties(appenderBuilder, name, properties);
- return appenderBuilder;
- }
-
- private FilterComponentBuilder createFilter(ConfigurationBuilder<PropertiesConfiguration> builder, String key,
- Properties properties) {
- String type = properties.getProperty(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);
- processRemainingProperties(filterBuilder, key, properties);
- return filterBuilder;
- }
-
- private AppenderRefComponentBuilder createAppenderRef(ConfigurationBuilder<PropertiesConfiguration> builder,
- String key, Properties properties) {
- String ref = properties.getProperty("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");
- if (!Strings.isEmpty(level)) {
- appenderRefBuilder.addAttribute("level", level);
- }
- String filters = properties.getProperty("filters");
- if (filters != null) {
- properties.remove("filters");
- String[] filterNames = filters.split(",");
- for (String filterName : filterNames) {
- filterName = filterName.trim();
- Properties filterProps = PropertiesUtil.extractSubset(properties, "filter." + filterName);
- appenderRefBuilder.add(createFilter(builder, filterName, filterProps));
- }
- }
- return appenderRefBuilder;
- }
-
- private LoggerComponentBuilder createLogger(ConfigurationBuilder<PropertiesConfiguration> builder, String key,
- Properties properties) {
- String name = properties.getProperty(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);
- if (type != null) {
- if (type.equalsIgnoreCase("asyncLogger")) {
- loggerBuilder = builder.newAsyncLogger(name, level);
- } else {
- throw new ConfigurationException("Unknown Logger type " + type + " for Logger " + name);
- }
- } else {
- loggerBuilder = builder.newLogger(name, level);
- }
- String appenderRefs = properties.getProperty("appenderRefs");
- if (appenderRefs != null) {
- properties.remove("appenderRefs");
- String[] refNames = appenderRefs.split(",");
- for (String appenderRef : refNames) {
- appenderRef = appenderRef.trim();
- Properties refProps = PropertiesUtil.extractSubset(properties, "appenderRef." + appenderRef);
- loggerBuilder.add(createAppenderRef(builder, appenderRef, refProps));
- }
- }
- String filters = properties.getProperty("filters");
- if (filters != null) {
- properties.remove("filters");
- String[] filterNames = filters.split(",");
- for (String filterName : filterNames) {
- filterName = filterName.trim();
- Properties filterProps = PropertiesUtil.extractSubset(properties, "filter." + filterName);
- loggerBuilder.add(createFilter(builder, filterName, filterProps));
- }
- }
- String additivity = properties.getProperty("additivity");
- if (!Strings.isEmpty(additivity)) {
- loggerBuilder.addAttribute("additivity", additivity);
- }
- return loggerBuilder;
- }
-
- private RootLoggerComponentBuilder createRootLogger(ConfigurationBuilder<PropertiesConfiguration> builder,
- Properties properties) {
- String level = properties.getProperty("level");
- if (level != null) {
- properties.remove("level");
- }
- RootLoggerComponentBuilder loggerBuilder;
- String type = properties.getProperty(CONFIG_TYPE);
- if (type != null) {
- if (type.equalsIgnoreCase("asyncRoot")) {
- loggerBuilder = builder.newAsyncRootLogger(level);
- } else {
- throw new ConfigurationException("Unknown Logger type for root logger" + type);
- }
- } else {
- loggerBuilder = builder.newRootLogger(level);
- }
- String appenderRefs = properties.getProperty("appenderRefs");
- if (appenderRefs != null) {
- properties.remove("appenderRefs");
- String[] refNames = appenderRefs.split(",");
- for (String appenderRef : refNames) {
- appenderRef = appenderRef.trim();
- Properties refProps = PropertiesUtil.extractSubset(properties, "appenderRef." + appenderRef);
- loggerBuilder.add(createAppenderRef(builder, appenderRef, refProps));
- }
- }
- String filters = properties.getProperty("filters");
- if (filters != null) {
- properties.remove("filters");
- String[] filterNames = filters.split(",");
- for (String filterName : filterNames) {
- filterName = filterName.trim();
- Properties filterProps = PropertiesUtil.extractSubset(properties, "filter." + filterName);
- loggerBuilder.add(createFilter(builder, filterName, filterProps));
- }
- }
- return loggerBuilder;
- }
-
- private LayoutComponentBuilder createLayout(ConfigurationBuilder<PropertiesConfiguration> builder,
- String appenderName, Properties properties) {
- String type = properties.getProperty(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);
- processRemainingProperties(layoutBuilder, appenderName, properties);
- return layoutBuilder;
- }
-
- private <B extends ComponentBuilder<B>> ComponentBuilder<B> createComponent(ComponentBuilder<?> parent, String key,
- Properties properties) {
- String name = properties.getProperty(CONFIG_NAME);
- if (name != null) {
- properties.remove(CONFIG_NAME);
- }
- String type = properties.getProperty(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);
- processRemainingProperties(componentBuilder, name, properties);
- return componentBuilder;
- }
-
- private void processRemainingProperties(ComponentBuilder<?> builder, String name, Properties properties) {
- while (properties.size() > 0) {
- 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);
- builder.addComponent(createComponent(builder, prefix, componentProperties));
- } else {
- builder.addAttribute(propertyName, properties.getProperty(propertyName));
- properties.remove(propertyName);
- }
- }
+ return new PropertiesConfigurationBuilder().setRootProperties(properties).build();
}
}
[2/2] logging-log4j2 git commit: Use final and reduce code redundancy.
Posted by ma...@apache.org.
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 <bo...@gmail.com>
Authored: Sun Mar 6 14:00:33 2016 -0600
Committer: Matt Sicker <bo...@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();