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

johndament pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit afed71ec5f771f4c484f0b443009588a9fc4d6a3
Author: John D. Ament <[email protected]>
AuthorDate: Mon Dec 18 23:26:18 2017 -0500

    [CXF-7579] Fix sorting to take into account custom vs user.
    
    Remove verbose output from TCK
---
 .../apache/cxf/jaxrs/provider/ProviderFactory.java  |  2 +-
 .../cxf/microprofile/client/ContractComparator.java | 21 +++++++++++++++------
 .../client/MicroProfileClientFactoryBean.java       |  6 ++++--
 .../client/MicroProfileClientProviderFactory.java   | 12 +++++++++---
 systests/microprofile/client/weld/pom.xml           |  3 ++-
 5 files changed, 31 insertions(+), 13 deletions(-)

diff --git 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
index 4fd6657..ed4ce0a 100644
--- 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
+++ 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
@@ -846,7 +846,7 @@ public abstract class ProviderFactory {
         }
     }
 
-    private static int compareCustomStatus(ProviderInfo<?> p1, ProviderInfo<?> 
p2) {
+    protected static int compareCustomStatus(ProviderInfo<?> p1, 
ProviderInfo<?> p2) {
         Boolean custom1 = p1.isCustom();
         Boolean custom2 = p2.isCustom();
         int result = custom1.compareTo(custom2) * -1;
diff --git 
a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/ContractComparator.java
 
b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/ContractComparator.java
index 5ef4fb5..02bab65 100644
--- 
a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/ContractComparator.java
+++ 
b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/ContractComparator.java
@@ -20,20 +20,29 @@ package org.apache.cxf.microprofile.client;
 
 import java.util.Comparator;
 import java.util.Map;
+
+import org.apache.cxf.jaxrs.model.ProviderInfo;
 import org.apache.cxf.jaxrs.utils.AnnotationUtils;
 import static 
org.apache.cxf.microprofile.client.MicroProfileClientConfigurableImpl.CONTRACTS;
 
-class ContractComparator implements Comparator<Object> {
-    private MicroProfileClientFactoryBean microProfileClientFactoryBean;
+class ContractComparator implements Comparator<ProviderInfo<?>> {
+    private final MicroProfileClientFactoryBean microProfileClientFactoryBean;
+    private final Comparator<ProviderInfo<?>> parent;
 
-    ContractComparator(MicroProfileClientFactoryBean 
microProfileClientFactoryBean) {
+    ContractComparator(MicroProfileClientFactoryBean 
microProfileClientFactoryBean,
+                       Comparator<ProviderInfo<?>> parent) {
         this.microProfileClientFactoryBean = microProfileClientFactoryBean;
+        this.parent = parent;
     }
 
     @Override
-    public int compare(Object oLeft, Object oRight) {
-        int left = getPriority(oLeft.getClass());
-        int right = getPriority(oRight.getClass());
+    public int compare(ProviderInfo<?> oLeft, ProviderInfo<?> oRight) {
+        int parentResult = parent.compare(oLeft, oRight);
+        if (parentResult != 0) {
+            return parentResult;
+        }
+        int left = getPriority(oLeft.getResourceClass());
+        int right = getPriority(oRight.getResourceClass());
         return left - right;
     }
 
diff --git 
a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientFactoryBean.java
 
b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientFactoryBean.java
index 6855740..e9a1767 100644
--- 
a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientFactoryBean.java
+++ 
b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientFactoryBean.java
@@ -20,6 +20,7 @@ package org.apache.cxf.microprofile.client;
 
 import java.net.URI;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
@@ -35,11 +36,12 @@ import org.apache.cxf.jaxrs.client.ClientState;
 import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean;
 import org.apache.cxf.jaxrs.model.ClassResourceInfo;
 import org.apache.cxf.jaxrs.model.FilterProviderInfo;
+import org.apache.cxf.jaxrs.model.ProviderInfo;
 import org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl;
 import org.eclipse.microprofile.rest.client.RestClientBuilder;
 
 public class MicroProfileClientFactoryBean extends JAXRSClientFactoryBean {
-    private final ContractComparator comparator;
+    private final Comparator<ProviderInfo<?>> comparator;
     private final List<Object> registeredProviders;
     private Configuration configuration;
     private ClassLoader proxyLoader;
@@ -49,7 +51,7 @@ public class MicroProfileClientFactoryBean extends 
JAXRSClientFactoryBean {
                                          String baseUri, Class<?> aClass) {
         super();
         this.configuration = configuration.getConfiguration();
-        this.comparator = new ContractComparator(this);
+        this.comparator = 
MicroProfileClientProviderFactory.createComparator(this);
         super.setAddress(baseUri);
         super.setServiceClass(aClass);
         super.setProviderComparator(comparator);
diff --git 
a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientProviderFactory.java
 
b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientProviderFactory.java
index ec24efc..05a0457 100644
--- 
a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientProviderFactory.java
+++ 
b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientProviderFactory.java
@@ -37,14 +37,15 @@ public final class MicroProfileClientProviderFactory 
extends ProviderFactory {
     static final String CLIENT_FACTORY_NAME = 
MicroProfileClientProviderFactory.class.getName();
     private List<ProviderInfo<ResponseExceptionMapper<?>>> 
responseExceptionMappers =
             new ArrayList<ProviderInfo<ResponseExceptionMapper<?>>>(1);
-    private final ContractComparator comparator;
+    private final Comparator<ProviderInfo<?>> comparator;
 
-    private MicroProfileClientProviderFactory(Bus bus, ContractComparator 
comparator) {
+    private MicroProfileClientProviderFactory(Bus bus, 
Comparator<ProviderInfo<?>> comparator) {
         super(bus);
         this.comparator = comparator;
     }
 
-    public static MicroProfileClientProviderFactory createInstance(Bus bus, 
ContractComparator comparator) {
+    public static MicroProfileClientProviderFactory createInstance(Bus bus,
+                                                                   
Comparator<ProviderInfo<?>> comparator) {
         if (bus == null) {
             bus = BusFactory.getThreadDefaultBus();
         }
@@ -63,6 +64,11 @@ public final class MicroProfileClientProviderFactory extends 
ProviderFactory {
         return (MicroProfileClientProviderFactory)e.get(CLIENT_FACTORY_NAME);
     }
 
+    static Comparator<ProviderInfo<?>> 
createComparator(MicroProfileClientFactoryBean bean) {
+        Comparator<ProviderInfo<?>> parent = 
ProviderFactory::compareCustomStatus;
+        return new ContractComparator(bean, parent);
+    }
+
     @Override
     protected void setProviders(boolean custom, boolean busGlobal, Object... 
providers) {
         List<ProviderInfo<?>> theProviders =
diff --git a/systests/microprofile/client/weld/pom.xml 
b/systests/microprofile/client/weld/pom.xml
index 990d344..77628bd 100644
--- a/systests/microprofile/client/weld/pom.xml
+++ b/systests/microprofile/client/weld/pom.xml
@@ -31,6 +31,7 @@
     <properties>
         
<microprofile.rest.client.version>1.0-SNAPSHOT</microprofile.rest.client.version>
         <geronimo.config.version>1.0</geronimo.config.version>
+        <wiremock.params>--port=8765</wiremock.params>
     </properties>
     <dependencies>
         <dependency>
@@ -119,7 +120,7 @@
                         </goals>
                         <configuration>
                             <dir>target/classes</dir>
-                            <params>--port=8765 --verbose</params>
+                            <params>${wiremock.params}</params>
                         </configuration>
                     </execution>
                 </executions>

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to