TAMAYA-212: Rendered default comparators into singletons.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/commit/fe77d58f Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/fe77d58f Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/fe77d58f Branch: refs/heads/master Commit: fe77d58fe50b0f9a9ea5d473d96e3aa439356f4a Parents: 9e4991b Author: anatole <anat...@apache.org> Authored: Wed Dec 21 16:50:43 2016 +0100 Committer: anatole <anat...@apache.org> Committed: Wed Dec 21 16:50:43 2016 +0100 ---------------------------------------------------------------------- .../DefaultConfigurationContextBuilder.java | 3 --- .../tamaya/spisupport/PriorityServiceComparator.java | 12 ++++++++++++ .../spisupport/PropertiesResourcePropertySource.java | 4 +++- .../tamaya/spisupport/PropertyFilterComparator.java | 14 +++++++++++++- .../tamaya/spisupport/PropertySourceComparator.java | 13 +++++++++++++ .../spisupport/PriorityServiceComparatorTest.java | 10 ++++------ 6 files changed, 45 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/fe77d58f/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationContextBuilder.java ---------------------------------------------------------------------- diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationContextBuilder.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationContextBuilder.java index 3ed8946..d3b6930 100644 --- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationContextBuilder.java +++ b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationContextBuilder.java @@ -46,9 +46,6 @@ public class DefaultConfigurationContextBuilder implements ConfigurationContextB private static final Logger LOG = Logger.getLogger(DefaultConfigurationContextBuilder.class.getName()); - public static final Comparator<PropertySource> DEFAULT_PROPERTYSOURCE_COMPARATOR = new PropertySourceComparator(); - public static final Comparator<?> DEFAULT_PROPERTYFILTER_COMPARATOR = new PriorityServiceComparator(); - List<PropertyFilter> propertyFilters = new ArrayList<>(); List<PropertySource> propertySources = new ArrayList<>(); PropertyValueCombinationPolicy combinationPolicy = http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/fe77d58f/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PriorityServiceComparator.java ---------------------------------------------------------------------- diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PriorityServiceComparator.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PriorityServiceComparator.java index 8f15696..90a8387 100644 --- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PriorityServiceComparator.java +++ b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PriorityServiceComparator.java @@ -29,6 +29,18 @@ public class PriorityServiceComparator implements Comparator<Object>, Serializab private static final long serialVersionUID = 1L; + private static final PriorityServiceComparator INSTANCE = new PriorityServiceComparator(); + + private PriorityServiceComparator(){} + + /** + * Get the shared instance of the comparator. + * @return the shared instance, never null. + */ + public static PriorityServiceComparator getInstance(){ + return INSTANCE; + } + @Override public int compare(Object o1, Object o2) { int prio = getPriority(o1) - getPriority(o2); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/fe77d58f/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertiesResourcePropertySource.java ---------------------------------------------------------------------- diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertiesResourcePropertySource.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertiesResourcePropertySource.java index 3744c94..1dc7586 100644 --- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertiesResourcePropertySource.java +++ b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertiesResourcePropertySource.java @@ -18,6 +18,8 @@ */ package org.apache.tamaya.spisupport; +import org.apache.tamaya.spi.ServiceContextManager; + import java.io.InputStream; import java.net.URL; import java.util.HashMap; @@ -77,7 +79,7 @@ public class PropertiesResourcePropertySource extends MapPropertySource { if(cl==null){ cl = PropertiesResourcePropertySource.class.getClassLoader(); } - URL url = cl.getResource(path); + URL url = ServiceContextManager.getServiceContext().getResource(path, cl); return loadProps(url); } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/fe77d58f/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyFilterComparator.java ---------------------------------------------------------------------- diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyFilterComparator.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyFilterComparator.java index a7a5c66..20eef63 100644 --- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyFilterComparator.java +++ b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertyFilterComparator.java @@ -27,10 +27,22 @@ import java.util.Comparator; /** * Comparator for PropertyFilters based on their priority annotations. */ -public class PropertyFilterComparator implements Comparator<PropertyFilter>, Serializable { +public final class PropertyFilterComparator implements Comparator<PropertyFilter>, Serializable { private static final long serialVersionUID = 1L; + private static final PropertyFilterComparator INSTANCE = new PropertyFilterComparator(); + + /** + * Get the shared instance of the comparator. + * @return the shared instance, never null. + */ + public static PropertyFilterComparator getInstance(){ + return INSTANCE; + } + + private PropertyFilterComparator(){} + /** * Compare 2 filters for ordering the filter chain. * http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/fe77d58f/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertySourceComparator.java ---------------------------------------------------------------------- diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertySourceComparator.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertySourceComparator.java index 6554167..71e3ffb 100644 --- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertySourceComparator.java +++ b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertySourceComparator.java @@ -30,6 +30,19 @@ public class PropertySourceComparator implements Comparator<PropertySource>, Ser /** serial version UID. */ private static final long serialVersionUID = 1L; + private static final PropertySourceComparator INSTANCE = new PropertySourceComparator(); + + private PropertySourceComparator(){} + + /** + * Get the shared instance of the comparator. + * @return the shared instance, never null. + */ + public static PropertySourceComparator getInstance(){ + return INSTANCE; + } + + /** * Order property source reversely, the most important come first. * http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/fe77d58f/modules/spi-support/src/test/java/org/apache/tamaya/spisupport/PriorityServiceComparatorTest.java ---------------------------------------------------------------------- diff --git a/modules/spi-support/src/test/java/org/apache/tamaya/spisupport/PriorityServiceComparatorTest.java b/modules/spi-support/src/test/java/org/apache/tamaya/spisupport/PriorityServiceComparatorTest.java index 846e283..dc15a16 100644 --- a/modules/spi-support/src/test/java/org/apache/tamaya/spisupport/PriorityServiceComparatorTest.java +++ b/modules/spi-support/src/test/java/org/apache/tamaya/spisupport/PriorityServiceComparatorTest.java @@ -29,14 +29,12 @@ import static org.junit.Assert.*; */ public class PriorityServiceComparatorTest { - private PriorityServiceComparator comp = new PriorityServiceComparator(); - @Test public void compare() throws Exception { - assertTrue(comp.compare("a", "b")==0); - assertTrue(comp.compare(getClass(), getClass())==0); - assertTrue(comp.compare(new A(), new SystemPropertySource())==-1); - assertTrue(comp.compare(new SystemPropertySource(), new A())==1); + assertTrue(PriorityServiceComparator.getInstance().compare("a", "b")==0); + assertTrue(PriorityServiceComparator.getInstance().compare(getClass(), getClass())==0); + assertTrue(PriorityServiceComparator.getInstance().compare(new A(), new SystemPropertySource())==-1); + assertTrue(PriorityServiceComparator.getInstance().compare(new SystemPropertySource(), new A())==1); } @Priority(100)