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 748b309 org.apache.juneau.http tests.
748b309 is described below
commit 748b309030c33324404d0d6c31ddee48be602225
Author: JamesBognar <[email protected]>
AuthorDate: Tue Jul 7 15:57:08 2020 -0400
org.apache.juneau.http tests.
---
.../main/java/org/apache/juneau/config/Config.java | 5 +-
.../apache/juneau/BeanConfigAnnotationTest.java | 12 +-
.../java/org/apache/juneau/config/ConfigTest.java | 2 +-
.../org/apache/juneau/http/BasicHeaderTest.java | 44 ------
.../org/apache/juneau/http/BasicHeader_Test.java | 173 +++++++++++++++++++++
.../apache/juneau/http/BasicNameValuePairTest.java | 43 -----
.../juneau/http/BasicNameValuePair_Test.java | 142 +++++++++++++++++
...rSupplierTest.java => HeaderSupplier_Test.java} | 15 +-
.../juneau/http/NameValuePairSupplierTest.java | 49 ------
...erTest.java => NameValuePairSupplier_Test.java} | 75 +++++----
.../src/main/java/org/apache/juneau/Context.java | 6 +-
.../src/main/java/org/apache/juneau/Session.java | 6 +-
.../main/java/org/apache/juneau/Streamable.java | 6 +-
.../src/main/java/org/apache/juneau/Writable.java | 6 +-
.../juneau/http/{header => }/BasicHeader.java | 14 +-
.../org/apache/juneau/http/BasicNameValuePair.java | 48 +++++-
.../org/apache/juneau/http/HeaderSupplier.java | 15 +-
.../apache/juneau/http/NameValuePairSupplier.java | 2 +-
.../org/apache/juneau/http/ReaderResource.java | 4 +-
.../org/apache/juneau/http/SerializedHeader.java | 2 +-
.../apache/juneau/http/SerializedHttpEntity.java | 1 -
.../juneau/http/SerializedNameValuePair.java | 22 +--
.../org/apache/juneau/http/StreamResource.java | 4 +-
.../apache/juneau/http/header/AcceptCharset.java | 1 -
.../apache/juneau/http/header/AcceptEncoding.java | 1 -
.../apache/juneau/http/header/AcceptLanguage.java | 1 -
.../juneau/http/header/BasicCsvArrayHeader.java | 1 +
.../apache/juneau/http/header/BasicDateHeader.java | 1 +
.../juneau/http/header/BasicIntegerHeader.java | 1 +
.../apache/juneau/http/header/BasicLongHeader.java | 1 +
.../juneau/http/header/BasicStringHeader.java | 1 +
.../apache/juneau/http/header/BasicUriHeader.java | 2 +
.../juneau/http/{ => header}/EntityValidator.java | 2 +-
.../http/{ => header}/HeaderEntityValidator.java | 2 +-
.../org/apache/juneau/http/header/IfMatch.java | 1 -
.../org/apache/juneau/http/header/IfNoneMatch.java | 1 -
.../org/apache/juneau/http/header/IfRange.java | 1 -
.../juneau/http/{ => header}/StringRange.java | 3 +-
.../java/org/apache/juneau/http/header/TE.java | 1 -
.../java/org/apache/juneau/svl/VarResolver.java | 2 +-
.../org/apache/juneau/utils/StringMessage.java | 3 +-
.../java/org/apache/juneau/utils/StringObject.java | 5 +-
.../java/org/apache/juneau/utils/ZipFileList.java | 5 +-
.../09.juneau-rest-client/02.RequestHeaders.html | 7 +
.../03.RequestQueryParameters.html | 2 +
.../09.juneau-rest-client/04.RequestFormData.html | 2 +
.../09.juneau-rest-client/05.RequestBody.html | 3 +
.../rest/client2/Remote_CommonInterfaces_Test.java | 4 +-
.../apache/juneau/rest/client2/Remote_Test.java | 1 -
.../client2/RestClient_Response_Headers_Test.java | 1 +
.../rest/client2/RestClient_Response_Test.java | 2 +-
.../org/apache/juneau/rest/client2/RestClient.java | 4 +-
.../apache/juneau/rest/client2/RestRequest.java | 4 +-
.../juneau/rest/client2/RestResponseHeader.java | 1 +
.../java/org/apache/juneau/rest/RestContext.java | 2 +-
55 files changed, 490 insertions(+), 275 deletions(-)
diff --git
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
index 194608e..4c08f4d 100644
---
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
+++
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
@@ -30,7 +30,6 @@ import org.apache.juneau.config.event.*;
import org.apache.juneau.config.internal.*;
import org.apache.juneau.config.store.*;
import org.apache.juneau.config.vars.*;
-import org.apache.juneau.http.*;
import org.apache.juneau.internal.*;
import org.apache.juneau.json.*;
import org.apache.juneau.parser.*;
@@ -1908,8 +1907,8 @@ public final class Config extends Context implements
ConfigEventListener, Writab
}
@Override /* Writable */
- public MediaType getContentType() {
- return MediaType.PLAIN;
+ public String getMediaType() {
+ return "text/plain";
}
diff --git
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotationTest.java
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotationTest.java
index b5ff38a..a504f53 100644
---
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotationTest.java
+++
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotationTest.java
@@ -243,14 +243,14 @@ public class BeanConfigAnnotationTest {
check("true", bc.isIgnoreUnknownNullBeanProperties());
check("", bc.getImplClasses());
check("0", bc.getInitialDepth());
- check(Locale.getDefault().toString(), bc.getLocale());
+ check(Locale.getDefault().toString(), bc.getDefaultLocale());
check("100", bc.getMaxDepth());
- check(null, bc.getMediaType());
+ check(null, bc.getDefaultMediaType());
check("java.lang,java.lang.annotation,java.lang.ref,java.lang.reflect,java.io,java.net",
bc.getNotBeanPackagesNames());
check("", bc.getSwaps());
check("PropertyNamerDefault", bc.getPropertyNamer());
check("false", bc.isSortProperties());
- check(null, bc.getTimeZone());
+ check(null, bc.getDefaultTimeZone());
check("false", bc.isUseEnumNames());
check("true", bc.isUseInterfaceProxies());
check("false", bc.isUseJavaBeanIntrospector());
@@ -295,14 +295,14 @@ public class BeanConfigAnnotationTest {
check("true", bc.isIgnoreUnknownNullBeanProperties());
check("", bc.getImplClasses());
check("0", bc.getInitialDepth());
- check(Locale.getDefault().toString(), bc.getLocale());
+ check(Locale.getDefault().toString(), bc.getDefaultLocale());
check("100", bc.getMaxDepth());
- check(null, bc.getMediaType());
+ check(null, bc.getDefaultMediaType());
check("java.lang,java.lang.annotation,java.lang.ref,java.lang.reflect,java.io,java.net",
bc.getNotBeanPackagesNames());
check("", bc.getSwaps());
check("PropertyNamerDefault", bc.getPropertyNamer());
check("false", bc.isSortProperties());
- check(null, bc.getTimeZone());
+ check(null, bc.getDefaultTimeZone());
check("false", bc.isUseEnumNames());
check("true", bc.isUseInterfaceProxies());
check("false", bc.isUseJavaBeanIntrospector());
diff --git
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/config/ConfigTest.java
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/config/ConfigTest.java
index a2e015a..96f6d4f 100644
---
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/config/ConfigTest.java
+++
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/config/ConfigTest.java
@@ -1445,7 +1445,7 @@ public class ConfigTest {
cf.writeTo(sw);
assertString(sw).replaceAll("\\r?\\n", "|").is("a = b|");
- assertEquals("text/plain", cf.getContentType().toString());
+ assertEquals("text/plain", cf.getMediaType().toString());
}
diff --git
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicHeaderTest.java
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicHeaderTest.java
deleted file mode 100644
index 78f54d3..0000000
---
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicHeaderTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-//
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file *
-// * distributed with this work for additional information regarding copyright
ownership. The ASF licenses this file *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance *
-// * with the License. You may obtain a copy of the License at
*
-// *
*
-// * http://www.apache.org/licenses/LICENSE-2.0
*
-// *
*
-// * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
-// * specific language governing permissions and limitations under the
License. *
-//
***************************************************************************************************************************
-package org.apache.juneau.http;
-
-import static org.junit.Assert.*;
-import static org.junit.runners.MethodSorters.*;
-
-import org.apache.juneau.http.header.*;
-import org.junit.*;
-
-@FixMethodOrder(NAME_ASCENDING)
-public class BasicHeaderTest {
-
- @Test
- public void a01_of_pairString() {
- BasicHeader h = BasicHeader.ofPair("Foo:bar");
- assertEquals("Foo", h.getName());
- assertEquals("bar", h.getValue());
-
- h = BasicHeader.ofPair(" Foo : bar ");
- assertEquals("Foo", h.getName());
- assertEquals("bar", h.getValue());
-
- h = BasicHeader.ofPair(" Foo : bar : baz ");
- assertEquals("Foo", h.getName());
- assertEquals("bar : baz", h.getValue());
-
- h = BasicHeader.ofPair("Foo");
- assertEquals("Foo", h.getName());
- assertEquals("", h.getValue());
-
- assertNull(BasicHeader.ofPair((String)null));
- }
-}
diff --git
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicHeader_Test.java
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicHeader_Test.java
new file mode 100644
index 0000000..92ed4a0
--- /dev/null
+++
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicHeader_Test.java
@@ -0,0 +1,173 @@
+//
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file *
+// * distributed with this work for additional information regarding copyright
ownership. The ASF licenses this file *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance *
+// * with the License. You may obtain a copy of the License at
*
+// *
*
+// * http://www.apache.org/licenses/LICENSE-2.0
*
+// *
*
+// * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
+// * specific language governing permissions and limitations under the
License. *
+//
***************************************************************************************************************************
+package org.apache.juneau.http;
+
+import static org.apache.juneau.assertions.Assertions.*;
+import static org.junit.Assert.*;
+import static org.junit.runners.MethodSorters.*;
+
+import java.util.*;
+import java.util.function.*;
+
+import org.apache.http.*;
+import org.apache.juneau.collections.*;
+import org.apache.juneau.utils.*;
+import org.junit.*;
+
+@FixMethodOrder(NAME_ASCENDING)
+public class BasicHeader_Test {
+
+ @Test
+ public void a01_ofPair() {
+ BasicHeader x = BasicHeader.ofPair("Foo:bar");
+ assertEquals("Foo", x.getName());
+ assertEquals("bar", x.getValue());
+
+ x = BasicHeader.ofPair(" Foo : bar ");
+ assertEquals("Foo", x.getName());
+ assertEquals("bar", x.getValue());
+
+ x = BasicHeader.ofPair(" Foo : bar : baz ");
+ assertEquals("Foo", x.getName());
+ assertEquals("bar : baz", x.getValue());
+
+ x = BasicHeader.ofPair("Foo");
+ assertEquals("Foo", x.getName());
+ assertEquals("", x.getValue());
+
+ assertNull(BasicHeader.ofPair((String)null));
+ }
+
+ @Test
+ public void a02_of() {
+ BasicHeader x;
+ x = header("Foo","bar");
+ assertObject(x).json().is("'Foo: bar'");
+ x = header("Foo",()->"bar");
+ assertObject(x).json().is("'Foo: bar'");
+ }
+
+ @Test
+ public void a03_cast() {
+ BasicNameValuePair x1 = pair("X1","1");
+ SerializedNameValuePairBuilder x2 =
SerializedNameValuePair.create().name("X2").value("2");
+ Header x3 = header("X3","3");
+ SerializedHeaderBuilder x4 =
SerializedHeader.create().name("X4").value("4");
+ Map.Entry<String,Object> x5 =
AMap.of("X5",(Object)"5").entrySet().iterator().next();
+ org.apache.http.message.BasicNameValuePair x6 = new
org.apache.http.message.BasicNameValuePair("X6","6");
+ NameValuePairable x7 = new NameValuePairable() {
+ @Override
+ public NameValuePair asNameValuePair() {
+ return pair("X7","7");
+ }
+ };
+ Headerable x8 = new Headerable() {
+ @Override
+ public Header asHeader() {
+ return header("X8","8");
+ }
+ };
+
+
assertObject(BasicHeader.cast(x1)).isType(Header.class).json().is("'X1: 1'");
+
assertObject(BasicHeader.cast(x2)).isType(Header.class).json().is("'X2: 2'");
+
assertObject(BasicHeader.cast(x3)).isType(Header.class).json().is("'X3: 3'");
+
assertObject(BasicHeader.cast(x4)).isType(Header.class).json().is("'X4: 4'");
+
assertObject(BasicHeader.cast(x5)).isType(Header.class).json().is("'X5: 5'");
+
assertObject(BasicHeader.cast(x6)).isType(Header.class).json().is("'X6: 6'");
+
assertObject(BasicHeader.cast(x7)).isType(Header.class).json().is("'X7: 7'");
+
assertObject(BasicHeader.cast(x8)).isType(Header.class).json().is("'X8: 8'");
+
+ assertThrown(()->BasicHeader.cast("X")).is("Object of type
java.lang.String could not be converted to a Header.");
+ assertThrown(()->BasicHeader.cast(null)).is("Object of type
null could not be converted to a Header.");
+
+ assertTrue(BasicHeader.canCast(x1));
+ assertTrue(BasicHeader.canCast(x2));
+ assertTrue(BasicHeader.canCast(x3));
+ assertTrue(BasicHeader.canCast(x4));
+ assertTrue(BasicHeader.canCast(x5));
+ assertTrue(BasicHeader.canCast(x6));
+ assertTrue(BasicHeader.canCast(x7));
+ assertTrue(BasicHeader.canCast(x8));
+
+ assertFalse(BasicHeader.canCast("X"));
+ assertFalse(BasicHeader.canCast(null));
+ }
+
+ @Test
+ public void a05_assertions() {
+ BasicHeader x = header("X1","1");
+ x.assertName().is("X1").assertValue().is("1");
+ }
+
+ @Test
+ public void a06_hashSet() {
+ Set<BasicHeader> x =
ASet.of(header("X1","1"),header("X1","1"),header("X1","2"),header("X2","1"),header("X2","2"),header("X3","3"),null);
+ assertObject(x).json().stderr().is("['X1: 1','X1: 2','X2:
1','X2: 2','X3: 3',null]");
+ assertFalse(header("X1","1").equals(null));
+ assertFalse(header("X1","1").equals(header("X1","2")));
+ assertFalse(header("X1","1").equals(header("X2","1")));
+ assertTrue(header("X1","1").equals(header("X1","1")));
+ }
+
+ @Test
+ public void a07_eqIC() {
+ BasicHeader x = header("X1","1");
+ assertTrue(x.eqIC("1"));
+ assertFalse(x.eqIC("2"));
+ assertFalse(x.eqIC(null));
+ }
+
+ @Test
+ public void a08_getElements() {
+ Mutable<Integer> m = Mutable.of(1);
+ Header h1 = header("X1","1");
+ Header h2 = header("X2",()->m);
+ Header h3 = header("X3",null);
+
+ HeaderElement[] x;
+
+ x = h1.getElements();
+ assertEquals(1, x.length);
+ assertEquals("1", x[0].getName());
+ x = h1.getElements();
+ assertEquals(1, x.length);
+ assertEquals("1", x[0].getName());
+
+ x = h2.getElements();
+ assertEquals(1, x.length);
+ assertEquals("1", x[0].getName());
+ m.set(2);
+ x = h2.getElements();
+ assertEquals(1, x.length);
+ assertEquals("2", x[0].getName());
+
+ x = h3.getElements();
+ assertEquals(0, x.length);
+ }
+
+
//------------------------------------------------------------------------------------------------------------------
+ // Utility methods
+
//------------------------------------------------------------------------------------------------------------------
+
+ private BasicHeader header(String name, Object val) {
+ return BasicHeader.of(name, val);
+ }
+
+ private BasicHeader header(String name, Supplier<?> val) {
+ return BasicHeader.of(name, val);
+ }
+
+ private BasicNameValuePair pair(String name, Object val) {
+ return BasicNameValuePair.of(name, val);
+ }
+}
diff --git
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicNameValuePairTest.java
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicNameValuePairTest.java
deleted file mode 100644
index e8d6b73..0000000
---
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicNameValuePairTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-//
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file *
-// * distributed with this work for additional information regarding copyright
ownership. The ASF licenses this file *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance *
-// * with the License. You may obtain a copy of the License at
*
-// *
*
-// * http://www.apache.org/licenses/LICENSE-2.0
*
-// *
*
-// * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
-// * specific language governing permissions and limitations under the
License. *
-//
***************************************************************************************************************************
-package org.apache.juneau.http;
-
-import static org.junit.Assert.*;
-import static org.junit.runners.MethodSorters.*;
-
-import org.junit.*;
-
-@FixMethodOrder(NAME_ASCENDING)
-public class BasicNameValuePairTest {
-
- @Test
- public void a01_of_pairString() {
- BasicNameValuePair h = BasicNameValuePair.ofPair("Foo:bar");
- assertEquals("Foo", h.getName());
- assertEquals("bar", h.getValue());
-
- h = BasicNameValuePair.ofPair(" Foo : bar ");
- assertEquals("Foo", h.getName());
- assertEquals("bar", h.getValue());
-
- h = BasicNameValuePair.ofPair(" Foo : bar : baz ");
- assertEquals("Foo", h.getName());
- assertEquals("bar : baz", h.getValue());
-
- h = BasicNameValuePair.ofPair("Foo");
- assertEquals("Foo", h.getName());
- assertEquals("", h.getValue());
-
- assertNull(BasicNameValuePair.ofPair((String)null));
- }
-}
diff --git
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicNameValuePair_Test.java
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicNameValuePair_Test.java
new file mode 100644
index 0000000..f64173a
--- /dev/null
+++
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicNameValuePair_Test.java
@@ -0,0 +1,142 @@
+//
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file *
+// * distributed with this work for additional information regarding copyright
ownership. The ASF licenses this file *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance *
+// * with the License. You may obtain a copy of the License at
*
+// *
*
+// * http://www.apache.org/licenses/LICENSE-2.0
*
+// *
*
+// * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
+// * specific language governing permissions and limitations under the
License. *
+//
***************************************************************************************************************************
+package org.apache.juneau.http;
+
+import static org.apache.juneau.assertions.Assertions.*;
+import static org.junit.Assert.*;
+import static org.junit.runners.MethodSorters.*;
+
+import java.util.*;
+import java.util.function.*;
+
+import org.apache.http.*;
+import org.apache.juneau.collections.*;
+import org.junit.*;
+
+@FixMethodOrder(NAME_ASCENDING)
+public class BasicNameValuePair_Test {
+
+ @Test
+ public void a01_ofPair() {
+ BasicNameValuePair x = BasicNameValuePair.ofPair("Foo:bar");
+ assertEquals("Foo", x.getName());
+ assertEquals("bar", x.getValue());
+
+ x = BasicNameValuePair.ofPair(" Foo : bar ");
+ assertEquals("Foo", x.getName());
+ assertEquals("bar", x.getValue());
+
+ x = BasicNameValuePair.ofPair(" Foo : bar : baz ");
+ assertEquals("Foo", x.getName());
+ assertEquals("bar : baz", x.getValue());
+
+ x = BasicNameValuePair.ofPair("Foo");
+ assertEquals("Foo", x.getName());
+ assertEquals("", x.getValue());
+
+ assertNull(BasicNameValuePair.ofPair((String)null));
+ }
+
+ @Test
+ public void a02_of() {
+ BasicNameValuePair x;
+ x = pair("Foo","bar");
+ assertObject(x).json().is("'Foo=bar'");
+ x = pair("Foo",()->"bar");
+ assertObject(x).json().is("'Foo=bar'");
+ }
+
+ @Test
+ public void a03_cast() {
+ BasicNameValuePair x1 = pair("X1","1");
+ SerializedNameValuePairBuilder x2 =
SerializedNameValuePair.create().name("X2").value("2");
+ Header x3 = header("X3","3");
+ SerializedHeaderBuilder x4 =
SerializedHeader.create().name("X4").value("4");
+ Map.Entry<String,Object> x5 =
AMap.of("X5",(Object)"5").entrySet().iterator().next();
+ org.apache.http.message.BasicNameValuePair x6 = new
org.apache.http.message.BasicNameValuePair("X6","6");
+ NameValuePairable x7 = new NameValuePairable() {
+ @Override
+ public NameValuePair asNameValuePair() {
+ return pair("X7","7");
+ }
+ };
+ Headerable x8 = new Headerable() {
+ @Override
+ public Header asHeader() {
+ return header("X8","8");
+ }
+ };
+
+
assertObject(BasicNameValuePair.cast(x1)).isType(NameValuePair.class).json().is("'X1=1'");
+
assertObject(BasicNameValuePair.cast(x2)).isType(NameValuePair.class).json().is("'X2=2'");
+
assertObject(BasicNameValuePair.cast(x3)).isType(NameValuePair.class).json().is("'X3:
3'");
+
assertObject(BasicNameValuePair.cast(x4)).isType(NameValuePair.class).json().is("'X4:
4'");
+
assertObject(BasicNameValuePair.cast(x5)).isType(NameValuePair.class).json().is("'X5=5'");
+
assertObject(BasicNameValuePair.cast(x6)).isType(NameValuePair.class).json().is("{name:'X6',value:'6'}");
+
assertObject(BasicNameValuePair.cast(x7)).isType(NameValuePair.class).json().is("'X7=7'");
+
assertObject(BasicNameValuePair.cast(x8)).isType(NameValuePair.class).json().is("'X8:
8'");
+
+ assertThrown(()->BasicNameValuePair.cast("X")).is("Object of
type java.lang.String could not be converted to a NameValuePair.");
+ assertThrown(()->BasicNameValuePair.cast(null)).is("Object of
type null could not be converted to a NameValuePair.");
+
+ assertTrue(BasicNameValuePair.canCast(x1));
+ assertTrue(BasicNameValuePair.canCast(x2));
+ assertTrue(BasicNameValuePair.canCast(x3));
+ assertTrue(BasicNameValuePair.canCast(x4));
+ assertTrue(BasicNameValuePair.canCast(x5));
+ assertTrue(BasicNameValuePair.canCast(x6));
+ assertTrue(BasicNameValuePair.canCast(x7));
+ assertTrue(BasicNameValuePair.canCast(x8));
+
+ assertFalse(BasicNameValuePair.canCast("X"));
+ assertFalse(BasicNameValuePair.canCast(null));
+ }
+
+ @Test
+ public void a04_asHeader() {
+ BasicNameValuePair x = pair("X1","1");
+ assertObject(x.asHeader()).isType(Header.class).json().is("'X1:
1'");
+ }
+
+ @Test
+ public void a05_assertions() {
+ BasicNameValuePair x = pair("X1","1");
+ x.assertName().is("X1").assertValue().is("1");
+ }
+
+ @Test
+ public void a06_hashSet() {
+ Set<BasicNameValuePair> x =
ASet.of(pair("X1","1"),pair("X1","1"),pair("X1","2"),pair("X2","1"),pair("X2","2"),pair("X3","3"),null);
+
assertObject(x).json().stderr().is("['X1=1','X1=2','X2=1','X2=2','X3=3',null]");
+ assertFalse(pair("X1","1").equals(null));
+ assertFalse(pair("X1","1").equals(pair("X1","2")));
+ assertFalse(pair("X1","1").equals(pair("X2","1")));
+ assertTrue(pair("X1","1").equals(pair("X1","1")));
+ }
+
+
//------------------------------------------------------------------------------------------------------------------
+ // Utility methods
+
//------------------------------------------------------------------------------------------------------------------
+
+ private BasicHeader header(String name, Object val) {
+ return BasicHeader.of(name, val);
+ }
+
+ private BasicNameValuePair pair(String name, Supplier<?> val) {
+ return BasicNameValuePair.of(name, val);
+ }
+
+ private BasicNameValuePair pair(String name, Object val) {
+ return BasicNameValuePair.of(name, val);
+ }
+}
diff --git
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/HeaderSupplierTest.java
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/HeaderSupplier_Test.java
similarity index 91%
copy from
juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/HeaderSupplierTest.java
copy to
juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/HeaderSupplier_Test.java
index 1bf6e58..c0c63a2 100644
---
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/HeaderSupplierTest.java
+++
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/HeaderSupplier_Test.java
@@ -17,13 +17,12 @@ import static org.junit.runners.MethodSorters.*;
import org.apache.http.*;
import org.apache.juneau.collections.*;
-import org.apache.juneau.http.header.*;
import org.apache.juneau.httppart.*;
import org.apache.juneau.oapi.*;
import org.junit.*;
@FixMethodOrder(NAME_ASCENDING)
-public class HeaderSupplierTest {
+public class HeaderSupplier_Test {
@Test
public void a01_basic() {
@@ -80,23 +79,23 @@ public class HeaderSupplierTest {
x.add("X5","bar",openApiSession(),null,false);
x.add("X6","$S{"+pname+"}",openApiSession(),null,false);
-
assertString(x.toString()).is("X1=bar&X2=y&X3=bar&X4=y&X5=bar&X6=y");
+ assertString(x.toString()).stderr().is("['X1: bar','X2: y','X3:
bar','X4: y','X5: bar','X6: y']");
System.setProperty(pname, "z");
-
assertString(x.toString()).is("X1=bar&X2=z&X3=bar&X4=z&X5=bar&X6=z");
+ assertString(x.toString()).is("['X1: bar','X2: z','X3:
bar','X4: z','X5: bar','X6: z']");
System.clearProperty(pname);
}
@Test
public void a04_toArrayMethods() {
- Header[] x = HeaderSupplier
+ HeaderSupplier x = HeaderSupplier
.create()
.add("X1","1")
- .add(HeaderSupplier.ofPairs("X2","2"))
- .toArray();
- assertObject(x).json().is("['X1: 1','X2: 2']");
+ .add(HeaderSupplier.ofPairs("X2","2"));
+ assertObject(x.toArray()).json().is("['X1: 1','X2: 2']");
+ assertObject(x.toArray(new Header[0])).json().is("['X1: 1','X2:
2']");
}
//-----------------------------------------------------------------------------------------------------------------
diff --git
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/NameValuePairSupplierTest.java
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/NameValuePairSupplierTest.java
deleted file mode 100644
index 00ce76a..0000000
---
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/NameValuePairSupplierTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-//
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file *
-// * distributed with this work for additional information regarding copyright
ownership. The ASF licenses this file *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance *
-// * with the License. You may obtain a copy of the License at
*
-// *
*
-// * http://www.apache.org/licenses/LICENSE-2.0
*
-// *
*
-// * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
-// * specific language governing permissions and limitations under the
License. *
-//
***************************************************************************************************************************
-package org.apache.juneau.http;
-
-import static org.apache.juneau.assertions.Assertions.*;
-import static org.junit.runners.MethodSorters.*;
-
-import org.apache.http.*;
-import org.junit.*;
-
-@FixMethodOrder(NAME_ASCENDING)
-public class NameValuePairSupplierTest {
-
- @Test
- public void a01_basic() {
- NameValuePairSupplier h = NameValuePairSupplier.of();
- assertObject(h.iterator()).json().is("[]");
- h.add(header("Foo","bar"));
-
assertObject(h.iterator()).json().is("[{name:'Foo',value:'bar'}]");
- h.add(header("Foo","baz"));
-
assertObject(h.iterator()).json().is("[{name:'Foo',value:'bar'},{name:'Foo',value:'baz'}]");
- h.add(NameValuePairSupplier.of());
-
assertObject(h.iterator()).json().is("[{name:'Foo',value:'bar'},{name:'Foo',value:'baz'}]");
- h.add(NameValuePairSupplier.of(header("Foo","qux")));
-
assertObject(h.iterator()).json().is("[{name:'Foo',value:'bar'},{name:'Foo',value:'baz'},{name:'Foo',value:'qux'}]");
- h.add(NameValuePairSupplier.of(header("Foo","q2x"),
header("Foo","q3x")));
-
assertObject(h.iterator()).json().is("[{name:'Foo',value:'bar'},{name:'Foo',value:'baz'},{name:'Foo',value:'qux'},{name:'Foo',value:'q2x'},{name:'Foo',value:'q3x'}]");
-
h.add(NameValuePairSupplier.of(NameValuePairSupplier.of(header("Foo","q4x"),header("Foo","q5x"))));
-
assertObject(h.iterator()).json().is("[{name:'Foo',value:'bar'},{name:'Foo',value:'baz'},{name:'Foo',value:'qux'},{name:'Foo',value:'q2x'},{name:'Foo',value:'q3x'},{name:'Foo',value:'q4x'},{name:'Foo',value:'q5x'}]");
- h.add((NameValuePair)null);
-
assertObject(h.iterator()).json().is("[{name:'Foo',value:'bar'},{name:'Foo',value:'baz'},{name:'Foo',value:'qux'},{name:'Foo',value:'q2x'},{name:'Foo',value:'q3x'},{name:'Foo',value:'q4x'},{name:'Foo',value:'q5x'}]");
- h.add((NameValuePairSupplier)null);
-
assertObject(h.iterator()).json().is("[{name:'Foo',value:'bar'},{name:'Foo',value:'baz'},{name:'Foo',value:'qux'},{name:'Foo',value:'q2x'},{name:'Foo',value:'q3x'},{name:'Foo',value:'q4x'},{name:'Foo',value:'q5x'}]");
- }
-
- private static NameValuePair header(String name, Object val) {
- return BasicNameValuePair.of(name, val);
- }
-}
diff --git
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/HeaderSupplierTest.java
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/NameValuePairSupplier_Test.java
similarity index 52%
rename from
juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/HeaderSupplierTest.java
rename to
juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/NameValuePairSupplier_Test.java
index 1bf6e58..a4b7abd 100644
---
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/HeaderSupplierTest.java
+++
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/NameValuePairSupplier_Test.java
@@ -17,70 +17,69 @@ import static org.junit.runners.MethodSorters.*;
import org.apache.http.*;
import org.apache.juneau.collections.*;
-import org.apache.juneau.http.header.*;
import org.apache.juneau.httppart.*;
import org.apache.juneau.oapi.*;
import org.junit.*;
@FixMethodOrder(NAME_ASCENDING)
-public class HeaderSupplierTest {
+public class NameValuePairSupplier_Test {
@Test
public void a01_basic() {
- HeaderSupplier x = HeaderSupplier.of();
+ NameValuePairSupplier x = NameValuePairSupplier.of();
assertObject(x.iterator()).json().is("[]");
- x.add(header("Foo","bar"));
- assertObject(x.iterator()).json().is("['Foo: bar']");
- x.add(header("Foo","baz"));
- assertObject(x.iterator()).json().is("['Foo: bar','Foo: baz']");
- x.add(HeaderSupplier.of());
- assertObject(x.iterator()).json().is("['Foo: bar','Foo: baz']");
- x.add(HeaderSupplier.of(header("Foo","qux")));
- assertObject(x.iterator()).json().is("['Foo: bar','Foo:
baz','Foo: qux']");
- x.add(HeaderSupplier.of(header("Foo","q2x"),
header("Foo","q3x")));
- assertObject(x.iterator()).json().is("['Foo: bar','Foo:
baz','Foo: qux','Foo: q2x','Foo: q3x']");
-
x.add(HeaderSupplier.of(HeaderSupplier.of(header("Foo","q4x"),header("Foo","q5x"))));
- assertObject(x.iterator()).json().is("['Foo: bar','Foo:
baz','Foo: qux','Foo: q2x','Foo: q3x','Foo: q4x','Foo: q5x']");
+ x.add(pair("Foo","bar"));
+ assertObject(x.iterator()).json().is("['Foo=bar']");
+ x.add(pair("Foo","baz"));
+ assertObject(x.iterator()).json().is("['Foo=bar','Foo=baz']");
+ x.add(NameValuePairSupplier.of());
+ assertObject(x.iterator()).json().is("['Foo=bar','Foo=baz']");
+ x.add(NameValuePairSupplier.of(pair("Foo","qux")));
+
assertObject(x.iterator()).json().is("['Foo=bar','Foo=baz','Foo=qux']");
+ x.add(NameValuePairSupplier.of(pair("Foo","q2x"),
pair("Foo","q3x")));
+
assertObject(x.iterator()).json().is("['Foo=bar','Foo=baz','Foo=qux','Foo=q2x','Foo=q3x']");
+
x.add(NameValuePairSupplier.of(NameValuePairSupplier.of(pair("Foo","q4x"),pair("Foo","q5x"))));
+
assertObject(x.iterator()).json().is("['Foo=bar','Foo=baz','Foo=qux','Foo=q2x','Foo=q3x','Foo=q4x','Foo=q5x']");
x.add((Header)null);
- assertObject(x.iterator()).json().is("['Foo: bar','Foo:
baz','Foo: qux','Foo: q2x','Foo: q3x','Foo: q4x','Foo: q5x']");
- x.add((HeaderSupplier)null);
- assertObject(x.iterator()).json().is("['Foo: bar','Foo:
baz','Foo: qux','Foo: q2x','Foo: q3x','Foo: q4x','Foo: q5x']");
+
assertObject(x.iterator()).json().is("['Foo=bar','Foo=baz','Foo=qux','Foo=q2x','Foo=q3x','Foo=q4x','Foo=q5x']");
+ x.add((NameValuePairSupplier)null);
+
assertObject(x.iterator()).json().is("['Foo=bar','Foo=baz','Foo=qux','Foo=q2x','Foo=q3x','Foo=q4x','Foo=q5x']");
}
@Test
public void a02_creators() {
- HeaderSupplier x;
+ NameValuePairSupplier x;
- x = HeaderSupplier.of(header("Foo","bar"), header("Foo","baz"),
null);
- assertObject(x.iterator()).json().is("['Foo: bar','Foo: baz']");
+ x = NameValuePairSupplier.of(pair("Foo","bar"),
pair("Foo","baz"), null);
+ assertObject(x.iterator()).json().is("['Foo=bar','Foo=baz']");
- x = HeaderSupplier.of(AList.of(header("Foo","bar"),
header("Foo","baz"), null));
- assertObject(x.iterator()).json().is("['Foo: bar','Foo: baz']");
+ x = NameValuePairSupplier.of(AList.of(pair("Foo","bar"),
pair("Foo","baz"), null));
+ assertObject(x.iterator()).json().is("['Foo=bar','Foo=baz']");
- x = HeaderSupplier.ofPairs("Foo","bar","Foo","baz");
- assertObject(x.iterator()).json().is("['Foo: bar','Foo: baz']");
+ x = NameValuePairSupplier.ofPairs("Foo","bar","Foo","baz");
+ assertObject(x.iterator()).json().is("['Foo=bar','Foo=baz']");
- assertThrown(()->HeaderSupplier.ofPairs("Foo")).is("Odd number
of parameters passed into HeaderSupplier.ofPairs()");
+ assertThrown(()->NameValuePairSupplier.ofPairs("Foo")).is("Odd
number of parameters passed into NameValuePairSupplier.ofPairs()");
- assertThrown(()->HeaderSupplier.of("Foo")).is("Invalid type
passed to HeaderSupplier.of(): java.lang.String");
+ assertThrown(()->NameValuePairSupplier.of("Foo")).is("Invalid
type passed to NameValuePairSupplier.of(): java.lang.String");
}
@Test
public void a03_addMethods() {
- String pname = "HeaderSupplierTest.x";
+ String pname = "NameValuePairSupplierTest.x";
- HeaderSupplier x = HeaderSupplier.create().resolving();
+ NameValuePairSupplier x =
NameValuePairSupplier.create().resolving();
System.setProperty(pname, "y");
x.add("X1","bar");
x.add("X2","$S{"+pname+"}");
x.add("X3","bar");
x.add("X4",()->"$S{"+pname+"}");
- x.add("X5","bar",openApiSession(),null,false);
- x.add("X6","$S{"+pname+"}",openApiSession(),null,false);
+
x.add("X5","bar",HttpPartType.QUERY,openApiSession(),null,false);
+
x.add("X6","$S{"+pname+"}",HttpPartType.QUERY,openApiSession(),null,false);
-
assertString(x.toString()).is("X1=bar&X2=y&X3=bar&X4=y&X5=bar&X6=y");
+
assertString(x.toString()).stderr().is("X1=bar&X2=y&X3=bar&X4=y&X5=bar&X6=y");
System.setProperty(pname, "z");
@@ -91,20 +90,20 @@ public class HeaderSupplierTest {
@Test
public void a04_toArrayMethods() {
- Header[] x = HeaderSupplier
+ NameValuePairSupplier x = NameValuePairSupplier
.create()
.add("X1","1")
- .add(HeaderSupplier.ofPairs("X2","2"))
- .toArray();
- assertObject(x).json().is("['X1: 1','X2: 2']");
+ .add(NameValuePairSupplier.ofPairs("X2","2"));
+ assertObject(x.toArray()).json().is("['X1=1','X2=2']");
+ assertObject(x.toArray(new
NameValuePair[0])).json().is("['X1=1','X2=2']");
}
//-----------------------------------------------------------------------------------------------------------------
// Utility methods
//-----------------------------------------------------------------------------------------------------------------
- private static Header header(String name, Object val) {
- return BasicHeader.of(name, val);
+ private static NameValuePair pair(String name, Object val) {
+ return BasicNameValuePair.of(name, val);
}
private static HttpPartSerializerSession openApiSession() {
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
index 2996347..2fd3b90 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
@@ -842,7 +842,7 @@ public abstract class Context {
* @return
* The default locale for serializer and parser sessions.
*/
- protected final Locale getLocale() {
+ protected final Locale getDefaultLocale() {
return locale;
}
@@ -853,7 +853,7 @@ public abstract class Context {
* @return
* The default media type value for serializer and parser sessions.
*/
- protected final MediaType getMediaType() {
+ protected final MediaType getDefaultMediaType() {
return mediaType;
}
@@ -864,7 +864,7 @@ public abstract class Context {
* @return
* The default timezone for serializer and parser sessions.
*/
- protected final TimeZone getTimeZone() {
+ protected final TimeZone getDefaultTimeZone() {
return timeZone;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java
index 3b3f1a1..9f5c373 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java
@@ -56,9 +56,9 @@ public abstract class Session {
protected Session(Context ctx, SessionArgs args) {
this.properties = args.properties == null ? OMap.EMPTY_MAP :
args.properties;
debug = getProperty(CONTEXT_debug, Boolean.class,
ctx.isDebug());
- locale = getProperty(CONTEXT_locale, Locale.class,
ctx.getLocale());
- timeZone = getProperty(CONTEXT_timeZone, TimeZone.class,
ctx.getTimeZone());
- mediaType = getProperty(CONTEXT_mediaType, MediaType.class,
ctx.getMediaType());
+ locale = getProperty(CONTEXT_locale, Locale.class,
ctx.getDefaultLocale());
+ timeZone = getProperty(CONTEXT_timeZone, TimeZone.class,
ctx.getDefaultTimeZone());
+ mediaType = getProperty(CONTEXT_mediaType, MediaType.class,
ctx.getDefaultMediaType());
}
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Streamable.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Streamable.java
index 97a81d0..c6ae548 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Streamable.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Streamable.java
@@ -14,13 +14,11 @@ package org.apache.juneau;
import java.io.*;
-import org.apache.juneau.http.*;
-
/**
* Interface that identifies that an object can be serialized directly to an
output stream.
*
* <p>
- * Instances must identify the media type of the content by implementing the
{@link #getContentType()} method.
+ * Instances must identify the media type of the content by implementing the
{@link #getMediaType()} method.
*/
public interface Streamable {
@@ -37,5 +35,5 @@ public interface Streamable {
*
* @return The media type, or <jk>null</jk> if the media type is not
known.
*/
- MediaType getContentType();
+ String getMediaType();
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Writable.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Writable.java
index 0a8744f..3ef14a0 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Writable.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Writable.java
@@ -14,13 +14,11 @@ package org.apache.juneau;
import java.io.*;
-import org.apache.juneau.http.*;
-
/**
* Interface that identifies that an object can be serialized directly to a
writer.
*
* <p>
- * Instances must identify the media type of the content by implementing the
{@link #getContentType()} method.
+ * Instances must identify the media type of the content by implementing the
{@link #getMediaType()} method.
*/
public interface Writable {
@@ -38,5 +36,5 @@ public interface Writable {
*
* @return The media type, or <jk>null</jk> if the media type is not
known.
*/
- MediaType getContentType();
+ String getMediaType();
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
similarity index 95%
rename from
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicHeader.java
rename to
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
index 33fed34..30b9985 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
@@ -10,7 +10,7 @@
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
// * specific language governing permissions and limitations under the
License. *
//
***************************************************************************************************************************
-package org.apache.juneau.http.header;
+package org.apache.juneau.http;
import static org.apache.juneau.internal.StringUtils.*;
import java.io.*;
@@ -22,10 +22,9 @@ import org.apache.http.message.*;
import org.apache.juneau.*;
import org.apache.juneau.annotation.*;
import org.apache.juneau.assertions.*;
-import org.apache.juneau.http.*;
-import org.apache.juneau.http.header.BasicHeader;
import org.apache.juneau.internal.*;
import org.apache.juneau.reflect.*;
+import org.apache.juneau.svl.*;
/**
* Superclass of all headers defined in this package.
@@ -86,6 +85,9 @@ public class BasicHeader implements Header, Cloneable,
Serializable {
* <p>
* Header value is re-evaluated on each call to {@link #getValue()}.
*
+ * <p>
+ * Note that you can use {@link VarResolver#supplier(String)} to create
headers with auto-resolving embedded SVL variables.
+ *
* @param name The parameter name.
* @param value
* The parameter value supplier.
@@ -183,7 +185,7 @@ public class BasicHeader implements Header, Cloneable,
Serializable {
* @return <jk>true</jk> if the specified value is the same.
*/
protected boolean eqIC(String compare) {
- return getValue().equalsIgnoreCase(compare);
+ return isEqualsIc(getValue(), compare);
}
/**
@@ -228,7 +230,9 @@ public class BasicHeader implements Header, Cloneable,
Serializable {
@Override /* Object */
public boolean equals(Object o) {
- return (o instanceof Header) && ObjectUtils.eq(this, (Header)o,
(x,y)->isEquals(x.name, y.getName()) && isEquals(x.getValue(), y.getValue()));
+ if (! (o instanceof Header))
+ return false;
+ return ObjectUtils.eq(this, (Header)o, (x,y)->isEquals(x.name,
y.getName()) && isEquals(x.getValue(), y.getValue()));
}
@Override /* Object */
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicNameValuePair.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicNameValuePair.java
index 5ebdf31..b47d3b0 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicNameValuePair.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicNameValuePair.java
@@ -19,8 +19,11 @@ import java.util.function.*;
import org.apache.http.*;
import org.apache.juneau.*;
-import org.apache.juneau.http.header.*;
+import org.apache.juneau.annotation.*;
+import org.apache.juneau.assertions.*;
+import org.apache.juneau.internal.*;
import org.apache.juneau.reflect.*;
+import org.apache.juneau.svl.*;
/**
* Subclass of {@link NameValuePair} for serializing POJOs as URL-encoded form
post entries.
@@ -29,6 +32,7 @@ import org.apache.juneau.reflect.*;
* The value is serialized using {@link Object#toString()} at the point of
reading. This allows the value to be modified
* periodically by overriding the method to return different values.
*/
+@BeanIgnore
public class BasicNameValuePair implements NameValuePair, Headerable {
private String name;
private Object value;
@@ -65,6 +69,9 @@ public class BasicNameValuePair implements NameValuePair,
Headerable {
* <p>
* Value is re-evaluated on each call to {@link #getValue()}.
*
+ * <p>
+ * Note that you can use {@link VarResolver#supplier(String)} to create
pair values with auto-resolving embedded SVL variables.
+ *
* @param name The parameter name.
* @param value The parameter value supplier.
* @return A new {@link BasicNameValuePair} object.
@@ -117,6 +124,24 @@ public class BasicNameValuePair implements NameValuePair,
Headerable {
this.value = value;
}
+ /**
+ * Provides an object for performing assertions against the name of
this pair.
+ *
+ * @return An object for performing assertions against the name of this
pair.
+ */
+ public FluentStringAssertion<BasicNameValuePair> assertName() {
+ return new FluentStringAssertion<>(getName(), this);
+ }
+
+ /**
+ * Provides an object for performing assertions against the value of
this pair.
+ *
+ * @return An object for performing assertions against the value of
this pair.
+ */
+ public FluentStringAssertion<BasicNameValuePair> assertValue() {
+ return new FluentStringAssertion<>(getValue(), this);
+ }
+
@Override /* Headerable */
public BasicHeader asHeader() {
return BasicHeader.of(name, value);
@@ -132,9 +157,26 @@ public class BasicNameValuePair implements NameValuePair,
Headerable {
return stringify(unwrap(value));
}
+ @Override /* Object */
+ public boolean equals(Object o) {
+ if (! (o instanceof NameValuePair))
+ return false;
+ return ObjectUtils.eq(this, (NameValuePair)o,
(x,y)->isEquals(x.name, y.getName()) && isEquals(x.getValue(), y.getValue()));
+ }
+
+ @Override /* Object */
+ public int hashCode() {
+ return HashCode.create().add(name).add(value).get();
+ }
+
+ @Override /* Object */
+ public String toString() {
+ return urlEncode(getName()) + "=" + urlEncode(getValue());
+ }
+
private Object unwrap(Object o) {
- if (o instanceof Supplier)
- return ((Supplier<?>)o).get();
+ while (o instanceof Supplier)
+ o = ((Supplier<?>)o).get();
return o;
}
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderSupplier.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderSupplier.java
index bbc0720..bdac4c5 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderSupplier.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderSupplier.java
@@ -21,9 +21,9 @@ import java.util.stream.*;
import org.apache.http.*;
import org.apache.juneau.*;
-import org.apache.juneau.http.header.*;
import org.apache.juneau.httppart.*;
import org.apache.juneau.internal.*;
+import org.apache.juneau.marshall.*;
import org.apache.juneau.oapi.*;
import org.apache.juneau.svl.*;
@@ -243,20 +243,11 @@ public class HeaderSupplier implements Iterable<Header> {
}
/**
- * Returns this list as a URL-encoded custom query.
+ * Returns this list as a JSON list of strings.
*/
@Override /* Object */
public String toString() {
- StringBuilder sb = new StringBuilder();
- for (Header h : this) {
- String v = h.getValue();
- if (v != null) {
- if (sb.length() > 0)
- sb.append("&");
-
sb.append(urlEncode(h.getName())).append('=').append(urlEncode(h.getValue()));
- }
- }
- return sb.toString();
+ return SimpleJson.DEFAULT.toString(toArray());
}
@Override
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NameValuePairSupplier.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NameValuePairSupplier.java
index 2367edd..eaed3d9 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NameValuePairSupplier.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NameValuePairSupplier.java
@@ -184,7 +184,7 @@ public class NameValuePairSupplier implements
Iterable<NameValuePair> {
* @return This object(for method chaining).
*/
private NameValuePairSupplier addAll(Collection<NameValuePair> pairs) {
-
this.pairs.addAll(pairs.stream().map(x->Collections.singleton(x)).collect(Collectors.toList()));
+ this.pairs.addAll(pairs.stream().filter(x->x !=
null).map(x->Collections.singleton(x)).collect(Collectors.toList()));
return this;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ReaderResource.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ReaderResource.java
index f2457b6..9b16e31 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ReaderResource.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ReaderResource.java
@@ -124,8 +124,8 @@ public class ReaderResource implements Writable {
@ResponseHeader("Content-Type")
@Override /* Writeable */
- public MediaType getContentType() {
- return mediaType;
+ public String getMediaType() {
+ return mediaType == null ? null : mediaType.toString();
}
@Override /* Object */
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedHeader.java
index ac68273..bd4ee05 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedHeader.java
@@ -95,7 +95,7 @@ public class SerializedHeader extends BasicStringHeader
implements NameValuePair
}
if (isEmpty(v) && skipIfEmpty && schema.getDefault() ==
null)
return null;
- return serializer.serialize(HttpPartType.HEADER,
schema, v);
+ return serializer == null ? stringify(v) :
serializer.serialize(HttpPartType.HEADER, schema, v);
} catch (SchemaValidationException e) {
throw new BasicRuntimeException(e, "Validation error on
request {0} parameter ''{1}''=''{2}''", HttpPartType.HEADER, getName(), value);
} catch (SerializeException e) {
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedHttpEntity.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedHttpEntity.java
index b7d8fa9..b0bdefb 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedHttpEntity.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedHttpEntity.java
@@ -18,7 +18,6 @@ import java.io.*;
import org.apache.http.entity.*;
import org.apache.juneau.*;
-import org.apache.juneau.http.header.*;
import org.apache.juneau.httppart.*;
import org.apache.juneau.internal.*;
import org.apache.juneau.serializer.*;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedNameValuePair.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedNameValuePair.java
index 71da93f..caa4b3a 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedNameValuePair.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedNameValuePair.java
@@ -35,8 +35,7 @@ import org.apache.juneau.urlencoding.*;
* request.setEntity(<jk>new</jk> UrlEncodedFormEntity(params));
* </p>
*/
-public class SerializedNameValuePair implements NameValuePair, Headerable {
- private String name;
+public class SerializedNameValuePair extends BasicNameValuePair implements
Headerable {
private Object value;
private HttpPartType type;
private HttpPartSerializerSession serializer;
@@ -68,7 +67,7 @@ public class SerializedNameValuePair implements
NameValuePair, Headerable {
* @param skipIfEmpty If value is a blank string, the value should
return as <jk>null</jk>.
*/
public SerializedNameValuePair(String name, Object value, HttpPartType
type, HttpPartSerializerSession serializer, HttpPartSchema schema, boolean
skipIfEmpty) {
- this.name = name;
+ super(name, null);
this.value = value;
this.type = type;
this.serializer = serializer;
@@ -78,11 +77,11 @@ public class SerializedNameValuePair implements
NameValuePair, Headerable {
@Override /* Headerable */
public SerializedHeader asHeader() {
- return new SerializedHeader(name, value, serializer, schema,
skipIfEmpty);
+ return new SerializedHeader(getName(), value, serializer,
schema, skipIfEmpty);
}
SerializedNameValuePair(SerializedNameValuePairBuilder b) {
- this.name = b.name;
+ super(b.name, null);
this.value = b.value;
this.type = b.type;
this.serializer = b.serializer;
@@ -90,11 +89,6 @@ public class SerializedNameValuePair implements
NameValuePair, Headerable {
}
@Override /* NameValuePair */
- public String getName() {
- return name;
- }
-
- @Override /* NameValuePair */
public String getValue() {
try {
Object v = unwrap(value);
@@ -108,17 +102,17 @@ public class SerializedNameValuePair implements
NameValuePair, Headerable {
}
if (isEmpty(v) && skipIfEmpty && schema.getDefault() ==
null)
return null;
- return serializer.serialize(type, schema, v);
+ return serializer == null ? stringify(v) :
serializer.serialize(type, schema, v);
} catch (SchemaValidationException e) {
- throw new BasicRuntimeException(e, "Validation error on
request {0} parameter ''{1}''=''{2}''", type, name, value);
+ throw new BasicRuntimeException(e, "Validation error on
request {0} parameter ''{1}''=''{2}''", type, getName(), value);
} catch (SerializeException e) {
- throw new BasicRuntimeException(e, "Serialization error
on request {0} parameter ''{1}''", type, name);
+ throw new BasicRuntimeException(e, "Serialization error
on request {0} parameter ''{1}''", type, getName());
}
}
@Override /* Object */
public String toString() {
- return name + "=" + getValue();
+ return getName() + "=" + getValue();
}
private Object unwrap(Object o) {
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StreamResource.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StreamResource.java
index 2f61327..449c9d3 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StreamResource.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StreamResource.java
@@ -113,8 +113,8 @@ public class StreamResource implements Streamable {
@ResponseHeader("Content-Type")
@Override /* Streamable */
- public MediaType getContentType() {
- return mediaType;
+ public String getMediaType() {
+ return mediaType == null ? null : mediaType.toString();
}
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/AcceptCharset.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/AcceptCharset.java
index 983e49f..9793c65 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/AcceptCharset.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/AcceptCharset.java
@@ -16,7 +16,6 @@ import static org.apache.juneau.http.header.Constants.*;
import java.util.function.*;
-import org.apache.juneau.http.*;
import org.apache.juneau.http.annotation.*;
import org.apache.juneau.internal.*;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/AcceptEncoding.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/AcceptEncoding.java
index 700fd42..3dc6bd7 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/AcceptEncoding.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/AcceptEncoding.java
@@ -16,7 +16,6 @@ import static org.apache.juneau.http.header.Constants.*;
import java.util.function.*;
-import org.apache.juneau.http.*;
import org.apache.juneau.http.annotation.*;
import org.apache.juneau.internal.*;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/AcceptLanguage.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/AcceptLanguage.java
index f5dac8a..fb4b271 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/AcceptLanguage.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/AcceptLanguage.java
@@ -16,7 +16,6 @@ import static org.apache.juneau.http.header.Constants.*;
import java.util.function.*;
-import org.apache.juneau.http.*;
import org.apache.juneau.http.annotation.*;
import org.apache.juneau.internal.*;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicCsvArrayHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicCsvArrayHeader.java
index 436a1b4..d9b2d6b 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicCsvArrayHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicCsvArrayHeader.java
@@ -19,6 +19,7 @@ import java.util.*;
import java.util.function.*;
import org.apache.juneau.collections.*;
+import org.apache.juneau.http.*;
/**
* Category of headers that consist of a comma-delimited list of string values.
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicDateHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicDateHeader.java
index c26fa90..58d7780 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicDateHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicDateHeader.java
@@ -20,6 +20,7 @@ import java.util.function.*;
import org.apache.juneau.annotation.*;
import org.apache.juneau.assertions.*;
+import org.apache.juneau.http.*;
/**
* Category of headers that consist of a single HTTP-date.
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicIntegerHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicIntegerHeader.java
index fc730aa..37eec16 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicIntegerHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicIntegerHeader.java
@@ -15,6 +15,7 @@ package org.apache.juneau.http.header;
import java.util.function.*;
import org.apache.juneau.assertions.*;
+import org.apache.juneau.http.*;
import org.apache.juneau.http.annotation.*;
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicLongHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicLongHeader.java
index 586d1b8..1cc34e7 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicLongHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicLongHeader.java
@@ -15,6 +15,7 @@ package org.apache.juneau.http.header;
import java.util.function.*;
import org.apache.juneau.assertions.*;
+import org.apache.juneau.http.*;
import org.apache.juneau.http.annotation.*;
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicStringHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicStringHeader.java
index 29f4fd6..55de7fa 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicStringHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicStringHeader.java
@@ -15,6 +15,7 @@ package org.apache.juneau.http.header;
import java.util.function.*;
import org.apache.juneau.assertions.*;
+import org.apache.juneau.http.*;
/**
* Category of headers that consist of a single string value.
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicUriHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicUriHeader.java
index 27ca78b..314e52d 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicUriHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicUriHeader.java
@@ -15,6 +15,8 @@ package org.apache.juneau.http.header;
import java.net.*;
import java.util.function.*;
+import org.apache.juneau.http.*;
+
/**
* Category of headers that consist of a single URL value.
*
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/EntityValidator.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/EntityValidator.java
similarity index 98%
rename from
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/EntityValidator.java
rename to
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/EntityValidator.java
index 474f6e2..7ba1937 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/EntityValidator.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/EntityValidator.java
@@ -10,7 +10,7 @@
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
// * specific language governing permissions and limitations under the
License. *
//
***************************************************************************************************************************
-package org.apache.juneau.http;
+package org.apache.juneau.http.header;
/**
* Represents a validator value.
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderEntityValidator.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderEntityValidator.java
similarity index 98%
rename from
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderEntityValidator.java
rename to
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderEntityValidator.java
index 318c0cc..a122b31 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderEntityValidator.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderEntityValidator.java
@@ -10,7 +10,7 @@
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
// * specific language governing permissions and limitations under the
License. *
//
***************************************************************************************************************************
-package org.apache.juneau.http;
+package org.apache.juneau.http.header;
/**
* Category of headers that consist of a single entity validator value.
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/IfMatch.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/IfMatch.java
index e54b4a7..6072a91 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/IfMatch.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/IfMatch.java
@@ -14,7 +14,6 @@ package org.apache.juneau.http.header;
import java.util.function.*;
-import org.apache.juneau.http.*;
import org.apache.juneau.http.annotation.*;
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/IfNoneMatch.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/IfNoneMatch.java
index 8fe4561..0c182b4 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/IfNoneMatch.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/IfNoneMatch.java
@@ -14,7 +14,6 @@ package org.apache.juneau.http.header;
import java.util.function.*;
-import org.apache.juneau.http.*;
import org.apache.juneau.http.annotation.*;
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/IfRange.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/IfRange.java
index ea7acc3..ebe3bdc 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/IfRange.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/IfRange.java
@@ -16,7 +16,6 @@ import static org.apache.juneau.internal.StringUtils.*;
import java.util.function.*;
-import org.apache.juneau.http.*;
import org.apache.juneau.http.annotation.*;
import org.apache.juneau.internal.*;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StringRange.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/StringRange.java
similarity index 96%
rename from
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StringRange.java
rename to
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/StringRange.java
index 24893ae..802f566 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StringRange.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/StringRange.java
@@ -10,7 +10,7 @@
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
// * specific language governing permissions and limitations under the
License. *
//
***************************************************************************************************************************
-package org.apache.juneau.http;
+package org.apache.juneau.http.header;
import static org.apache.juneau.internal.ObjectUtils.*;
@@ -19,6 +19,7 @@ import java.util.Map.*;
import org.apache.juneau.annotation.*;
import org.apache.juneau.collections.*;
+import org.apache.juneau.http.*;
import org.apache.juneau.internal.*;
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/TE.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/TE.java
index 3413ca2..3306902 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/TE.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/TE.java
@@ -16,7 +16,6 @@ import static org.apache.juneau.http.header.Constants.*;
import java.util.function.*;
-import org.apache.juneau.http.*;
import org.apache.juneau.http.annotation.*;
import org.apache.juneau.internal.*;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolver.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolver.java
index f76b743..ea03dc6 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolver.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolver.java
@@ -186,7 +186,7 @@ public class VarResolver {
* @param s The string to resolve.
* @return A supplier for the specified string.
*/
- public Supplier<String> resolver(String s) {
+ public Supplier<String> supplier(String s) {
return ()->resolve(s);
}
}
\ No newline at end of file
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringMessage.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringMessage.java
index 9c9df6a..68988ce 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringMessage.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringMessage.java
@@ -18,7 +18,6 @@ import java.io.*;
import java.text.*;
import org.apache.juneau.*;
-import org.apache.juneau.http.*;
/**
* An encapsulated MessageFormat-style string and arguments.
@@ -51,7 +50,7 @@ public class StringMessage implements CharSequence, Writable {
}
@Override /* Writable */
- public MediaType getContentType() {
+ public String getMediaType() {
return null;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringObject.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringObject.java
index 07f096e..f389978 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringObject.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringObject.java
@@ -15,7 +15,6 @@ package org.apache.juneau.utils;
import java.io.*;
import org.apache.juneau.*;
-import org.apache.juneau.http.*;
import org.apache.juneau.json.*;
import org.apache.juneau.serializer.*;
@@ -93,7 +92,7 @@ public class StringObject implements CharSequence, Writable {
}
@Override /* Writable */
- public MediaType getContentType() {
- return s.getPrimaryMediaType();
+ public String getMediaType() {
+ return s.getPrimaryMediaType().toString();
}
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ZipFileList.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ZipFileList.java
index 575eb1e..a9e4c17 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ZipFileList.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ZipFileList.java
@@ -17,7 +17,6 @@ import java.util.*;
import java.util.zip.*;
import org.apache.juneau.*;
-import org.apache.juneau.http.*;
import org.apache.juneau.http.annotation.*;
/**
@@ -40,8 +39,8 @@ public class ZipFileList extends
LinkedList<ZipFileList.ZipFileEntry> implements
@Header("Content-Type")
@Override /* Streamable */
- public MediaType getContentType() {
- return MediaType.forString("application/zip");
+ public String getMediaType() {
+ return "application/zip";
}
/**
diff --git
a/juneau-doc/docs/Topics/09.juneau-rest-client/02.RequestHeaders.html
b/juneau-doc/docs/Topics/09.juneau-rest-client/02.RequestHeaders.html
index 8090309..d2fa26a 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/02.RequestHeaders.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/02.RequestHeaders.html
@@ -120,6 +120,13 @@ Request Headers
The methods with {@link oaj.AddFlag} parameters allow you to control
whether new headers get appended, prepended, or
replace existing headers with the same name.
</p>
+
+TODO - Headers with variables.
+
+
+
+
+
<ul class='notes'>
<li>Methods that pass in POJOs convert values to strings using the part
serializers. Methods that pass in <c>Header</c> or
<c>NameValuePair</c> objects use the values returned by that
bean directly.
diff --git
a/juneau-doc/docs/Topics/09.juneau-rest-client/03.RequestQueryParameters.html
b/juneau-doc/docs/Topics/09.juneau-rest-client/03.RequestQueryParameters.html
index c72668c..b89edad 100644
---
a/juneau-doc/docs/Topics/09.juneau-rest-client/03.RequestQueryParameters.html
+++
b/juneau-doc/docs/Topics/09.juneau-rest-client/03.RequestQueryParameters.html
@@ -89,6 +89,8 @@ Request Query Parameters
replace existing query parameters with the same name.
</p>
+TODO - NameValuePairs with variables.
+
<ul class='notes'>
<li>Methods that pass in POJOs convert values to strings using the part
serializers. Methods that pass in <c>NameValuePair</c>
objects use the values returned by that bean directly.
diff --git
a/juneau-doc/docs/Topics/09.juneau-rest-client/04.RequestFormData.html
b/juneau-doc/docs/Topics/09.juneau-rest-client/04.RequestFormData.html
index 45aa0f8..8674297 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/04.RequestFormData.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/04.RequestFormData.html
@@ -89,6 +89,8 @@ Request Form Data
replace existing form-data parameters with the same name.
</p>
+TODO - NameValuePairs with variables.
+
<ul class='notes'>
<li>Like header values, dynamic values and OpenAPI schemas are
supported.
<li>Methods that pass in POJOs convert values to strings using the part
serializers. Methods that pass in <c>NameValuePair</c>
diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/05.RequestBody.html
b/juneau-doc/docs/Topics/09.juneau-rest-client/05.RequestBody.html
index 5e1602d..6a5bcdf 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/05.RequestBody.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/05.RequestBody.html
@@ -77,6 +77,9 @@ Request Body
.assertStatus().code().is(200);
</p>
+TODO - Bodies with variables.
+
+
<ul class='notes'>
<li>If the serializer on the client or request is explicitly set to
<jk>null</jk>, POJOs will be converted to strings
using the registered part serializer as content type
<js>"text/plain</js>. If the part serializer is also <jk>null</jk>,
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_CommonInterfaces_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_CommonInterfaces_Test.java
index 2d787bc..ef6fa97 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_CommonInterfaces_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_CommonInterfaces_Test.java
@@ -226,12 +226,12 @@ public class Remote_CommonInterfaces_Test {
assertEquals("foo",IOUtils.read(sr.getContents()));
assertEquals("foo",sr.getHeaders().get("Foo"));
assertEquals("bar",sr.getHeaders().get("ETag"));
- assertEquals("text/foo",sr.getContentType().toString());
+ assertEquals("text/foo",sr.getMediaType().toString());
ReaderResource rr = x.readerResource();
assertEquals("foo",IOUtils.read(rr.getContents()));
assertEquals("foo",rr.getHeaders().get("Foo"));
assertEquals("bar",rr.getHeaders().get("ETag"));
- assertEquals("text/foo",rr.getContentType().toString());
+ assertEquals("text/foo",rr.getMediaType().toString());
}
//-----------------------------------------------------------------------------------------------------------------
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_Test.java
index 13c3831..c63de55 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_Test.java
@@ -22,7 +22,6 @@ import org.apache.juneau.rest.annotation.*;
import org.apache.juneau.rest.client.remote.*;
import org.apache.juneau.rest.config.*;
import org.apache.juneau.http.*;
-import org.apache.juneau.http.header.*;
import org.apache.juneau.http.remote.*;
import org.apache.juneau.http.remote.RemoteMethod;
import org.apache.juneau.http.remote.RemoteReturn;
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Response_Headers_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Response_Headers_Test.java
index 3c6c2f6..a1e9861 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Response_Headers_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Response_Headers_Test.java
@@ -21,6 +21,7 @@ import java.util.regex.*;
import org.apache.http.*;
import org.apache.juneau.*;
+import org.apache.juneau.http.*;
import org.apache.juneau.http.header.*;
import org.apache.juneau.rest.*;
import org.apache.juneau.rest.annotation.*;
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Response_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Response_Test.java
index 53a6d8d..49cb30d 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Response_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Response_Test.java
@@ -25,9 +25,9 @@ import org.apache.http.entity.*;
import org.apache.http.message.*;
import org.apache.http.params.*;
import org.apache.juneau.*;
+import org.apache.juneau.http.BasicHeader;
import org.apache.juneau.http.annotation.*;
import org.apache.juneau.http.header.*;
-import org.apache.juneau.http.header.BasicHeader;
import org.apache.juneau.parser.*;
import org.apache.juneau.rest.*;
import org.apache.juneau.rest.annotation.*;
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
index 9332b7b..4ba6eff 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
@@ -2536,7 +2536,7 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
body = ((ReaderResourceBuilder)body).build();
if (body instanceof ReaderResource) {
ReaderResource r = (ReaderResource)body;
- if (r.getContentType() == null)
+ if (r.getMediaType() == null)
req.contentType("application/x-www-form-urlencoded");
return req.body(r);
}
@@ -2544,7 +2544,7 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
body = ((StreamResourceBuilder)body).build();
if (body instanceof StreamResource) {
StreamResource r = (StreamResource)body;
- if (r.getContentType() == null)
+ if (r.getMediaType() == null)
req.contentType("application/x-www-form-urlencoded");
return req.body(r);
}
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
index 79c840b..8efc233 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
@@ -2861,7 +2861,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
if (input2 instanceof
ReaderResourceBuilder)
input2 =
((ReaderResourceBuilder)input2).build();
ReaderResource r =
(ReaderResource)input2;
- contentType(r.getContentType());
+ contentType(r.getMediaType());
headers(r.getHeaders());
entity = new
StringEntity(IOUtils.read(r.getContents()), getRequestContentType(TEXT_PLAIN));
}
@@ -2869,7 +2869,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
if (input2 instanceof
StreamResourceBuilder)
input2 =
((StreamResourceBuilder)input2).build();
StreamResource r =
(StreamResource)input2;
- contentType(r.getContentType());
+ contentType(r.getMediaType());
headers(r.getHeaders());
entity = new
InputStreamEntity(r.getContents(),
getRequestContentType(ContentType.APPLICATION_OCTET_STREAM));
}
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseHeader.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseHeader.java
index 6384045..0fe9b09 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseHeader.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseHeader.java
@@ -20,6 +20,7 @@ import java.util.regex.*;
import org.apache.http.*;
import org.apache.juneau.*;
import org.apache.juneau.assertions.*;
+import org.apache.juneau.http.*;
import org.apache.juneau.http.header.*;
import org.apache.juneau.httppart.*;
import org.apache.juneau.oapi.*;
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 0efe8ae..75c352f 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -3893,7 +3893,7 @@ public final class RestContext extends BeanContext {
for (MethodInfo mi : rci.getPublicMethods()) {
RestMethod a =
mi.getLastAnnotation(RestMethod.class);
-
+
// Also include methods on @Rest-annotated
interfaces.
if (a == null) {
for (Method mi2 : mi.getMatching()) {