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 ef5be7a org.apache.juneau.http.header tests.
ef5be7a is described below
commit ef5be7a0e605e010fd7c047805a9a5b28c1d13b0
Author: JamesBognar <[email protected]>
AuthorDate: Sun Jul 19 15:22:03 2020 -0400
org.apache.juneau.http.header tests.
---
.../java/org/apache/juneau/http/MediaRanges.java | 2 +-
.../java/org/apache/juneau/http/MediaType.java | 9 ++-
.../juneau/http/header/BasicMediaTypeHeader.java | 6 +-
.../org/apache/juneau/http/MediaType_Test.java | 2 +-
...t.java => BasicMediaRangeArrayHeader_Test.java} | 45 +++++++++++++--
...er_Test.java => BasicMediaTypeHeader_Test.java} | 64 ++++++++++++++++++++--
.../header/BasicStringRangeArrayHeader_Test.java | 10 ++++
7 files changed, 118 insertions(+), 20 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaRanges.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaRanges.java
index 0094ee4..b6acb07 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaRanges.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaRanges.java
@@ -142,7 +142,7 @@ public class MediaRanges {
* @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<? extends MediaType> mediaTypes) {
- if (string.isEmpty())
+ if (string.isEmpty() || mediaTypes == null)
return -1;
int matchQuant = 0, matchIndex = -1;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaType.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaType.java
index 4b81ad8..a9be56b 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaType.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaType.java
@@ -206,11 +206,11 @@ public class MediaType implements Comparable<MediaType> {
}
/**
- * Returns <jk>true</jk> if this media type contains the <js>'*'</js>
meta character.
+ * Returns <jk>true</jk> if this media type subtype contains the
<js>'*'</js> meta character.
*
- * @return <jk>true</jk> if this media type contains the <js>'*'</js>
meta character.
+ * @return <jk>true</jk> if this media type subtype contains the
<js>'*'</js> meta character.
*/
- public final boolean isMeta() {
+ public final boolean isMetaSubtype() {
return hasSubtypeMeta;
}
@@ -257,6 +257,9 @@ public class MediaType implements Comparable<MediaType> {
*/
public final int match(MediaType o, boolean allowExtraSubTypes) {
+ if (o == null)
+ return -1;
+
// Perfect match
if (this == o || (type.equals(o.type) &&
subType.equals(o.subType)))
return 100000;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicMediaTypeHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicMediaTypeHeader.java
index 8be92ec..0ecb743 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicMediaTypeHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicMediaTypeHeader.java
@@ -185,8 +185,8 @@ public class BasicMediaTypeHeader extends BasicStringHeader
{
*
* @return <jk>true</jk> if this media type contains the <js>'*'</js>
meta character.
*/
- public final boolean isMeta() {
- return asMediaType().isMeta();
+ public final boolean isMetaSubtype() {
+ return asMediaType().isMetaSubtype();
}
/**
@@ -278,6 +278,6 @@ public class BasicMediaTypeHeader extends BasicStringHeader
{
o = "";
if (o instanceof MediaType)
return (MediaType)o;
- return MediaType.of(o.toString());
+ return new MediaType(o.toString());
}
}
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/MediaType_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/MediaType_Test.java
index 0f8c75c..c482e38 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/MediaType_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/MediaType_Test.java
@@ -37,7 +37,7 @@ public class MediaType_Test {
assertString(x2.getType()).isEmpty();
assertString(x2.getSubType()).is("*");
assertObject(x2.getSubTypes()).json().is("['*']");
- assertTrue(x2.isMeta());
+ assertTrue(x2.isMetaSubtype());
MediaType x3 = MediaType.of("text/foo+bar");
assertTrue(x3.hasSubType("bar"));
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java
similarity index 63%
copy from
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
copy to
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java
index 44b140c..637916c 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java
@@ -17,18 +17,21 @@ import static org.junit.runners.MethodSorters.*;
import java.io.*;
import java.util.function.*;
+import org.apache.juneau.collections.*;
+import org.apache.juneau.http.*;
import org.apache.juneau.http.annotation.*;
import org.apache.juneau.internal.*;
import org.apache.juneau.rest.annotation.*;
import org.apache.juneau.rest.client2.*;
import org.apache.juneau.rest.mock2.*;
-import static org.apache.juneau.http.header.BasicStringRangeArrayHeader.of;
+import static org.apache.juneau.assertions.Assertions.*;
+import static org.apache.juneau.http.header.BasicMediaRangeArrayHeader.of;
import org.junit.*;
@FixMethodOrder(NAME_ASCENDING)
-public class BasicStringRangeArrayHeader_Test {
+public class BasicMediaRangeArrayHeader_Test {
private static final String HEADER = "Foo";
@@ -59,14 +62,44 @@ public class BasicStringRangeArrayHeader_Test {
c.get().header(of(null,(Supplier<?>)null)).run().assertBody().isEmpty();
c.get().header(of(HEADER,()->null)).run().assertBody().isEmpty();
- c.get().header(new
BasicStringRangeArrayHeader(HEADER,null)).run().assertBody().isEmpty();
- c.get().header(new
BasicStringRangeArrayHeader(HEADER,((Supplier<?>)()->null))).run().assertBody().isEmpty();
+ c.get().header(new
BasicMediaRangeArrayHeader(HEADER,null)).run().assertBody().isEmpty();
+ c.get().header(new
BasicMediaRangeArrayHeader(HEADER,((Supplier<?>)()->null))).run().assertBody().isEmpty();
- c.get().header(of(HEADER,"foo")).run().assertBody().is("foo");
-
c.get().header(of(HEADER,"foo,bar")).run().assertBody().is("foo,bar");
+
c.get().header(of(HEADER,"foo/bar;x=1")).run().assertBody().is("foo/bar;x=1");
+
c.get().header(of(HEADER,MediaRanges.of("foo/bar;x=1"))).run().assertBody().is("foo/bar;x=1");
}
+ @Test
+ public void a02_match() throws Exception {
+
assertInteger(Accept.of("text/foo").match(AList.of(MediaType.of("text/foo")))).is(0);
+
assertInteger(Accept.of("text/foo").match(AList.of(MediaType.of("text/bar")))).is(-1);
+ assertInteger(new
Accept((String)null).match(AList.of(MediaType.of("text/bar")))).is(-1);
+
assertInteger(Accept.of("text/foo").match(AList.of(MediaType.of(null)))).is(-1);
+ assertInteger(Accept.of("text/foo").match(null)).is(-1);
+ }
+
+ @Test
+ public void a03_getRange() throws Exception {
+ assertString(Accept.of("text/foo").getRange(0)).is("text/foo");
+ assertString(Accept.of("text/foo").getRange(1)).isNull();
+ assertString(Accept.of("text/foo").getRange(-1)).isNull();
+ assertString(new Accept((String)null).getRange(0)).isNull();
+ }
+
+ @Test
+ public void a04_hasSubtypePart() throws Exception {
+
assertBoolean(Accept.of("text/foo").hasSubtypePart("foo")).isTrue();
+
assertBoolean(Accept.of("text/foo").hasSubtypePart("bar")).isFalse();
+
assertBoolean(Accept.of("text/foo").hasSubtypePart(null)).isFalse();
+ assertBoolean(new
Accept((String)null).hasSubtypePart("foo")).isFalse();
+ }
+
+ @Test
+ public void a05_getRanges() throws Exception {
+
assertObject(Accept.of("text/foo,text/bar").getRanges()).json().is("['text/foo','text/bar']");
+ assertObject(new
Accept((String)null).getRanges()).json().is("[]");
+ }
//------------------------------------------------------------------------------------------------------------------
// Helper methods.
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java
similarity index 57%
copy from
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
copy to
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java
index 44b140c..20117cc 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java
@@ -17,18 +17,20 @@ import static org.junit.runners.MethodSorters.*;
import java.io.*;
import java.util.function.*;
+import org.apache.juneau.http.*;
import org.apache.juneau.http.annotation.*;
import org.apache.juneau.internal.*;
import org.apache.juneau.rest.annotation.*;
import org.apache.juneau.rest.client2.*;
import org.apache.juneau.rest.mock2.*;
-import static org.apache.juneau.http.header.BasicStringRangeArrayHeader.of;
+import static org.apache.juneau.assertions.Assertions.*;
+import static org.apache.juneau.http.header.BasicMediaTypeHeader.of;
import org.junit.*;
@FixMethodOrder(NAME_ASCENDING)
-public class BasicStringRangeArrayHeader_Test {
+public class BasicMediaTypeHeader_Test {
private static final String HEADER = "Foo";
@@ -59,14 +61,64 @@ public class BasicStringRangeArrayHeader_Test {
c.get().header(of(null,(Supplier<?>)null)).run().assertBody().isEmpty();
c.get().header(of(HEADER,()->null)).run().assertBody().isEmpty();
- c.get().header(new
BasicStringRangeArrayHeader(HEADER,null)).run().assertBody().isEmpty();
- c.get().header(new
BasicStringRangeArrayHeader(HEADER,((Supplier<?>)()->null))).run().assertBody().isEmpty();
+ c.get().header(new
BasicMediaTypeHeader(HEADER,null)).run().assertBody().isEmpty();
+ c.get().header(new
BasicMediaTypeHeader(HEADER,((Supplier<?>)()->null))).run().assertBody().isEmpty();
- c.get().header(of(HEADER,"foo")).run().assertBody().is("foo");
-
c.get().header(of(HEADER,"foo,bar")).run().assertBody().is("foo,bar");
+
c.get().header(of(HEADER,"foo/bar;x=1")).run().assertBody().is("foo/bar;x=1");
+ }
+
+ @Test
+ public void a02_getType() throws Exception {
+ assertString(ContentType.of("text/foo").getType()).is("text");
+ assertString(new ContentType((String)null).getType()).isEmpty();
+ }
+
+ @Test
+ public void a03_getSubType() throws Exception {
+ assertString(ContentType.of("text/foo").getSubType()).is("foo");
+ assertString(new
ContentType((String)null).getSubType()).is("*");
+ }
+
+ @Test
+ public void a04_hasSubType() throws Exception {
+
assertBoolean(ContentType.of("text/foo+bar").hasSubType("bar")).isTrue();
+
assertBoolean(ContentType.of("text/foo+bar").hasSubType("baz")).isFalse();
+
assertBoolean(ContentType.of("text/foo+bar").hasSubType(null)).isFalse();
+ assertBoolean(new
ContentType((String)null).hasSubType("bar")).isFalse();
+ }
+
+ @Test
+ public void a05_getSubTypes() throws Exception {
+
assertObject(ContentType.of("text/foo+bar").getSubTypes()).json().is("['foo','bar']");
+ assertObject(new
ContentType((String)null).getSubTypes()).json().is("['*']");
+ }
+
+ @Test
+ public void a06_isMeta() throws Exception {
+
assertBoolean(ContentType.of("text/foo+bar").isMetaSubtype()).isFalse();
+
assertBoolean(ContentType.of("text/*").isMetaSubtype()).isTrue();
+ assertBoolean(new
ContentType((String)null).isMetaSubtype()).isTrue();
+ }
+ @Test
+ public void a07_match() throws Exception {
+
assertInteger(ContentType.of("text/foo").match(MediaType.of("text/foo"),true)).is(100000);
+ assertInteger(new
ContentType((String)null).match(MediaType.of("text/foo"),true)).is(0);
}
+ @Test
+ public void a08_getParameters() throws Exception {
+
assertObject(ContentType.of("text/foo;x=1;y=2").getParameters()).json().is("['x=1','y=2']");
+ assertObject(new
ContentType((String)null).getParameters()).json().is("[]");
+ }
+
+ @Test
+ public void a09_getParameter() throws Exception {
+
assertString(ContentType.of("text/foo;x=1;y=2").getParameter("x")).is("1");
+
assertString(ContentType.of("text/foo;x=1;y=2").getParameter("z")).isNull();
+
assertString(ContentType.of("text/foo;x=1;y=2").getParameter(null)).isNull();
+ assertObject(new
ContentType((String)null).getParameter("x")).isNull();
+ }
//------------------------------------------------------------------------------------------------------------------
// Helper methods.
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
index 44b140c..61a75d9 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
@@ -23,6 +23,7 @@ import org.apache.juneau.rest.annotation.*;
import org.apache.juneau.rest.client2.*;
import org.apache.juneau.rest.mock2.*;
+import static org.apache.juneau.assertions.Assertions.*;
import static org.apache.juneau.http.header.BasicStringRangeArrayHeader.of;
import org.junit.*;
@@ -67,6 +68,15 @@ public class BasicStringRangeArrayHeader_Test {
}
+ @Test
+ public void a02_getRange() throws Exception {
+ assertString(of(HEADER,"foo,bar").getRange(0)).is("foo");
+ }
+
+ @Test
+ public void a03_getRanges() throws Exception {
+
assertObject(of(HEADER,"foo,bar").getRanges()).json().is("['foo','bar']");
+ }
//------------------------------------------------------------------------------------------------------------------
// Helper methods.