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]);

Reply via email to