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 2014/10/03 06:12:37 UTC
[1/2] git commit: Add singleton for Comparator class.
Repository: logging-log4j2
Updated Branches:
refs/heads/master 1ce4c812d -> 0bf8ead30
Add singleton for Comparator class.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/1bcd3114
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/1bcd3114
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/1bcd3114
Branch: refs/heads/master
Commit: 1bcd311451cf5bdd8830bf9562d004e7df1dc599
Parents: 1ce4c81
Author: Matt Sicker <ma...@apache.org>
Authored: Thu Oct 2 23:09:34 2014 -0500
Committer: Matt Sicker <ma...@apache.org>
Committed: Thu Oct 2 23:09:34 2014 -0500
----------------------------------------------------------------------
.../logging/log4j/core/config/OrderComparator.java | 12 ++++++++++++
1 file changed, 12 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1bcd3114/log4j-core/src/main/java/org/apache/logging/log4j/core/config/OrderComparator.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/OrderComparator.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/OrderComparator.java
index 94b45ad..63419e0 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/OrderComparator.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/OrderComparator.java
@@ -26,6 +26,18 @@ import org.apache.logging.log4j.core.util.Assert;
* @since 2.1
*/
public class OrderComparator implements Comparator<Class<?>> {
+
+ private static final Comparator<Class<?>> INSTANCE = new OrderComparator();
+
+ /**
+ * Returns a singleton instance of this class.
+ *
+ * @return the singleton for this class.
+ */
+ public static Comparator<Class<?>> getInstance() {
+ return INSTANCE;
+ }
+
@Override
public int compare(final Class<?> lhs, final Class<?> rhs) {
final Order lhsOrder = Assert.requireNonNull(lhs, "lhs").getAnnotation(Order.class);
[2/2] git commit: Use OrderComparator instead of WeightedFactory.
Posted by ma...@apache.org.
Use OrderComparator instead of WeightedFactory.
- Works nicely with future use of OrderComparator for all plugins.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/0bf8ead3
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/0bf8ead3
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/0bf8ead3
Branch: refs/heads/master
Commit: 0bf8ead304b0338a716af6e91c0ebc7f956d1b29
Parents: 1bcd311
Author: Matt Sicker <ma...@apache.org>
Authored: Thu Oct 2 23:11:27 2014 -0500
Committer: Matt Sicker <ma...@apache.org>
Committed: Thu Oct 2 23:11:27 2014 -0500
----------------------------------------------------------------------
.../log4j/core/config/ConfigurationFactory.java | 47 +++-----------------
1 file changed, 6 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/0bf8ead3/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
index e982e29..23c9565 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
@@ -30,7 +30,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
-import java.util.TreeSet;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@@ -140,22 +139,18 @@ public abstract class ConfigurationFactory {
final PluginManager manager = new PluginManager(CATEGORY);
manager.collectPlugins();
final Map<String, PluginType<?>> plugins = manager.getPlugins();
- final Collection<WeightedFactory> ordered = new TreeSet<WeightedFactory>();
+ final List<Class<? extends ConfigurationFactory>> ordered =
+ new ArrayList<Class<? extends ConfigurationFactory>>(plugins.size());
for (final PluginType<?> type : plugins.values()) {
try {
- final Class<? extends ConfigurationFactory> clazz = type.getPluginClass().asSubclass(
- ConfigurationFactory.class);
- final Order order = clazz.getAnnotation(Order.class);
- if (order != null) {
- final int weight = order.value();
- ordered.add(new WeightedFactory(weight, clazz));
- }
+ ordered.add(type.getPluginClass().asSubclass(ConfigurationFactory.class));
} catch (final Exception ex) {
LOGGER.warn("Unable to add class {}", type.getPluginClass(), ex);
}
}
- for (final WeightedFactory wf : ordered) {
- addFactory(list, wf.factoryClass);
+ Collections.sort(ordered, OrderComparator.getInstance());
+ for (Class<? extends ConfigurationFactory> clazz : ordered) {
+ addFactory(list, clazz);
}
// see above comments about double-checked locking
//noinspection NonThreadSafeLazyInitialization
@@ -374,36 +369,6 @@ public abstract class ConfigurationFactory {
}
/**
- * Factory that chooses a ConfigurationFactory based on weighting.
- */
- private static class WeightedFactory implements Comparable<WeightedFactory> {
- private final int weight;
- private final Class<? extends ConfigurationFactory> factoryClass;
-
- /**
- * Constructor.
- * @param weight The weight.
- * @param clazz The class.
- */
- public WeightedFactory(final int weight, final Class<? extends ConfigurationFactory> clazz) {
- this.weight = weight;
- this.factoryClass = clazz;
- }
-
- @Override
- public int compareTo(final WeightedFactory wf) {
- final int w = wf.weight;
- if (weight == w) {
- return 0;
- } else if (weight > w) {
- return -1;
- } else {
- return 1;
- }
- }
- }
-
- /**
* Default Factory.
*/
private static class Factory extends ConfigurationFactory {