You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by an...@apache.org on 2016/12/19 22:57:21 UTC

[2/2] incubator-tamaya git commit: TAMAYA-199: Ensured ServiceContext does sort services along their priorities, reusing existing comparators.

TAMAYA-199: Ensured ServiceContext does sort services along their priorities, reusing existing comparators.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/commit/33722ab0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/tree/33722ab0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/diff/33722ab0

Branch: refs/heads/master
Commit: 33722ab03c1900adb94730b52a6543e59844e14d
Parents: 4950b41
Author: anatole <an...@apache.org>
Authored: Mon Dec 19 23:56:33 2016 +0100
Committer: anatole <an...@apache.org>
Committed: Mon Dec 19 23:57:15 2016 +0100

----------------------------------------------------------------------
 .../tamaya/core/internal/DefaultServiceContext.java       |  1 +
 .../tamaya/core/internal/PriorityServiceComparator.java   | 10 ++++++++++
 .../tamaya/core/internal/PropertyFilterComparator.java    | 10 ++++++++++
 .../tamaya/core/internal/PropertySourceComparator.java    | 10 ++++++++++
 .../tamaya/core/internal/DefaultServiceContextTest.java   | 10 ++++------
 5 files changed, 35 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/33722ab0/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultServiceContext.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultServiceContext.java b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultServiceContext.java
index 757f9c0..9e1fe1c 100644
--- a/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultServiceContext.java
+++ b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultServiceContext.java
@@ -77,6 +77,7 @@ public final class DefaultServiceContext implements ServiceContext {
             for (T t : ServiceLoader.load(serviceType)) {
                 services.add(t);
             }
+            Collections.sort(services, PriorityServiceComparator.getInstance());
             services = Collections.unmodifiableList(services);
         } catch (ServiceConfigurationError e) {
             Logger.getLogger(DefaultServiceContext.class.getName()).log(Level.WARNING,

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/33722ab0/code/core/src/main/java/org/apache/tamaya/core/internal/PriorityServiceComparator.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/internal/PriorityServiceComparator.java b/code/core/src/main/java/org/apache/tamaya/core/internal/PriorityServiceComparator.java
index c0cfca6..671c3fb 100644
--- a/code/core/src/main/java/org/apache/tamaya/core/internal/PriorityServiceComparator.java
+++ b/code/core/src/main/java/org/apache/tamaya/core/internal/PriorityServiceComparator.java
@@ -26,6 +26,16 @@ import java.util.Comparator;
  */
 public class PriorityServiceComparator implements Comparator<Object> {
 
+    private static final PriorityServiceComparator INSTANCE = new 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/blob/33722ab0/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyFilterComparator.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyFilterComparator.java b/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyFilterComparator.java
index abf22be..e0bd8e0 100644
--- a/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyFilterComparator.java
+++ b/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyFilterComparator.java
@@ -31,6 +31,16 @@ public class PropertyFilterComparator implements Comparator<PropertyFilter>, Ser
 
     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;
+    }
+
     /**
      * Compare 2 filters for ordering the filter chain.
      *

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/33722ab0/code/core/src/main/java/org/apache/tamaya/core/internal/PropertySourceComparator.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/internal/PropertySourceComparator.java b/code/core/src/main/java/org/apache/tamaya/core/internal/PropertySourceComparator.java
index 24ee1f2..f686ee3 100644
--- a/code/core/src/main/java/org/apache/tamaya/core/internal/PropertySourceComparator.java
+++ b/code/core/src/main/java/org/apache/tamaya/core/internal/PropertySourceComparator.java
@@ -30,6 +30,16 @@ public class PropertySourceComparator implements Comparator<PropertySource>, Ser
 
     private static final long serialVersionUID = 1L;
 
+    private static final PropertySourceComparator INSTANCE = new 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/blob/33722ab0/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultServiceContextTest.java
----------------------------------------------------------------------
diff --git a/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultServiceContextTest.java b/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultServiceContextTest.java
index 9999a8e..13b2eb6 100644
--- a/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultServiceContextTest.java
+++ b/code/core/src/test/java/org/apache/tamaya/core/internal/DefaultServiceContextTest.java
@@ -75,15 +75,13 @@ public class DefaultServiceContextTest {
         }
 
         {
-            Collection<MultiImplsInterface> services = context.getServices(MultiImplsInterface.class);
+            List<MultiImplsInterface> services = context.getServices(MultiImplsInterface.class);
             Assert.assertNotNull(services);
             Assert.assertEquals(3, services.size());
 
-            for (MultiImplsInterface service : services) {
-                Assert.assertTrue(service instanceof MultiImpl1 ||
-                                          service instanceof MultiImpl2 ||
-                                          service instanceof MultiImpl3);
-            }
+            Assert.assertTrue(services.get(0) instanceof MultiImpl2);
+            Assert.assertTrue(services.get(1) instanceof MultiImpl1);
+            Assert.assertTrue(services.get(2) instanceof MultiImpl3);
         }
     }