You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by jo...@apache.org on 2017/12/19 04:27:40 UTC
[cxf] 01/02: [CXF-7579] Fix sorting to take into account custom vs
user.
This is an automated email from the ASF dual-hosted git repository.
johndament pushed a commit to branch mp-client
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit f2cccb5634d0c4c7114b90b5e8de04702d7dd7dc
Author: John D. Ament <jo...@apache.org>
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
"commits@cxf.apache.org" <co...@cxf.apache.org>.