diff --git a/core/src/main/java/org/synyx/hera/core/OrderAwarePluginRegistry.java b/core/src/main/java/org/synyx/hera/core/OrderAwarePluginRegistry.java index 5893856..7b355d7 100644 --- a/core/src/main/java/org/synyx/hera/core/OrderAwarePluginRegistry.java +++ b/core/src/main/java/org/synyx/hera/core/OrderAwarePluginRegistry.java @@ -67,11 +67,7 @@ public class OrderAwarePluginRegistry, S> extends Comparator comparator) { super(plugins); - - this.comparator = DEFAULT_COMPARATOR; - if (comparator != null) { - this.comparator = comparator; - } + setComparator(comparator); } @@ -150,6 +146,26 @@ public class OrderAwarePluginRegistry, S> extends } + /** + * Sets the comparator to use. Resorts the contained {@link Plugin}s if any + * available. + * + * @param comparator the comparator to set + */ + private void setComparator(Comparator comparator) { + + this.comparator = DEFAULT_COMPARATOR; + + if (comparator != null) { + this.comparator = comparator; + } + + if (plugins != null) { + Collections.sort(plugins, comparator); + } + } + + /* * (non-Javadoc) * @@ -173,7 +189,7 @@ public class OrderAwarePluginRegistry, S> extends public OrderAwarePluginRegistry addPlugin(T plugin) { super.addPlugin(plugin); - Collections.sort(getPlugins(), comparator); + Collections.sort(plugins, comparator); return this; } @@ -187,7 +203,7 @@ public class OrderAwarePluginRegistry, S> extends @SuppressWarnings("unchecked") public OrderAwarePluginRegistry reverse() { - return create(getPlugins(), new RevertingComparator(comparator)); + return create(plugins, new RevertingComparator(comparator)); } /** diff --git a/core/src/main/java/org/synyx/hera/core/SimplePluginRegistry.java b/core/src/main/java/org/synyx/hera/core/SimplePluginRegistry.java index 881b3d4..323d97d 100644 --- a/core/src/main/java/org/synyx/hera/core/SimplePluginRegistry.java +++ b/core/src/main/java/org/synyx/hera/core/SimplePluginRegistry.java @@ -17,6 +17,7 @@ package org.synyx.hera.core; import java.util.ArrayList; +import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -32,8 +33,7 @@ import java.util.List; public class SimplePluginRegistry, S> implements MutablePluginRegistry { - // Registered plugins - private List plugins; + protected List plugins; /** @@ -84,7 +84,10 @@ public class SimplePluginRegistry, S> implements public void setPlugins(List plugins) { this.plugins = new ArrayList(); - this.plugins.addAll(plugins); + + if (plugins != null) { + this.plugins.addAll(plugins); + } } @@ -97,6 +100,10 @@ public class SimplePluginRegistry, S> implements */ public SimplePluginRegistry addPlugin(T plugin) { + if (null == plugin) { + throw new IllegalArgumentException("Plugin must not be null!"); + } + this.plugins.add(plugin); return this; }