You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2018/12/05 08:47:15 UTC

[aries-jax-rs-whiteboard] 01/02: [ARIES-1866] Delegate to JAX-RS ordering

This is an automated email from the ASF dual-hosted git repository.

csierra pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/aries-jax-rs-whiteboard.git

commit 03ef7192ee840b8d82c88509de888a701c8d7e94
Author: Carlos Sierra <cs...@apache.org>
AuthorDate: Wed Dec 5 09:21:03 2018 +0100

    [ARIES-1866] Delegate to JAX-RS ordering
    
    when both service.rankings are missing or equal
---
 jax-rs.itests/src/main/java/test/JaxrsTest.java    | 22 ++++++++++++++++++----
 .../internal/cxf/ComparableResourceComparator.java |  8 ++++++--
 2 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/jax-rs.itests/src/main/java/test/JaxrsTest.java b/jax-rs.itests/src/main/java/test/JaxrsTest.java
index 4625e7d..bb765b9 100644
--- a/jax-rs.itests/src/main/java/test/JaxrsTest.java
+++ b/jax-rs.itests/src/main/java/test/JaxrsTest.java
@@ -1563,7 +1563,8 @@ public class JaxrsTest extends TestHelper {
             path("a").
             path("b");
 
-        registerAddon(new TestResourceTie());
+        ServiceRegistration<?> serviceRegistration1 = registerAddon(
+            new TestResourceTie());
 
         Response response = webTarget.request().get();
 
@@ -1571,7 +1572,7 @@ public class JaxrsTest extends TestHelper {
             "This should say tie/a/b 1", "tie/a/b 1",
             response.readEntity(String.class));
 
-        ServiceRegistration<?> serviceRegistration = registerAddon(
+        ServiceRegistration<?> serviceRegistration2 = registerAddon(
             new TestResourceTie2());
 
         response = webTarget.request().get();
@@ -1580,7 +1581,7 @@ public class JaxrsTest extends TestHelper {
             "This should say tie/a/b 2", "tie/a/b 2",
             response.readEntity(String.class));
 
-        serviceRegistration.unregister();
+        serviceRegistration2.unregister();
 
         response = webTarget.request().get();
 
@@ -1588,13 +1589,26 @@ public class JaxrsTest extends TestHelper {
             "This should say tie/a/b 1", "tie/a/b 1",
             response.readEntity(String.class));
 
-        registerAddon(new TestResourceTie2(), "service.ranking", -1);
+        serviceRegistration2 = registerAddon(
+            new TestResourceTie2(), "service.ranking", -1);
 
         response = webTarget.request().get();
 
         assertEquals(
             "This should say tie/a/b 1", "tie/a/b 1",
             response.readEntity(String.class));
+
+        serviceRegistration2.unregister();
+        serviceRegistration1.unregister();
+
+        registerAddon(new TestResourceTie(), "service.ranking", 1);
+        registerAddon(new TestResourceTie2(), "service.ranking", 1);
+
+        response = webTarget.request().get();
+
+        assertEquals(
+            "This should say tie/a/b 2", "tie/a/b 2",
+            response.readEntity(String.class));
     }
 
     @Test
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/cxf/ComparableResourceComparator.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/cxf/ComparableResourceComparator.java
index db815af..be1f003 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/cxf/ComparableResourceComparator.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/cxf/ComparableResourceComparator.java
@@ -26,6 +26,7 @@ import org.apache.cxf.jaxrs.model.OperationResourceInfo;
 import org.apache.cxf.message.Message;
 
 import java.util.Comparator;
+import java.util.Objects;
 
 public class ComparableResourceComparator
     implements ResourceComparator {
@@ -78,8 +79,11 @@ public class ComparableResourceComparator
             CachingServiceReference ref1 = rp1.getImmutableServiceReference();
             CachingServiceReference ref2 = rp2.getImmutableServiceReference();
 
-            if ((ref1.getProperty("service.ranking") == null) &&
-                (ref2.getProperty("service.ranking") == null)) {
+            Object serviceRanking1 = ref1.getProperty("service.ranking");
+            Object serviceRanking2 = ref2.getProperty("service.ranking");
+
+            if ((serviceRanking1 == null && serviceRanking2 == null) ||
+                Objects.equals(serviceRanking1, serviceRanking2)) {
 
                 return 0;
             }