Author: mattsicker
Date: Mon May 26 04:46:01 2014
New Revision: 1597515
URL: http://svn.apache.org/r1597515
Log:
Refactor a few more annotations into their visitor classes.
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
URL:
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java?rev=1597515&r1=1597514&r2=1597515&view=diff
==============================================================================
---
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
(original)
+++
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
Mon May 26 04:46:01 2014
@@ -33,15 +33,10 @@ import org.apache.logging.log4j.core.Log
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.Node;
import org.apache.logging.log4j.core.config.plugins.PluginAliases;
-import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
import org.apache.logging.log4j.core.config.plugins.PluginElement;
-import org.apache.logging.log4j.core.config.plugins.PluginNode;
-import org.apache.logging.log4j.core.config.plugins.PluginValue;
-import org.apache.logging.log4j.core.config.plugins.SensitivePluginAttribute;
import org.apache.logging.log4j.core.config.plugins.visitors.PluginVisitor;
import org.apache.logging.log4j.core.config.plugins.visitors.PluginVisitors;
import org.apache.logging.log4j.core.util.Assert;
-import org.apache.logging.log4j.core.util.NameUtil;
import org.apache.logging.log4j.status.StatusLogger;
/**
@@ -164,11 +159,11 @@ public class PluginBuilder<T> {
final Object[] args = new Object[annotations.length];
for (int i = 0; i < annotations.length; i++) {
final String[] aliases = extractPluginAliases(annotations[i]);
+ LOGGER.debug("Constructing plugin of type {}", clazz);
for (Annotation a : annotations[i]) {
if (a instanceof PluginAliases) {
continue; // already processed
}
- // TODO: migrate the rest of this to PluginVisitor classes
final PluginVisitor<? extends Annotation> helper =
PluginVisitors.findVisitor(a.annotationType());
if (helper != null) {
args[i] = helper.setAliases(aliases)
@@ -176,43 +171,8 @@ public class PluginBuilder<T> {
.setConversionType(types[i])
.setStrSubstitutor(configuration.getStrSubstitutor())
.visit(configuration, node, event);
- continue;
- }
- sb.append(sb.length() == 0 ? "with params(" : ", ");
- if (a instanceof PluginNode) {
- if (types[i].isInstance(node)) {
- args[i] = node;
- sb.append("Node=").append(node.getName());
- } else {
- LOGGER.warn("Parameter annotated with PluginNode is
not compatible with type {}.",
- node.getClass().getName());
- }
- } else if (a instanceof PluginConfiguration) {
- if (types[i].isInstance(configuration)) {
- args[i] = configuration;
- sb.append("Configuration");
- if (configuration.getName() != null) {
-
sb.append('(').append(configuration.getName()).append(')');
- }
- } else {
- LOGGER.warn("Parameter annotated with
PluginConfiguration is not compatible with type {}.",
- configuration.getClass().getName());
- }
- } else if (a instanceof PluginValue) {
- final String name = ((PluginValue) a).value();
- final String v = node.getValue() != null ? node.getValue()
: getAttrValue("value");
- final String value =
configuration.getStrSubstitutor().replace(event, v);
- args[i] = value;
- sb.append(name).append("=\"").append(value).append('"');
- } else if (a instanceof SensitivePluginAttribute) {
- // LOG4J2-605
- // we shouldn't be displaying passwords
- final SensitivePluginAttribute attribute =
(SensitivePluginAttribute) a;
- final String name = attribute.value();
- final String value = getReplacedAttributeValue(name,
aliases);
- args[i] = value; // TODO: merge this with @PluginAttribute
- sb.append(name).append("=\"").append(NameUtil.md5(value +
PluginBuilder.class.getName())).append('"');
} else if (a instanceof PluginElement) {
+ // TODO: migrate this to PluginElementVisitor
final PluginElement element = (PluginElement) a;
final String name = element.value();
if (types[i].isArray()) {
@@ -268,12 +228,8 @@ public class PluginBuilder<T> {
}
}
}
- if (sb.length() > 0) {
- sb.append(')');
- }
checkForRemainingAttributes();
verifyNodeChildrenUsed();
- LOGGER.debug("Calling {} on class {} for element {} {}",
factory.getName(), clazz.getName(), node.getName(), sb.toString());
return args;
}
@@ -287,31 +243,6 @@ public class PluginBuilder<T> {
return aliases;
}
- private String getReplacedAttributeValue(final String name, final
String... aliases) {
- return configuration.getStrSubstitutor().replace(event,
getAttrValue(name, aliases));
- }
-
- private String getAttrValue(final String name, final String... aliases) {
- final Map<String, String> attrs = node.getAttributes();
- for (final Map.Entry<String, String> entry : attrs.entrySet()) {
- final String key = entry.getKey();
- final String attr = entry.getValue();
- if (key.equalsIgnoreCase(name)) {
- attrs.remove(key);
- return attr;
- }
- if (aliases != null) {
- for (final String alias : aliases) {
- if (key.equalsIgnoreCase(alias)) {
- attrs.remove(key);
- return attr;
- }
- }
- }
- }
- return null;
- }
-
private static Object[] collectionToArray(final Collection<?> collection,
final Class<?> type) {
final Object[] array = (Object[]) Array.newInstance(type,
collection.size());
int i = 0;
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java
URL:
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java?rev=1597515&r1=1597514&r2=1597515&view=diff
==============================================================================
---
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java
(original)
+++
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java
Mon May 26 04:46:01 2014
@@ -23,6 +23,10 @@ import java.util.concurrent.ConcurrentHa
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
+import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
+import org.apache.logging.log4j.core.config.plugins.PluginNode;
+import org.apache.logging.log4j.core.config.plugins.PluginValue;
+import org.apache.logging.log4j.core.config.plugins.SensitivePluginAttribute;
import org.apache.logging.log4j.status.StatusLogger;
/**
@@ -40,6 +44,10 @@ public final class PluginVisitors {
// register the default PluginVisitor classes
REGISTRY = new ConcurrentHashMap<Class<? extends Annotation>, Class<?
extends PluginVisitor<? extends Annotation>>>();
registerVisitor(PluginAttribute.class, PluginAttributeVisitor.class);
+ registerVisitor(SensitivePluginAttribute.class,
SensitivePluginAttributeVisitor.class);
+ registerVisitor(PluginConfiguration.class,
PluginConfigurationVisitor.class);
+ registerVisitor(PluginNode.class, PluginNodeVisitor.class);
+ registerVisitor(PluginValue.class, PluginValueVisitor.class);
}
private PluginVisitors() {