You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2021/04/27 05:25:21 UTC
[tomee-jakarta] 04/04: Re-ordered CXF sorting
This is an automated email from the ASF dual-hosted git repository.
dblevins pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomee-jakarta.git
commit 02fded0029241ed4ad668fcbffa3127401298206
Author: David Blevins <da...@gmail.com>
AuthorDate: Mon Apr 26 22:24:59 2021 -0700
Re-ordered CXF sorting
---
.../apache/cxf/jaxrs/provider/ProviderFactory.java | 107 ++++++++++-----------
1 file changed, 53 insertions(+), 54 deletions(-)
diff --git a/transform/src/patch/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java b/transform/src/patch/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
index cabe51c..fcdb084 100644
--- a/transform/src/patch/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
+++ b/transform/src/patch/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
@@ -735,18 +735,17 @@ public abstract class ProviderFactory {
* x/y;q=1.0 < x/y;q=0.7.
*/
private void sortReaders() {
- if (!customComparatorAvailable(MessageBodyReader.class)) {
- messageReaders.sort(new MessageBodyReaderComparator());
- } else {
- doCustomSort(messageReaders);
- }
+ messageReaders.sort(MessageBodyReaderComparator::sortPriorityAnnotation);
+ messageReaders.sort(MessageBodyReaderComparator::sortCustomProviders);
+ messageReaders.sort(MessageBodyReaderComparator::sortMediaTypes);
+ messageReaders.sort(MessageBodyReaderComparator::sortClasses);
}
+
private <T> void sortWriters() {
- if (!customComparatorAvailable(MessageBodyWriter.class)) {
- messageWriters.sort(new MessageBodyWriterComparator());
- } else {
- doCustomSort(messageWriters);
- }
+ messageWriters.sort(MessageBodyWriterComparator::sortPriorityAnnotation);
+ messageWriters.sort(MessageBodyWriterComparator::sortCustomProviders);
+ messageWriters.sort(MessageBodyWriterComparator::sortProduceTypes);
+ messageWriters.sort(MessageBodyWriterComparator::sortClasses);
}
private boolean customComparatorAvailable(Class<?> providerClass) {
@@ -859,64 +858,64 @@ public abstract class ProviderFactory {
setProviders(true, false, userProviders.toArray());
}
- private static class MessageBodyReaderComparator
- implements Comparator<ProviderInfo<MessageBodyReader<?>>> {
+ private static class MessageBodyReaderComparator {
+
+ public static int sortPriorityAnnotation(final ProviderInfo<MessageBodyReader<?>> p1, final ProviderInfo<MessageBodyReader<?>> p2) {
+ return comparePriorityStatus(p1.getProvider().getClass(), p2.getProvider().getClass());
+ }
- public int compare(ProviderInfo<MessageBodyReader<?>> p1,
- ProviderInfo<MessageBodyReader<?>> p2) {
+ public static int sortCustomProviders(final ProviderInfo<MessageBodyReader<?>> p1, final ProviderInfo<MessageBodyReader<?>> p2) {
+ int result;
+ result = compareCustomStatus(p1, p2);
+ return result;
+ }
+
+ public static int sortClasses(final ProviderInfo<MessageBodyReader<?>> p1, final ProviderInfo<MessageBodyReader<?>> p2) {
MessageBodyReader<?> e1 = p1.getProvider();
MessageBodyReader<?> e2 = p2.getProvider();
+ int result;
+ result = compareClasses(e1, e2);
+ return result;
+ }
- List<MediaType> types1 = JAXRSUtils.getProviderConsumeTypes(e1);
+ public static int sortMediaTypes(final ProviderInfo<MessageBodyReader<?>> p1, final ProviderInfo<MessageBodyReader<?>> p2) {
+ List<MediaType> types1 = JAXRSUtils.getProviderConsumeTypes(p1.getProvider());
types1 = JAXRSUtils.sortMediaTypes(types1, null);
- List<MediaType> types2 = JAXRSUtils.getProviderConsumeTypes(e2);
+
+ List<MediaType> types2 = JAXRSUtils.getProviderConsumeTypes(p2.getProvider());
types2 = JAXRSUtils.sortMediaTypes(types2, null);
- int result = JAXRSUtils.compareSortedMediaTypes(types1, types2, null);
- if (result != 0) {
- return result;
- }
- result = compareClasses(e1, e2);
- if (result != 0) {
- return result;
- }
- result = compareCustomStatus(p1, p2);
- if (result != 0) {
- return result;
- }
- return comparePriorityStatus(p1.getProvider().getClass(), p2.getProvider().getClass());
+ return JAXRSUtils.compareSortedMediaTypes(types1, types2, null);
}
}
- private static class MessageBodyWriterComparator
- implements Comparator<ProviderInfo<MessageBodyWriter<?>>> {
-
- public int compare(ProviderInfo<MessageBodyWriter<?>> p1,
- ProviderInfo<MessageBodyWriter<?>> p2) {
- MessageBodyWriter<?> e1 = p1.getProvider();
- MessageBodyWriter<?> e2 = p2.getProvider();
+ private static class MessageBodyWriterComparator {
- List<MediaType> types1 =
- JAXRSUtils.sortMediaTypes(JAXRSUtils.getProviderProduceTypes(e1), JAXRSUtils.MEDIA_TYPE_QS_PARAM);
- List<MediaType> types2 =
- JAXRSUtils.sortMediaTypes(JAXRSUtils.getProviderProduceTypes(e2), JAXRSUtils.MEDIA_TYPE_QS_PARAM);
+ public static int sortPriorityAnnotation(final ProviderInfo<MessageBodyWriter<?>> p1, final ProviderInfo<MessageBodyWriter<?>> p2) {
+ return comparePriorityStatus(p1.getProvider().getClass(), p2.getProvider().getClass());
+ }
- int result = JAXRSUtils.compareSortedMediaTypes(types1, types2, JAXRSUtils.MEDIA_TYPE_QS_PARAM);
- if (result != 0) {
- return result;
- }
+ public static int sortCustomProviders(final ProviderInfo<MessageBodyWriter<?>> p1, final ProviderInfo<MessageBodyWriter<?>> p2) {
+ int result;
+ result = compareCustomStatus(p1, p2);
+ return result;
+ }
- result = compareClasses(e1, e2);
- if (result != 0) {
- return result;
- }
+ public static int sortClasses(final ProviderInfo<MessageBodyWriter<?>> p1, final ProviderInfo<MessageBodyWriter<?>> p2) {
+ int result;
+ result = compareClasses(p1.getProvider(), p2.getProvider());
+ return result;
+ }
- result = compareCustomStatus(p1, p2);
- if (result != 0) {
- return result;
- }
+ public static int sortProduceTypes(final ProviderInfo<MessageBodyWriter<?>> p1, final ProviderInfo<MessageBodyWriter<?>> p2) {
+ List<MediaType> types1 =
+ JAXRSUtils.sortMediaTypes(JAXRSUtils.getProviderProduceTypes(p1.getProvider()), JAXRSUtils.MEDIA_TYPE_QS_PARAM);
+ List<MediaType> types2 =
+ JAXRSUtils.sortMediaTypes(JAXRSUtils.getProviderProduceTypes(p2.getProvider()), JAXRSUtils.MEDIA_TYPE_QS_PARAM);
- return comparePriorityStatus(p1.getProvider().getClass(), p2.getProvider().getClass());
+ int result;
+ result = JAXRSUtils.compareSortedMediaTypes(types1, types2, JAXRSUtils.MEDIA_TYPE_QS_PARAM);
+ return result;
}
}
@@ -1143,7 +1142,7 @@ public abstract class ProviderFactory {
return -1;
}
- private static Type[] getGenericInterfaces(Class<?> cls, Class<?> expectedClass) {
+ public static Type[] getGenericInterfaces(Class<?> cls, Class<?> expectedClass) {
return getGenericInterfaces(cls, expectedClass, Object.class);
}
private static Type[] getGenericInterfaces(Class<?> cls, Class<?> expectedClass,