This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new 871e40a88 Break dependences from marshall to http packages.
871e40a88 is described below
commit 871e40a886bc23ef657d4505189b9575237cec94
Author: JamesBognar <[email protected]>
AuthorDate: Sun Jun 26 12:20:28 2022 -0400
Break dependences from marshall to http packages.
---
.../src/main/java/org/apache/juneau/MediaType.java | 29 ++++++++++++++++++++++
.../org/apache/juneau/encoders/EncoderSet.java | 4 +--
.../java/org/apache/juneau/parser/ParserSet.java | 4 +--
.../apache/juneau/serializer/SerializerSet.java | 4 +--
4 files changed, 32 insertions(+), 9 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MediaType.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MediaType.java
index 0e51b4846..6bbc5663d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MediaType.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MediaType.java
@@ -405,6 +405,35 @@ public class MediaType implements Comparable<MediaType> {
return null;
}
+ /**
+ * Given a list of media types, returns the best match for this
<c>Content-Type</c> header.
+ *
+ * <p>
+ * Note that fuzzy matching is allowed on the media types where the
<c>Content-Types</c> header may
+ * contain additional subtype parts.
+ * <br>For example, given a <c>Content-Type</c> value of
<js>"text/json+activity"</js>,
+ * the media type <js>"text/json"</js> will match if
<js>"text/json+activity"</js> or <js>"text/activity+json"</js>
+ * isn't found.
+ * <br>The purpose for this is to allow parsers to match when artifacts
such as <c>id</c> properties are
+ * present in the header.
+ *
+ * @param mediaTypes The media types to match against.
+ * @return The index into the array of the best match, or <c>-1</c> if
no suitable matches could be found.
+ */
+ public int match(List<MediaType> mediaTypes) {
+ int matchQuant = 0, matchIndex = -1;
+
+ for (int i = 0; i < mediaTypes.size(); i++) {
+ MediaType mt = mediaTypes.get(i);
+ int matchQuant2 = mt.match(this, true);
+ if (matchQuant2 > matchQuant) {
+ matchQuant = matchQuant2;
+ matchIndex = i;
+ }
+ }
+ return matchIndex;
+ }
+
private static HeaderElement parse(String value) {
HeaderElement[] elements =
BasicHeaderValueParser.parseElements(emptyIfNull(trim(value)), null);
return (elements.length > 0 ? elements[0] : new
BasicHeaderElement("", ""));
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/encoders/EncoderSet.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/encoders/EncoderSet.java
index 8d0e2b881..94d4f8f7a 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/encoders/EncoderSet.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/encoders/EncoderSet.java
@@ -12,7 +12,6 @@
//
***************************************************************************************************************************
package org.apache.juneau.encoders;
-import static org.apache.juneau.http.HttpHeaders.*;
import static org.apache.juneau.internal.CollectionUtils.*;
import static org.apache.juneau.internal.ThrowableUtils.*;
import static java.util.stream.Collectors.*;
@@ -21,7 +20,6 @@ import java.util.concurrent.*;
import org.apache.juneau.*;
import org.apache.juneau.cp.*;
-import org.apache.juneau.http.header.*;
import org.apache.juneau.internal.*;
/**
@@ -358,7 +356,7 @@ public final class EncoderSet {
if (em != null)
return em;
- AcceptEncoding ae = acceptEncoding(acceptEncoding);
+ StringRanges ae = StringRanges.of(acceptEncoding);
int match = ae.match(encodings);
if (match >= 0) {
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSet.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSet.java
index 8f5399abb..b2aa1b54d 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSet.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSet.java
@@ -12,7 +12,6 @@
//
***************************************************************************************************************************
package org.apache.juneau.parser;
-import static org.apache.juneau.http.HttpHeaders.*;
import static org.apache.juneau.internal.CollectionUtils.*;
import static org.apache.juneau.internal.ObjectUtils.*;
import static org.apache.juneau.internal.ThrowableUtils.*;
@@ -25,7 +24,6 @@ import java.util.stream.*;
import org.apache.juneau.*;
import org.apache.juneau.cp.*;
-import org.apache.juneau.http.header.*;
import org.apache.juneau.internal.*;
import org.apache.juneau.reflect.*;
@@ -540,7 +538,7 @@ public final class ParserSet {
if (pm != null)
return pm;
- ContentType ct = contentType(contentTypeHeader);
+ MediaType ct = MediaType.of(contentTypeHeader);
int match = ct.match(ulist(mediaTypes));
if (match >= 0) {
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
index 61b9ab7e6..5672aef03 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
@@ -12,7 +12,6 @@
//
***************************************************************************************************************************
package org.apache.juneau.serializer;
-import static org.apache.juneau.http.HttpHeaders.*;
import static org.apache.juneau.internal.ThrowableUtils.*;
import static java.util.stream.Collectors.*;
import static org.apache.juneau.internal.CollectionUtils.*;
@@ -25,7 +24,6 @@ import java.util.stream.*;
import org.apache.juneau.*;
import org.apache.juneau.cp.*;
-import org.apache.juneau.http.header.*;
import org.apache.juneau.internal.*;
import org.apache.juneau.reflect.*;
@@ -566,7 +564,7 @@ public final class SerializerSet {
if (sm != null)
return sm;
- Accept a = accept(acceptHeader);
+ MediaRanges a = MediaRanges.of(acceptHeader);
int match = a.match(mediaRangesList);
if (match >= 0) {
sm = new SerializerMatch(mediaRanges[match],
mediaTypeRangeSerializers[match]);