[juneau] branch master updated: RestClient tests.

2020-07-01 Thread jamesbognar
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 9bc2e93  RestClient tests.
9bc2e93 is described below

commit 9bc2e93f01fc255fc668f8932982798c0e9910d4
Author: JamesBognar 
AuthorDate: Wed Jul 1 11:24:47 2020 -0400

RestClient tests.
---
 .../org/apache/juneau/http/HeaderSupplierTest.java | 19 +--
 ...ierTest.java => NameValuePairSupplierTest.java} | 38 ++
 .../org/apache/juneau/http/HeaderSupplier.java | 26 +++
 .../apache/juneau/http/NameValuePairSupplier.java  | 26 +++
 juneau-doc/docs/ReleaseNotes/8.1.4.html|  9 +
 .../apache/juneau/rest/client2/Remote_Test.java| 35 
 6 files changed, 123 insertions(+), 30 deletions(-)

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/HeaderSupplierTest.java
index 4900fc9..639cd0b 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/HeaderSupplierTest.java
@@ -24,28 +24,27 @@ public class HeaderSupplierTest {
 
@Test
public void a01_basic() {
-   HeaderSupplier h = HeaderSupplier.create();
+   HeaderSupplier h = HeaderSupplier.of();
assertObject(h.iterator()).json().is("[]");
h.add(header("Foo","bar"));
assertObject(h.iterator()).json().is("['Foo: bar']");
h.add(header("Foo","baz"));
assertObject(h.iterator()).json().is("['Foo: bar','Foo: baz']");
-   h.add(HeaderSupplier.create());
+   h.add(HeaderSupplier.of());
assertObject(h.iterator()).json().is("['Foo: bar','Foo: baz']");
-   h.add(HeaderSupplier.create().add(header("Foo","qux")));
+   h.add(HeaderSupplier.of(header("Foo","qux")));
assertObject(h.iterator()).json().is("['Foo: bar','Foo: 
baz','Foo: qux']");
-   
h.add(HeaderSupplier.create().add(header("Foo","quux")).add(header("Foo","quuux")));
-   assertObject(h.iterator()).json().is("['Foo: bar','Foo: 
baz','Foo: qux','Foo: quux','Foo: quuux']");
-   
h.add(HeaderSupplier.create().add(HeaderSupplier.create().add(header("Foo","ruux")).add(header("Foo","ruuux";
-   assertObject(h.iterator()).json().is("['Foo: bar','Foo: 
baz','Foo: qux','Foo: quux','Foo: quuux','Foo: ruux','Foo: ruuux']");
+   h.add(HeaderSupplier.of(header("Foo","q2x"), 
header("Foo","q3x")));
+   assertObject(h.iterator()).json().is("['Foo: bar','Foo: 
baz','Foo: qux','Foo: q2x','Foo: q3x']");
+   
h.add(HeaderSupplier.of(HeaderSupplier.of(header("Foo","q4x"),header("Foo","q5x";
+   assertObject(h.iterator()).json().is("['Foo: bar','Foo: 
baz','Foo: qux','Foo: q2x','Foo: q3x','Foo: q4x','Foo: q5x']");
h.add((Header)null);
-   assertObject(h.iterator()).json().is("['Foo: bar','Foo: 
baz','Foo: qux','Foo: quux','Foo: quuux','Foo: ruux','Foo: ruuux']");
+   assertObject(h.iterator()).json().is("['Foo: bar','Foo: 
baz','Foo: qux','Foo: q2x','Foo: q3x','Foo: q4x','Foo: q5x']");
h.add((HeaderSupplier)null);
-   assertObject(h.iterator()).json().is("['Foo: bar','Foo: 
baz','Foo: qux','Foo: quux','Foo: quuux','Foo: ruux','Foo: ruuux']");
+   assertObject(h.iterator()).json().is("['Foo: bar','Foo: 
baz','Foo: qux','Foo: q2x','Foo: q3x','Foo: q4x','Foo: q5x']");
}
 
private static Header header(String name, Object val) {
return BasicHeader.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/NameValuePairSupplierTest.java
similarity index 51%
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/NameValuePairSupplierTest.java
index 4900fc9..00ce76a 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/HeaderSupplierTest.java
+++ 
b/juneau-core/juneau-core-ut

[juneau] branch master updated: RestClient tests.

2020-07-01 Thread jamesbognar
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 b0881d3  RestClient tests.
b0881d3 is described below

commit b0881d39e7758284201f2272ba2032ebd563a5df
Author: JamesBognar 
AuthorDate: Wed Jul 1 10:58:25 2020 -0400

RestClient tests.
---
 .../rest/client2/RestClient_Logging_Test.java  | 24 +-
 .../org/apache/juneau/rest/client2/RestClient.java |  8 
 .../juneau/rest/client2/RestClientBuilder.java |  5 -
 .../juneau/rest/mock2/MockRestClientBuilder.java   |  4 ++--
 4 files changed, 24 insertions(+), 17 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Logging_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Logging_Test.java
index 644f455..2bb20ef 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Logging_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Logging_Test.java
@@ -61,15 +61,15 @@ public class RestClient_Logging_Test {
MockConsole c = MockConsole.create();
MockLogger l = MockLogger.create();
 
-   
client().logRequests(DetailLevel.NONE,Level.SEVERE).logToConsole().logger(l).console(c).build().post("/bean",bean).complete();
+   
client().logRequests(DetailLevel.NONE,Level.SEVERE,null).logToConsole().logger(l).console(c).build().post("/bean",bean).complete();
c.assertContents().is("");
c.reset();
 
-   
client().logRequests(DetailLevel.SIMPLE,Level.SEVERE).logToConsole().logger(l).console(c).build().post("/bean",bean).complete();
+   
client().logRequests(DetailLevel.SIMPLE,Level.SEVERE,null).logToConsole().logger(l).console(c).build().post("/bean",bean).complete();
c.assertContents().is("HTTP POST http://localhost/bean, 
HTTP/1.1 200 \n");
c.reset();
 
-   
client().logRequests(DetailLevel.FULL,Level.SEVERE).logToConsole().logger(l).console(c).build().post("/bean",bean).complete();
+   
client().logRequests(DetailLevel.FULL,Level.SEVERE,null).logToConsole().logger(l).console(c).build().post("/bean",bean).complete();
c.assertContents().is(
"",
"=== HTTP Call (outgoing) 
==",
@@ -92,7 +92,7 @@ public class RestClient_Logging_Test {
);
c.reset();
 
-   
client().logRequests(DetailLevel.FULL,Level.SEVERE).logToConsole().logger(l).console(c).build().get("/bean").complete();
+   
client().logRequests(DetailLevel.FULL,Level.SEVERE,null).logToConsole().logger(l).console(c).build().get("/bean").complete();
c.assertContents().is(
"",
"=== HTTP Call (outgoing) 
==",
@@ -111,7 +111,7 @@ public class RestClient_Logging_Test {
);
c.reset();
 
-   
clientPlain().logRequests(DetailLevel.FULL,Level.SEVERE).logToConsole().logger(l).console(c).build().post("/stream",new
 InputStreamEntity(new ByteArrayInputStream("foo".getBytes(.complete();
+   
clientPlain().logRequests(DetailLevel.FULL,Level.SEVERE,null).logToConsole().logger(l).console(c).build().post("/stream",new
 InputStreamEntity(new ByteArrayInputStream("foo".getBytes(.complete();
c.assertContents().is(
"",
"=== HTTP Call (outgoing) 
==",
@@ -130,25 +130,29 @@ public class RestClient_Logging_Test {
);
c.reset();
 
-   
client().logRequests(DetailLevel.NONE,Level.SEVERE).logToConsole().logger(l).console(MockConsole.class).build().post("/bean",bean).complete();
+   
clientPlain().logRequests(DetailLevel.FULL,Level.SEVERE,(req,res)->false).logToConsole().logger(l).console(c).build().post("/stream",new
 InputStreamEntity(new ByteArrayInputStream("foo".getBytes(.complete();
+   c.assertContents().isEmpty();
+   c.reset();
+
+   
client().logRequests(DetailLevel.NONE,Level.SEVERE,null).logToConsole().logger(l).console(MockConsole.class).build().post("/bean",bean).complete();
}
 
@Test
public voi

[juneau] branch master updated: Add header support to @Remote annotation.

2020-07-01 Thread jamesbognar
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 1dff96f  Add header support to @Remote annotation.
1dff96f is described below

commit 1dff96f7fd454e2c77fd9278ec617779bdb13454
Author: JamesBognar 
AuthorDate: Wed Jul 1 10:41:20 2020 -0400

Add header support to @Remote annotation.
---
 .../org/apache/juneau/http/BasicHeaderTest.java}   |  89 
 .../juneau/http/BasicNameValuePairTest.java}   |  88 
 .../org/apache/juneau/http/HeaderSupplierTest.java |  51 +
 .../org/apache/juneau/http/BasicNameValuePair.java |  15 +++
 .../{remote/Remote.java => HeaderSupplier.java}| 115 +
 .../Remote.java => NameValuePairSupplier.java} | 115 +
 .../org/apache/juneau/http/header/BasicHeader.java |  15 +++
 .../java/org/apache/juneau/http/remote/Remote.java |  63 +++
 .../apache/juneau/internal/CollectionUtils.java|  36 +++
 juneau-doc/docs/ReleaseNotes/8.1.4.html|   8 +-
 .../juneau/rest/client/remote/RemoteMeta.java  |  27 -
 .../org/apache/juneau/rest/client2/RestClient.java |  84 +++
 12 files changed, 480 insertions(+), 226 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/Remote.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicHeaderTest.java
similarity index 64%
copy from 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/Remote.java
copy to 
juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicHeaderTest.java
index c2e5217..78f54d3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/Remote.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/BasicHeaderTest.java
@@ -1,45 +1,44 @@
-// 
***
-// * 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.remote;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-
-import java.lang.annotation.*;
-
-/**
- * Identifies a proxy against a REST interface.
- *
- * 
- * {@doc juneau-rest-client.RestProxies}
- * 
- */
-@Documented
-@Target({TYPE})
-@Retention(RUNTIME)
-@Inherited
-public @interface Remote {
-
-   /**
-* REST service path.
-*
-* 
-* The possible values are:
-* 
-*  An absolute URL.
-*  A relative URL interpreted as relative to the root URL 
defined on the RestClient
-*  No path interpreted as the class name (e.g. 
"http://localhost/root-url/org.foo.MyInterface;)
-* 
-*/
-   String path() default "";
-}
+// 
***
+// * 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

[juneau] branch master updated: RestClient tests.

2020-06-30 Thread jamesbognar
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 4fb6272  RestClient tests.
4fb6272 is described below

commit 4fb627253e92b21d152f7e1858ff937e313b30c1
Author: JamesBognar 
AuthorDate: Tue Jun 30 21:16:37 2020 -0400

RestClient tests.
---
 .../rest/client2/RestClient_Logging_Test.java  | 56 +-
 .../apache/juneau/rest/client2/RestRequest.java|  2 +-
 .../apache/juneau/rest/client2/RestResponse.java   | 21 +++-
 .../rest/reshandlers/InputStreamHandler.java   |  1 -
 4 files changed, 63 insertions(+), 17 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Logging_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Logging_Test.java
index 6f75d2d..644f455 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Logging_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Logging_Test.java
@@ -14,8 +14,10 @@ package org.apache.juneau.rest.client2;
 
 import static org.junit.runners.MethodSorters.*;
 
+import java.io.*;
 import java.util.logging.*;
 
+import org.apache.http.entity.*;
 import org.apache.juneau.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.rest.*;
@@ -39,10 +41,19 @@ public class RestClient_Logging_Test {
 
@Rest
public static class A extends BasicRest {
-   @RestMethod(path="/bean")
+   @RestMethod
public ABean postBean(@Body ABean b) {
return b;
}
+   @RestMethod
+   public InputStream postStream(@Body InputStream b, 
org.apache.juneau.rest.RestResponse res) {
+   res.setHeader("Content-Encoding", "identity");
+   return b;
+   }
+   @RestMethod
+   public ABean getBean() {
+   return bean;
+   }
}
 
@Test
@@ -79,6 +90,45 @@ public class RestClient_Logging_Test {
"=== END 
===",
""
);
+   c.reset();
+
+   
client().logRequests(DetailLevel.FULL,Level.SEVERE).logToConsole().logger(l).console(c).build().get("/bean").complete();
+   c.assertContents().is(
+   "",
+   "=== HTTP Call (outgoing) 
==",
+   "=== REQUEST ===",
+   "GET http://localhost/bean;,
+   "---request headers---",
+   "   Accept: application/json+simple",
+   "=== RESPONSE ===",
+   "HTTP/1.1 200 ",
+   "---response headers---",
+   "   Content-Type: application/json",
+   "---response content---",
+   "{f:1}",
+   "=== END 
===",
+   ""
+   );
+   c.reset();
+
+   
clientPlain().logRequests(DetailLevel.FULL,Level.SEVERE).logToConsole().logger(l).console(c).build().post("/stream",new
 InputStreamEntity(new ByteArrayInputStream("foo".getBytes(.complete();
+   c.assertContents().is(
+   "",
+   "=== HTTP Call (outgoing) 
==",
+   "=== REQUEST ===",
+   "POST http://localhost/stream;,
+   "---request headers---",
+   "---request entity---",
+   "=== RESPONSE ===",
+   "HTTP/1.1 200 ",
+   "---response headers---",
+   "   Content-Encoding: identity",
+   "---response content---",
+   "foo",
+   "=== END 
===",
+   ""
+   );
+   c.reset();
 

client().logRequests(DetailLevel.NONE,Level.SE

[juneau] branch master updated: RestClient tests.

2020-06-30 Thread jamesbognar
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 06da0d1  RestClient tests.
06da0d1 is described below

commit 06da0d14d2b976f1e0d9d95c11c52cac06c6f0de
Author: JamesBognar 
AuthorDate: Tue Jun 30 11:19:11 2020 -0400

RestClient tests.
---
 .../apache/juneau/http/header/ContentTypeTest.java | 38 +
 .../java/org/apache/juneau/http/MediaType.java |  2 +-
 .../java/org/apache/juneau/http/header/Accept.java |  2 +-
 .../org/apache/juneau/http/header/BasicHeader.java | 12 ++-
 ...ion.java => BasicParameterizedArrayHeader.java} | 94 +++---
 ...position.java => BasicParameterizedHeader.java} | 94 +++---
 .../juneau/http/header/ContentDisposition.java |  2 +-
 .../org/apache/juneau/http/header/ContentType.java | 32 
 .../rest/client2/RestClient_Headers_Test.java  | 36 +
 .../rest/client2/RestClient_Response_Test.java |  5 --
 .../apache/juneau/rest/client2/RestResponse.java   |  5 +-
 .../java/org/apache/juneau/rest/RequestBody.java   |  9 ++-
 .../java/org/apache/juneau/rest/RestResponse.java  |  9 ++-
 13 files changed, 176 insertions(+), 164 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/header/ContentTypeTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/header/ContentTypeTest.java
new file mode 100644
index 000..0ec11b28
--- /dev/null
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/header/ContentTypeTest.java
@@ -0,0 +1,38 @@
+// 
***
+// * 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.header;
+
+import static org.junit.Assert.*;
+import static org.junit.runners.MethodSorters.*;
+
+import org.junit.*;
+
+@FixMethodOrder(NAME_ASCENDING)
+public class ContentTypeTest {
+
+   @Test
+   public void a01_basic() {
+   ContentType ct = ContentType.of("application/json");
+   assertEquals("application/json", ct.getValue());
+   }
+
+   @Test
+   public void a02_getParameter() {
+   ContentType ct = ContentType.of("application/json;charset=foo");
+   assertEquals("foo", ct.getParameter("charset"));
+   ct = ContentType.of(" application/json ; charset = foo ");
+   assertEquals("foo", ct.getParameter("charset"));
+
+   assertNull(ct.getParameter("x"));
+   }
+}
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 563d0ab..8259f6e 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
@@ -123,7 +123,7 @@ public class MediaType implements Comparable  {
 *
 * @param mt The media type string.
 */
-   protected MediaType(String mt) {
+   public MediaType(String mt) {
Builder b = new Builder(mt);
this.mediaType = b.mediaType;
this.type = b.type;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/o

[juneau] branch master updated: RestClient tests.

2020-06-29 Thread jamesbognar
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 5d439b9  RestClient tests.
5d439b9 is described below

commit 5d439b97d70382e237bd093f6606c711835da16b
Author: JamesBognar 
AuthorDate: Mon Jun 29 16:58:49 2020 -0400

RestClient tests.
---
 .../rest/client2/Remote_BodyAnnotation_Test.java   |  12 +-
 .../rest/client2/Remote_CommonInterfaces_Test.java |  24 ++--
 .../client2/Remote_FormDataAnnotation_Test.java|  68 +-
 .../rest/client2/Remote_HeaderAnnotation_Test.java |  60 -
 .../rest/client2/Remote_PathAnnotation_Test.java   |  52 
 .../rest/client2/Remote_QueryAnnotation_Test.java  |  68 +-
 .../Remote_RemoteMethodAnnotation_Test.java|  16 +--
 .../client2/Remote_RequestAnnotation_Test.java |  20 +--
 .../client2/Remote_ResponseAnnotation_Test.java|   4 +-
 .../apache/juneau/rest/client2/Remote_Test.java|  20 +--
 .../rest/client2/RestClient_BasicCalls_Test.java   |  16 ++-
 .../client2/RestClient_CallbackStrings_Test.java   |   4 +-
 .../rest/client2/RestClient_FormData_Test.java |   3 +
 .../rest/client2/RestClient_Headers_Test.java  |  34 +
 .../juneau/rest/client2/RestClient_Query_Test.java |   5 +
 .../juneau/rest/client2/RestClient_Test.java   | 145 -
 .../juneau/rest/client2/RrpcInterfaceTest.java |   4 +-
 .../org/apache/juneau/rest/client2/RestClient.java |   6 +-
 .../apache/juneau/rest/client2/RestRequest.java|  98 +++---
 19 files changed, 425 insertions(+), 234 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_BodyAnnotation_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_BodyAnnotation_Test.java
index 9ba9674..6e2a6ca 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_BodyAnnotation_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_BodyAnnotation_Test.java
@@ -55,9 +55,9 @@ public class Remote_BodyAnnotation_Test {
}
}
 
-   
//=
+   
//-
// Basic tests - JSON
-   
//=
+   
//-
 
@Rest(parsers=JsonParser.class)
public static class A {
@@ -151,9 +151,9 @@ public class Remote_BodyAnnotation_Test {
assertEquals("foo=bar",x.postX10(new 
NameValuePairs().append("foo","bar")));
}
 
-   
//=
+   
//-
// Basic tests - OpenAPI
-   
//=
+   
//-
 
@Rest
public static class B implements BasicOpenApiRest {
@@ -246,9 +246,9 @@ public class Remote_BodyAnnotation_Test {
assertEquals("foo=bar",x.postX10(new 
NameValuePairs().append("foo","bar")));
}
 
-   
//=
+   
//-
// Basic tests - OpenAPI, overridden Content-Type
-   
//=
+   
//-
 
@Rest
public static class C {
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 3d63786..d678ea4 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_CommonInterfaces_Test.java
+++ 
b/juneau-rest/juneau-re

[juneau] branch master updated: RestClient tests.

2020-06-29 Thread jamesbognar
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 000b554  RestClient tests.
000b554 is described below

commit 000b554916ee289437ab79694ecb82f8b874cd0e
Author: JamesBognar 
AuthorDate: Mon Jun 29 09:30:35 2020 -0400

RestClient tests.
---
 .../juneau/assertions/FluentStringAssertion.java   |  68 +++---
 .../client2/Remote_FormDataAnnotation_Test.java| 110 ---
 .../rest/client2/Remote_HeaderAnnotation_Test.java |  68 ++
 .../rest/client2/Remote_PathAnnotation_Test.java   |  72 ++
 .../rest/client2/Remote_QueryAnnotation_Test.java  |  80 ++-
 .../Remote_RemoteMethodAnnotation_Test.java|  22 ++-
 .../client2/Remote_RequestAnnotation_Test.java |  18 ++-
 .../client2/Remote_ResponseAnnotation_Test.java|  10 +-
 .../rest/client2/RestClient_FormData_Test.java | 149 +++--
 .../juneau/rest/client2/RestClient_Query_Test.java |  20 +--
 .../juneau/rest/client2/RestClient_Test.java   |  10 +-
 .../juneau/rest/client2/RestClientBuilder.java |   2 +-
 12 files changed, 382 insertions(+), 247 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
index 442c431..07eb161 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
@@ -17,6 +17,7 @@ import static org.apache.juneau.internal.StringUtils.*;
 import java.util.*;
 import java.util.function.*;
 import java.util.regex.*;
+import java.util.stream.*;
 
 import org.apache.juneau.internal.*;
 
@@ -75,9 +76,7 @@ public class FluentStringAssertion extends 
FluentAssertion {
 */
@FluentSetter
public FluentStringAssertion replaceAll(String regex, String 
replacement) {
-   if (text != null)
-   text = text.replaceAll(regex, replacement);
-   return this;
+   return apply(x -> x == null ? null : text.replaceAll(regex, 
replacement));
}
 
/**
@@ -89,8 +88,53 @@ public class FluentStringAssertion extends 
FluentAssertion {
 */
@FluentSetter
public FluentStringAssertion replace(String target, String 
replacement) {
-   if (text != null)
-   text = text.replace(target, replacement);
+   return apply(x -> x == null ? null : text.replace(target, 
replacement));
+   }
+
+   /**
+* URL-decodes the text in this assertion.
+*
+* @return The response object (for method chaining).
+*/
+   public FluentStringAssertion urlDecode() {
+   return apply(x->StringUtils.urlDecode(x));
+   }
+
+   /**
+* Sorts the contents of the text by lines.
+*
+* @return The response object (for method chaining).
+*/
+   public FluentStringAssertion sort() {
+   return apply(x->x == null ? null : 
Arrays.asList(x.trim().split("[\r\n]+")).stream().sorted().collect(Collectors.joining("\n")));
+   }
+
+   /**
+* Converts the text to lowercase.
+*
+* @return The response object (for method chaining).
+*/
+   public FluentStringAssertion lc() {
+   return apply(x->x == null ? null : x.toLowerCase());
+   }
+
+   /**
+* Converts the text to uppercase.
+*
+* @return The response object (for method chaining).
+*/
+   public FluentStringAssertion uc() {
+   return apply(x->x == null ? null : x.toUpperCase());
+   }
+
+   /**
+* Applies an abitrary function against the text in this assertion.
+*
+* @param f The function to apply.
+* @return The response object (for method chaining).
+*/
+   public FluentStringAssertion apply(Function f) {
+   text = f.apply(text);
return this;
}
 
@@ -226,20 +270,6 @@ public class FluentStringAssertion extends 
FluentAssertion {
}
 
/**
-* Asserts that the text equals the specified value after the text has 
been URL-decoded.
-*
-* @param value The value to check against.
-* @return The response object (for method chaining).
-* @throws AssertionError If assertion failed.
-*/
-   public R urlDecodedIs(String value) throws AssertionError {
-   String t = urlDecode(text);
-   if (! isEqualsIc(value, t))
-   throw error("Text differed at pos

[juneau] branch master updated: RestClient tests.

2020-06-28 Thread jamesbognar
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 b8ab71d  RestClient tests.
b8ab71d is described below

commit b8ab71dd29c74f5db9f113450d3dbbd11e0f6bfc
Author: JamesBognar 
AuthorDate: Sun Jun 28 11:12:07 2020 -0400

RestClient tests.
---
 .../org/apache/juneau/rest/client2/RestRequest.java | 21 +++--
 1 file changed, 7 insertions(+), 14 deletions(-)

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 2299fd4..5197957 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
@@ -1423,25 +1423,21 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
private RestRequest innerQuery(EnumSet flags, 
List params) {
flags = AddFlag.orDefault(flags);
params.removeIf(x -> x.getValue() == null);
+   if (flags.contains(SKIP_IF_EMPTY))
+   params.removeIf(x -> isEmpty(x.getValue()));
if (flags.contains(REPLACE)) {
List l = uriBuilder.getQueryParams();
for (NameValuePair p : params)
for (Iterator i = l.iterator(); 
i.hasNext();)
if 
(i.next().getName().equals(p.getName()))
i.remove();
-   if (flags.contains(SKIP_IF_EMPTY))
-   params.removeIf(x -> isEmpty(x.getValue()));
l.addAll(params);
uriBuilder.setParameters(l);
} else if (flags.contains(PREPEND)) {
List l = uriBuilder.getQueryParams();
-   if (flags.contains(SKIP_IF_EMPTY))
-   params.removeIf(x -> isEmpty(x.getValue()));
l.addAll(0, params);
uriBuilder.setParameters(l);
} else {
-   if (flags.contains(SKIP_IF_EMPTY))
-   params.removeIf(x -> isEmpty(x.getValue()));
uriBuilder.addParameters(params);
}
return this;
@@ -1821,6 +1817,8 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
private RestRequest innerFormData(EnumSet flags, 
List params) {
flags = AddFlag.orDefault(flags);
params.removeIf(x -> x == null|| x.getValue() == null);
+   if (flags.contains(SKIP_IF_EMPTY))
+   params.removeIf(x -> isEmpty(x.getValue()));
if (formData == null)
formData = new NameValuePairs();
if (flags.contains(REPLACE)) {
@@ -1828,16 +1826,10 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
for (Iterator i = 
formData.iterator(); i.hasNext();)
if 
(i.next().getName().equals(p.getName()))
i.remove();
-   if (flags.contains(SKIP_IF_EMPTY))
-   params.removeIf(x -> isEmpty(x.getValue()));
formData.addAll(params);
} else if (flags.contains(PREPEND)) {
-   if (flags.contains(SKIP_IF_EMPTY))
-   params.removeIf(x -> isEmpty(x.getValue()));
formData.addAll(0, params);
} else {
-   if (flags.contains(SKIP_IF_EMPTY))
-   params.removeIf(x -> isEmpty(x.getValue()));
formData.addAll(params);
}
return this;
@@ -2296,6 +2288,8 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
private RestRequest innerHeaders(EnumSet flags, 
Collection headers) {
flags = AddFlag.orDefault(flags);
headers.removeIf(x -> x == null || x.getValue() == null);
+   if (flags.contains(SKIP_IF_EMPTY))
+   headers.removeIf(x -> isEmpty(x.getValue()));
if (flags.contains(REPLACE)) {
for (Header h : headers)
removeHeaders(h.getName());
@@ -2307,8 +2301,7 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
}
 

[juneau] branch master updated: RestClient tests.

2020-06-28 Thread jamesbognar
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 8244bed  RestClient tests.
8244bed is described below

commit 8244bed0bde37f1cd609a41dfda6710068b1d10a
Author: JamesBognar 
AuthorDate: Sun Jun 28 10:49:02 2020 -0400

RestClient tests.
---
 .../rest/client2/RestClient_FormData_Test.java |   6 ++
 .../juneau/rest/client2/RestClient_Query_Test.java |  14 ++-
 .../org/apache/juneau/rest/client2/RestClient.java |  24 ++---
 .../apache/juneau/rest/client2/RestRequest.java| 104 ++---
 4 files changed, 75 insertions(+), 73 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_FormData_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_FormData_Test.java
index 544d171..b4b4c8c 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_FormData_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_FormData_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.rest.client2;
 
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.apache.juneau.httppart.HttpPartSchema.*;
+import static org.apache.juneau.AddFlag.*;
 
 import java.io.*;
 
@@ -58,6 +59,11 @@ public class RestClient_FormData_Test {
public void a03_formData_withSchema() throws Exception {
client().formData("Foo",AList.of("bar","baz"), 
T_ARRAY_PIPES).build().post("/formData").run().assertBody().is("Foo=bar%7Cbaz").assertBody().urlDecodedIs("Foo=bar|baz");

client().build().post("/formData").formData("Foo",AList.of("bar","baz"), 
T_ARRAY_PIPES).run().assertBody().is("Foo=bar%7Cbaz").assertBody().urlDecodedIs("Foo=bar|baz");
+
+   client().formData("Foo",AList.of("bar","baz"), 
T_ARRAY_PIPES).build().post("/formData").formData("Foo",AList.of("qux","quux"), 
T_ARRAY_PIPES).run().assertBody().is("Foo=bar%7Cbaz=qux%7Cquux").assertBody().urlDecodedIs("Foo=bar|baz=qux|quux");
+   client().formData("Foo",AList.of("bar","baz"), 
T_ARRAY_PIPES).build().post("/formData").formData(APPEND,"Foo",AList.of("qux","quux"),
 
T_ARRAY_PIPES).run().assertBody().is("Foo=bar%7Cbaz=qux%7Cquux").assertBody().urlDecodedIs("Foo=bar|baz=qux|quux");
+   client().formData("Foo",AList.of("bar","baz"), 
T_ARRAY_PIPES).build().post("/formData").formData(PREPEND,"Foo",AList.of("qux","quux"),
 
T_ARRAY_PIPES).run().assertBody().is("Foo=qux%7Cquux=bar%7Cbaz").assertBody().urlDecodedIs("Foo=qux|quux=bar|baz");
+   client().formData("Foo",AList.of("bar","baz"), 
T_ARRAY_PIPES).build().post("/formData").formData(REPLACE,"Foo",AList.of("qux","quux"),
 
T_ARRAY_PIPES).run().assertBody().is("Foo=qux%7Cquux").assertBody().urlDecodedIs("Foo=qux|quux");
}
 
@Test
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Query_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Query_Test.java
index 52e8529..d2ceaf3 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Query_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Query_Test.java
@@ -14,12 +14,11 @@ package org.apache.juneau.rest.client2;
 
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.apache.juneau.httppart.HttpPartSchema.*;
+import static org.apache.juneau.AddFlag.*;
 
 import java.io.*;
-import java.util.*;
 
 import org.apache.http.*;
-import org.apache.juneau.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.http.*;
 import org.apache.juneau.rest.*;
@@ -126,10 +125,17 @@ public class RestClient_Query_Test {
public void a11_query_request() throws Exception {
client().build().get("/echo").query("foo", 
"bar").run().assertBody().contains("GET /echo?foo=bar");
client().build().get("/echo").query("foo", 
AList.of("bar","baz"), T_ARRAY_PIPES).run().assertBody().contains("GET 
/echo?foo=bar%7Cbaz")

[juneau] branch master updated: Tests.

2020-06-25 Thread jamesbognar
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 dead61b  Tests.
dead61b is described below

commit dead61b5d10b595746da25b6c694466cf3af5fcb
Author: JamesBognar 
AuthorDate: Thu Jun 25 16:33:13 2020 -0400

Tests.
---
 .../java/org/apache/juneau/ComboRoundTripTest.java |  1 -
 .../java/org/apache/juneau/ComboSerializeTest.java |  1 -
 .../juneau/serializer/UriResolutionTest.java   |  1 -
 .../org/apache/juneau/testutils/TestUtils.java | 18 --
 .../org/apache/juneau/utils/MethodInvokerTest.java |  8 ++---
 .../juneau/utils/StackTraceDatabaseTest.java   |  5 ++-
 .../org/apache/juneau/internal/StringUtils.java| 30 
 .../juneau/microservice/testutils/TestUtils.java   | 41 -
 .../apache/juneau/rest/testutils/TestUtils.java| 42 --
 .../juneau/rest/headers/AcceptEncodingTest.java| 18 +-
 .../juneau/rest/headers/ContentEncodingTest.java   |  6 ++--
 11 files changed, 48 insertions(+), 123 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java
index ad88e5a..b55b656 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java
@@ -26,7 +26,6 @@ import org.apache.juneau.json.*;
 import org.apache.juneau.msgpack.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
-import org.apache.juneau.testutils.*;
 import org.apache.juneau.uon.*;
 import org.apache.juneau.urlencoding.*;
 import org.apache.juneau.xml.*;
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboSerializeTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboSerializeTest.java
index 4290aca..da1cba6 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboSerializeTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboSerializeTest.java
@@ -25,7 +25,6 @@ import org.apache.juneau.jena.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.msgpack.*;
 import org.apache.juneau.serializer.*;
-import org.apache.juneau.testutils.*;
 import org.apache.juneau.uon.*;
 import org.apache.juneau.urlencoding.*;
 import org.apache.juneau.xml.*;
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/serializer/UriResolutionTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/serializer/UriResolutionTest.java
index 9defdc0..69774d7 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/serializer/UriResolutionTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/serializer/UriResolutionTest.java
@@ -23,7 +23,6 @@ import org.apache.juneau.jena.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.msgpack.*;
 import org.apache.juneau.parser.*;
-import org.apache.juneau.testutils.*;
 import org.apache.juneau.uon.*;
 import org.apache.juneau.urlencoding.*;
 import org.apache.juneau.xml.*;
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/testutils/TestUtils.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/testutils/TestUtils.java
index c2fa556..5e4e3ee 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/testutils/TestUtils.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/testutils/TestUtils.java
@@ -21,7 +21,6 @@ import javax.xml.parsers.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.internal.*;
-import org.apache.juneau.json.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.utils.*;
 import org.apache.juneau.xml.*;
@@ -32,11 +31,6 @@ import org.xml.sax.*;
 @SuppressWarnings({})
 public class TestUtils {
 
-   private static JsonSerializer js2 = JsonSerializer.create()
-   .ssq()
-   .addBeanTypes().addRootType()
-   .build();
-
private static final BeanSession beanSession = 
BeanContext.DEFAULT.createSession();
 
/**
@@ -230,18 +224,6 @@ public class TestUtils {
Assert.assertEquals(sortXml(expected), sortXml(actual));
}
 
-   public static final void assertObjectMatches(String s, Object o) {
-   assertObjectMatches(s, o, js2);
-   }
-
-   public static final void assertObjectMatches(String s, Object o, 
WriterSerializer ws) {
-   if ("xxx".equals(s))
-   System.err.println(ws.toString(o).replaceAll("", 
"")); // NOT DEBUG
-   

[juneau] branch master updated: Tests.

2020-06-25 Thread jamesbognar
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 e9ab57d  Tests.
e9ab57d is described below

commit e9ab57d0c2332f59484b4eb3e71d55e3c4601da4
Author: JamesBognar 
AuthorDate: Thu Jun 25 16:21:08 2020 -0400

Tests.
---
 .../java/org/apache/juneau/ComboRoundTripTest.java | 14 +++---
 .../java/org/apache/juneau/ComboSerializeTest.java |  7 +--
 .../juneau/serializer/UriResolutionTest.java   |  7 +--
 .../org/apache/juneau/testutils/TestUtils.java | 17 ---
 .../juneau/assertions/FluentStringAssertion.java   | 52 ++
 5 files changed, 68 insertions(+), 29 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java
index dac33e8..ad88e5a 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java
@@ -105,9 +105,10 @@ public abstract class ComboRoundTripTest {
System.out.println(r);
}
 
-   if (isRdf)
-   TestUtils.assertEqualsAfterSort(expected, r, 
"{0}/{1} parse-normal failed", comboInput.label, testName);
-   else
+   if (isRdf) {
+   Object[] args = { comboInput.label, testName };
+   assertString(r).msg("{0}/{1} parse-normal 
failed", args).equalsAfterSort(expected);
+   } else
assertString(r).msg("{0}/{1} parse-normal 
failed", comboInput.label, testName).is(expected);
 
} catch (AssertionError e) {
@@ -148,9 +149,10 @@ public abstract class ComboRoundTripTest {
if (isRdf)
r = r.replaceAll("]*>", 
"").replace('"', '\'');
 
-   if (isRdf)
-   TestUtils.assertEqualsAfterSort(expected, r, 
"{0}/{1} parse-normal failed", comboInput.label, testName);
-   else
+   if (isRdf) {
+   Object[] args = { comboInput.label, testName };
+   assertString(r).msg("{0}/{1} parse-normal 
failed", args).equalsAfterSort(expected);
+   } else
assertString(r).msg("{0}/{1} parse-normal 
failed", comboInput.label, testName).is(expected);
 
} catch (AssertionError e) {
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboSerializeTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboSerializeTest.java
index 4db4a0f..4290aca 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboSerializeTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ComboSerializeTest.java
@@ -95,9 +95,10 @@ public abstract class ComboSerializeTest {
}
}
 
-   if (isRdf)
-   TestUtils.assertEqualsAfterSort(expected, r, 
"{0}/{1} serialize-normal failed", comboInput.label, testName);
-   else
+   if (isRdf) {
+   Object[] args = { comboInput.label, testName };
+   assertString(r).msg("{0}/{1} serialize-normal 
failed", args).equalsAfterSort(expected);
+   } else
assertString(r).msg("{0}/{1} parse-normal 
failed", comboInput.label, testName).is(expected);
 
} catch (AssertionError e) {
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/serializer/UriResolutionTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/serializer/UriResolutionTest.java
index aaac012..9defdc0 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/serializer/UriResolutionTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/serializer/UriResolutionTest.java
@@ -565,9 +565,10 @@ public class UriResolutionTest {
System.out.println(r);
}
 
-   if (isRdf)
-   TestUtils.assertEqualsAfterSort(expected, r, 
"{0}/{1} serialize-normal failed", label, s.getClass().getSimpleName());
-   else
+   if (isRdf) {
+

[juneau] branch master updated: Tests.

2020-06-25 Thread jamesbognar
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 c25f4f5  Tests.
c25f4f5 is described below

commit c25f4f5397aaf31486efb0abe62419e339038abf
Author: JamesBognar 
AuthorDate: Thu Jun 25 15:55:11 2020 -0400

Tests.
---
 .../a/rttests/RoundTripObjectsAsStringsTest.java   | 17 ++-
 .../org/apache/juneau/a/rttests/RoundTripTest.java |  3 ++-
 .../a/rttests/RoundTripTransformBeansTest.java | 22 +++
 .../org/apache/juneau/testutils/TestUtils.java | 25 --
 .../org/apache/juneau/internal/StringUtils.java| 16 ++
 5 files changed, 52 insertions(+), 31 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsAsStringsTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsAsStringsTest.java
index 2e50c3a..0264d64 100755
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsAsStringsTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsAsStringsTest.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.a.rttests;
 
 import static org.apache.juneau.assertions.ObjectAssertion.*;
+import static org.apache.juneau.internal.IOUtils.*;
 import static org.apache.juneau.testutils.TestUtils.*;
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
@@ -126,7 +127,7 @@ public class RoundTripObjectsAsStringsTest extends 
RoundTripTest {
B t = new B().init();
if (! returnOriginalObject) {
Object r = getSerializer().serialize(t);
-   assertTrue(TestUtils.toString(r).contains("X-2"));
+   assertTrue(toString(r).contains("X-2"));
}
t = roundTrip(t);
assertObject(t).json().is("{b1:'X1',b2:'X-2'}");
@@ -274,4 +275,18 @@ public class RoundTripObjectsAsStringsTest extends 
RoundTripTest {
return "C4" + f;
}
}
+
+   
//--
+   // Utility methods.
+   
//--
+
+   private static final String toString(Object o) {
+   if (o == null)
+   return null;
+   if (o instanceof String)
+   return (String)o;
+   if (o instanceof byte[])
+   return new String((byte[])o, UTF8);
+   return o.toString();
+   }
 }
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
index a1a137c..b995f91 100755
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
@@ -20,6 +20,7 @@ import java.util.Map.*;
 
 import org.apache.juneau.collections.*;
 import org.apache.juneau.html.*;
+import org.apache.juneau.internal.*;
 import org.apache.juneau.jena.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.msgpack.*;
@@ -286,7 +287,7 @@ public abstract class RoundTripTest {
}
 
if (debug)
-   System.err.println("Serialized contents from 
["+label+"]...\n---START---\n" + (out instanceof byte[] ? 
TestUtils.toReadableBytes((byte[])out) : out) + "\n---END---\n"); // NOT DEBUG
+   System.err.println("Serialized contents from 
["+label+"]...\n---START---\n" + (out instanceof byte[] ? 
StringUtils.toReadableBytes((byte[])out) : out) + "\n---END---\n"); // NOT DEBUG
 
if (validateXmlWhitespace)
TestUtils.checkXmlWhitespace(out.toString());
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
index fb60c11..01a15fd 100755
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
@@ -14,6 +14,7 @@ package org.apache.juneau.a.rttests;
 
 import static org.apache.juneau.assertions.ObjectAssertion.*;
 import static org.apa

[juneau] branch master updated: Tests.

2020-06-25 Thread jamesbognar
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 a89bba2  Tests.
a89bba2 is described below

commit a89bba228ec3d4bbe5838817c6b17903acbd238e
Author: JamesBognar 
AuthorDate: Thu Jun 25 15:47:23 2020 -0400

Tests.
---
 .../java/org/apache/juneau/BasicBeanTests.java |  5 ++-
 .../apache/juneau/ReadWriteOnlyPropertiesTest.java |  5 ++-
 .../juneau/a/rttests/RoundTripBeanMapsTest.java| 15 -
 .../a/rttests/RoundTripTransformBeansTest.java |  5 ++-
 .../apache/juneau/annotation/BeanIgnoreTest.java   |  5 ++-
 .../apache/juneau/pojotools/PojoSearcherTest.java  | 39 +++---
 .../org/apache/juneau/testutils/TestUtils.java | 10 +-
 7 files changed, 35 insertions(+), 49 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BasicBeanTests.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BasicBeanTests.java
index aed59a6..b195698 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BasicBeanTests.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BasicBeanTests.java
@@ -13,7 +13,6 @@
 package org.apache.juneau;
 
 import static org.apache.juneau.assertions.ObjectAssertion.*;
-import static org.apache.juneau.testutils.TestUtils.*;
 import static org.junit.runners.MethodSorters.*;
 
 import java.beans.*;
@@ -53,13 +52,13 @@ public class BasicBeanTests {
@Test
public void a02_testTransientFieldsIgnored_overrideSetting() {
JsonSerializer s = 
SimpleJsonSerializer.DEFAULT.builder().dontIgnoreTransientFields().build();
-   assertObjectEquals("{f1:1,f2:2}", A1.create(), s);
+   assertObject(A1.create()).serialized(s).is("{f1:1,f2:2}");
}
 
@Test
public void a03_testTransientFieldsIgnored_overrideAnnotation() {
JsonSerializer s = 
SimpleJsonSerializer.DEFAULT.builder().applyAnnotations(A.class).build();
-   assertObjectEquals("{f1:1,f2:2}", A1.create(), s);
+   assertObject(A1.create()).serialized(s).is("{f1:1,f2:2}");
}
 
public static class A2 {
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ReadWriteOnlyPropertiesTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ReadWriteOnlyPropertiesTest.java
index 31c480a..e28175b 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ReadWriteOnlyPropertiesTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ReadWriteOnlyPropertiesTest.java
@@ -13,7 +13,6 @@
 package org.apache.juneau;
 
 import static org.apache.juneau.assertions.ObjectAssertion.*;
-import static org.apache.juneau.testutils.TestUtils.*;
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
 
@@ -263,7 +262,7 @@ public class ReadWriteOnlyPropertiesTest {
 
@Test
public void d03_beanAnnotation_bproAll_serializer_usingConfig() throws 
Exception {
-   assertObjectEquals("{f1:1,f2:2}", Dc.create(), 
SimpleJsonSerializer.DEFAULT.builder().applyAnnotations(Dc.class).build());
+   
assertObject(Dc.create()).serialized(SimpleJsonSerializer.DEFAULT.builder().applyAnnotations(Dc.class).build()).is("{f1:1,f2:2}");
}
 
@Test
@@ -317,7 +316,7 @@ public class ReadWriteOnlyPropertiesTest {
 
@Test
public void e03_beanAnnotation_bpwoAll_serializer_usingConfig() throws 
Exception {
-   assertObjectEquals("{}", E.create(), 
SimpleJsonSerializer.DEFAULT.builder().applyAnnotations(Ec.class).build());
+   
assertObject(E.create()).serialized(SimpleJsonSerializer.DEFAULT.builder().applyAnnotations(Ec.class).build()).is("{}");
}
 
@Test
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
index bb140bc..45803b1 100755
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
@@ -13,7 +13,6 @@
 package org.apache.juneau.a.rttests;
 
 import static org.apache.juneau.assertions.ObjectAssertion.*;
-import static org.apache.juneau.testutils.TestUtils.*;
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
 
@@ -234,19 +233,19 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
Object r = s.serialize(b1);
B b = p.parse(r, B.class);
assertTrue(

[juneau] branch master updated: Tests.

2020-06-25 Thread jamesbognar
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 66289ff  Tests.
66289ff is described below

commit 66289ff444f1a135dc00ddccca80300db51f4724
Author: JamesBognar 
AuthorDate: Thu Jun 25 15:03:28 2020 -0400

Tests.
---
 .../test/java/org/apache/juneau/jena/RdfTest.java  |  6 ++---
 .../org/apache/juneau/testutils/TestUtils.java | 29 --
 2 files changed, 3 insertions(+), 32 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/RdfTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/RdfTest.java
index 68415cf..2ce7b33 100755
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/RdfTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/RdfTest.java
@@ -269,7 +269,7 @@ public class RdfTest {
assertXmlEquals(expected, rdfXml);
 
b2 = p.parse(rdfXml, B.class);
-   assertEqualObjects(b, b2, true);
+   assertObject(b).jsonSameAsSorted(b2);
 

//-
// Default is Bag - Should only affect DEFAULT properties.
@@ -340,7 +340,7 @@ public class RdfTest {
assertXmlEquals(expected, rdfXml);
 
b2 = p.parse(rdfXml, B.class);
-   assertEqualObjects(b, b2, true);
+   assertObject(b).jsonSameAsSorted(b2);
}
 
@Rdf(prefix="b", namespace="http://ns/;)
@@ -503,7 +503,7 @@ public class RdfTest {
assertXmlEquals(expected, rdfXml);
 
c2 = p.parse(rdfXml, C.class);
-   assertEqualObjects(c, c2, true);
+   assertObject(c).jsonSameAsSorted(c2);
}
 
@Rdf(collectionFormat=RdfCollectionFormat.BAG)
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/testutils/TestUtils.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/testutils/TestUtils.java
index 9f0c365..92947ce 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/testutils/TestUtils.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/testutils/TestUtils.java
@@ -35,21 +35,6 @@ import org.xml.sax.*;
 @SuppressWarnings({})
 public class TestUtils {
 
-   private static JsonSerializer js = JsonSerializer.create()
-   .ssq()
-   .keepNullProperties()
-   .addBeanTypes().addRootType()
-   .build();
-
-   private static JsonSerializer jsSorted = JsonSerializer.create()
-   .ssq()
-   .sortCollections()
-   .sortMaps()
-   .keepNullProperties()
-   .addBeanTypes().addRootType()
-   .build();
-
-
private static JsonSerializer js2 = JsonSerializer.create()
.ssq()
.addBeanTypes().addRootType()
@@ -64,20 +49,6 @@ public class TestUtils {
private static final BeanSession beanSession = 
BeanContext.DEFAULT.createSession();
 
/**
-* Verifies that two objects are equivalent.
-* Does this by doing a string comparison after converting both to JSON.
-* @param sort If true sort maps and collections before 
comparison.
-*/
-   public static final void assertEqualObjects(Object o1, Object o2, 
boolean sort) throws SerializeException {
-   JsonSerializer s = (sort ? jsSorted : js);
-   String s1 = s.serialize(o1);
-   String s2 = s.serialize(o2);
-   if (s1.equals(s2))
-   return;
-   throw new ComparisonFailure(null, s1, s2);
-   }
-
-   /**
 * Validates that the whitespace is correct in the specified XML.
 */
public static final void checkXmlWhitespace(String out) throws 
SerializeException {



[juneau] branch master updated: Tests.

2020-06-25 Thread jamesbognar
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 26d1910  Tests.
26d1910 is described below

commit 26d191052206458efb904d337cf1aab17408bb7a
Author: JamesBognar 
AuthorDate: Thu Jun 25 14:59:14 2020 -0400

Tests.
---
 .../a/rttests/RoundTripBeanInheritanceTest.java|  6 +-
 .../apache/juneau/a/rttests/RoundTripDTOsTest.java |  6 +-
 .../apache/juneau/a/rttests/RoundTripEnumTest.java |  5 +-
 .../juneau/a/rttests/RoundTripTrimStringsTest.java | 18 +++---
 .../java/org/apache/juneau/dto/atom/AtomTest.java  | 10 ++--
 .../apache/juneau/dto/cognos/CognosXmlTest.java|  4 +-
 .../java/org/apache/juneau/html/CommonTest.java| 12 ++--
 .../java/org/apache/juneau/jena/CommonTest.java| 16 +++---
 .../java/org/apache/juneau/jena/CommonXmlTest.java |  6 +-
 .../java/org/apache/juneau/jena/RdfParserTest.java |  3 +-
 .../test/java/org/apache/juneau/jena/RdfTest.java  | 11 ++--
 .../java/org/apache/juneau/json/CommonTest.java| 12 ++--
 .../java/org/apache/juneau/oapi/OpenApiTest.java   | 64 +++---
 .../org/apache/juneau/testutils/TestUtils.java |  8 ---
 .../java/org/apache/juneau/uon/Common_UonTest.java | 12 ++--
 .../juneau/urlencoding/Common_UrlEncodingTest.java | 12 ++--
 .../java/org/apache/juneau/xml/CommonTest.java | 12 ++--
 .../org/apache/juneau/xml/XmlCollapsedTest.java| 11 ++--
 .../java/org/apache/juneau/xml/XmlContentTest.java | 46 
 .../apache/juneau/xml/XmlIgnoreCommentsTest.java   | 10 ++--
 .../juneau/assertions/FluentObjectAssertion.java   | 56 ++-
 .../juneau/rest/client2/RestClient_Test.java   | 19 ---
 22 files changed, 205 insertions(+), 154 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanInheritanceTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanInheritanceTest.java
index 456cd9c..2c88f15 100755
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanInheritanceTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanInheritanceTest.java
@@ -12,7 +12,7 @@
 // 
***
 package org.apache.juneau.a.rttests;
 
-import static org.apache.juneau.testutils.TestUtils.*;
+import static org.apache.juneau.assertions.ObjectAssertion.*;
 import static org.junit.runners.MethodSorters.*;
 
 import org.apache.juneau.parser.*;
@@ -43,7 +43,7 @@ public class RoundTripBeanInheritanceTest extends 
RoundTripTest {
A2 t1 = new A2(), t2;
t1.init();
t2 = roundTrip(t1, A2.class);
-   assertEqualObjects(t1, t2);
+   assertObject(t1).jsonSameAs(t2);
 
A3 t3 = new A3();
t3.init();
@@ -145,7 +145,7 @@ public class RoundTripBeanInheritanceTest extends 
RoundTripTest {
public void testBeanInheritance2() throws Exception {
B1 t1 = new B1().init(), t2;
t2 = roundTrip(t1, B1.class);
-   assertEqualObjects(t1, t2);
+   assertObject(t1).jsonSameAs(t2);
}
 
public static class B1 extends B2 {
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripDTOsTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripDTOsTest.java
index f10ff06..b3cb18d 100755
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripDTOsTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripDTOsTest.java
@@ -12,7 +12,7 @@
 // 
***
 package org.apache.juneau.a.rttests;
 
-import static org.apache.juneau.testutils.TestUtils.*;
+import static org.apache.juneau.assertions.ObjectAssertion.*;
 import static org.junit.runners.MethodSorters.*;
 
 import org.apache.juneau.dto.jsonschema.*;
@@ -38,13 +38,13 @@ public class RoundTripDTOsTest extends RoundTripTest {
public void testJsonSchema1() throws Exception {
JsonSchema s = JsonSchemaTest.getTest1();
JsonSchema s2 = roundTrip(s, JsonSchema.class);
-   assertEqualObjects(s, s2);
+   assertObject(s).jsonSameAs(s2);
}
 
@Test
public void testJsonSchema2() throws Exception {
JsonSchema s = JsonSchemaTest.getTest2();
JsonSchema s2 = roundTrip(s, JsonSchema.class);
-   assertEqualObjects(s, s2);
+   assertObject(s).jsonSameAs(s2

[juneau] branch master updated: RestClient tests

2020-06-22 Thread jamesbognar
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 859d899  RestClient tests
859d899 is described below

commit 859d8994b01d7b5c7158ca7270eae39ff6f0d666
Author: JamesBognar 
AuthorDate: Mon Jun 22 11:59:10 2020 -0400

RestClient tests
---
 .../org/apache/juneau/http/BasicNameValuePair.java |  38 +++-
 .../org/apache/juneau/http/NameValuePairable.java  |  28 +++
 .../org/apache/juneau/http/SerializedHeader.java   | 113 +-
 .../juneau/http/SerializedHeaderBuilder.java   | 128 +++
 .../juneau/http/SerializedNameValuePair.java   | 116 +-
 .../http/SerializedNameValuePairBuilder.java   | 138 
 .../org/apache/juneau/http/header/BasicHeader.java |  40 
 .../apache/juneau/rest/client2/RestClientTest.java |   2 +-
 .../org/apache/juneau/rest/client2/RestClient.java |  54 ++---
 .../juneau/rest/client2/RestClientBuilder.java | 157 +++--
 .../apache/juneau/rest/client2/RestRequest.java| 243 +++--
 11 files changed, 655 insertions(+), 402 deletions(-)

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 952705e..be5601b 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
@@ -14,14 +14,17 @@ package org.apache.juneau.http;
 
 import static org.apache.juneau.internal.StringUtils.*;
 
+import java.util.*;
 import java.util.function.*;
 
 import org.apache.http.*;
+import org.apache.juneau.*;
 import org.apache.juneau.http.header.*;
+import org.apache.juneau.reflect.*;
 
 /**
  * Subclass of {@link NameValuePair} for serializing POJOs as URL-encoded form 
post entries.
- * 
+ *
  * 
  * 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.
@@ -56,6 +59,39 @@ public class BasicNameValuePair implements NameValuePair, 
Headerable {
}
 
/**
+* Utility method for converting an arbitrary object to a {@link 
NameValuePair}.
+*
+* @param o
+*  The object to cast or convert to a {@link NameValuePair}.
+* @return Either the same object cast as a {@link NameValuePair} or 
converted to a {@link NameValuePair}.
+*/
+   @SuppressWarnings("rawtypes")
+   public static NameValuePair cast(Object o) {
+   if (o instanceof NameValuePair)
+   return (NameValuePair)o;
+   if (o instanceof NameValuePairable)
+   return ((NameValuePairable)o).asNameValuePair();
+   if (o instanceof Headerable)
+   return ((Headerable)o).asHeader();
+   if (o instanceof Map.Entry) {
+   Map.Entry e = (Map.Entry)o;
+   return BasicNameValuePair.of(stringify(e.getKey()), 
e.getValue());
+   }
+   throw new BasicRuntimeException("Object of type {0} could not 
be converted to a NameValuePair.", o == null ? null : o.getClass().getName());
+   }
+
+   /**
+* Returns true if the {@link #cast(Object)} method can be 
used on the specified object.
+*
+* @param o The object to check.
+* @return true if the {@link #cast(Object)} method can be 
used on the specified object.
+*/
+   public static boolean canCast(Object o) {
+   ClassInfo ci = ClassInfo.of(o);
+   return ci != null && ci.isChildOfAny(Headerable.class, 
NameValuePair.class, NameValuePairable.class, Map.Entry.class);
+   }
+
+   /**
 * Constructor.
 *
 * @param name The parameter name.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NameValuePairable.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NameValuePairable.java
new file mode 100644
index 000..6c39b11
--- /dev/null
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NameValuePairable.java
@@ -0,0 +1,28 @@
+// 
***
+// * 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 n

[juneau] branch master updated: RestClient tests.

2020-06-20 Thread jamesbognar
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 25562e5  RestClient tests.
25562e5 is described below

commit 25562e5f6e9141b1fdfb6a1a8c3e131eb46a79c9
Author: JamesBognar 
AuthorDate: Sat Jun 20 10:32:28 2020 -0400

RestClient tests.
---
 .../org/apache/juneau/http/BasicNameValuePair.java |   10 +-
 .../java/org/apache/juneau/http/Headerable.java|   32 +
 .../org/apache/juneau/http/SerializedHeader.java   |   12 +
 .../juneau/http/SerializedNameValuePair.java   |9 +-
 .../org/apache/juneau/http/header/BasicHeader.java |   12 +
 .../org/apache/juneau/httppart/HttpPartSchema.java |   17 +-
 .../juneau/httppart/HttpPartSchemaBuilder.java |  116 +-
 .../juneau/rest/client2/QueryAnnotationTest.java   |2 +-
 .../apache/juneau/rest/client2/RestClientTest.java |  179 ++-
 .../org/apache/juneau/rest/client2/RestClient.java |   60 +-
 .../juneau/rest/client2/RestClientBuilder.java |  111 +-
 .../juneau/rest/client2/RestClientUtils.java   |  103 --
 .../apache/juneau/rest/client2/RestRequest.java| 1579 
 13 files changed, 781 insertions(+), 1461 deletions(-)

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 6910f0f..952705e 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
@@ -17,15 +17,16 @@ import static org.apache.juneau.internal.StringUtils.*;
 import java.util.function.*;
 
 import org.apache.http.*;
+import org.apache.juneau.http.header.*;
 
 /**
  * Subclass of {@link NameValuePair} for serializing POJOs as URL-encoded form 
post entries.
- *
+ * 
  * 
  * 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.
  */
-public class BasicNameValuePair implements NameValuePair {
+public class BasicNameValuePair implements NameValuePair, Headerable {
private String name;
private Object value;
 
@@ -65,6 +66,11 @@ public class BasicNameValuePair implements NameValuePair {
this.value = value;
}
 
+   @Override /* Headerable */
+   public BasicHeader asHeader() {
+   return BasicHeader.of(name, value);
+   }
+
@Override /* NameValuePair */
public String getName() {
return name;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Headerable.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Headerable.java
new file mode 100644
index 000..682c257
--- /dev/null
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Headerable.java
@@ -0,0 +1,32 @@
+// 
***
+// * 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 org.apache.http.*;
+
+/**
+ * Identifies a class that can be converted to a {@link Header} object.
+ * 
+ * 
+ * Typically used on {@link NameValuePair} classes to allow them to be easily 
converted to {@link Header}
+ * objects in a controll

[juneau] branch master updated: RestClient tests.

2020-06-18 Thread jamesbognar
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 4af551e  RestClient tests.
4af551e is described below

commit 4af551ec67088b800c8ef1d2a8625d62e1f82167
Author: JamesBognar 
AuthorDate: Thu Jun 18 17:17:41 2020 -0400

RestClient tests.
---
 .../apache/juneau/rest/client2/RestClientTest.java | 198 +--
 .../org/apache/juneau/rest/client2/RestClient.java |  38 ++-
 .../juneau/rest/client2/RestClientBuilder.java | 105 ++
 .../apache/juneau/rest/client2/RestRequest.java| 370 +++--
 .../juneau/rest/mock2/MockRestClientBuilder.java   |  51 +--
 5 files changed, 391 insertions(+), 371 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index fb8b0b5..77b4255 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -122,7 +122,7 @@ public class RestClientTest {
public Bean headBean() {
return bean;
}
-   @RestMethod(path="/echo")
+   @RestMethod(path="/echo/*")
public String getEcho(org.apache.juneau.rest.RestRequest req) {
return req.toString();
}
@@ -1415,20 +1415,64 @@ public class RestClientTest {
}
 
@Test
-   public void c18_miscellaneous_request_scheme() throws Exception {
+   public void c18_miscellaneous_request_uriParts() throws Exception {
java.net.URI uri = MockRestClient
.create(A.class)
.simpleJson()
.build()
-   .get("/bean")
+   .get()
.scheme("http")
.host("localhost")
.port(8080)
.userInfo("foo:bar")
+   .uri("/bean")
+   .fragment("baz")
+   .query("foo", "bar")
+   .run()
+   .assertBody().is("{f:1}")
+   .getRequest().getURI();
+   assertEquals("http://foo:bar@localhost:8080/bean?foo=bar#baz;, 
uri.toString());
+
+   uri = MockRestClient
+   .create(A.class)
+   .simpleJson()
+   .build()
+   .get()
+   .scheme("http")
+   .host("localhost")
+   .port(8080)
+   .userInfo("foo","bar")
+   .uri("/bean")
+   .fragment("baz")
+   .query("foo", "bar")
.run()
.assertBody().is("{f:1}")
.getRequest().getURI();
-   assertEquals("http://foo:bar@localhost:8080/bean;, 
uri.toString());
+   assertEquals("http://foo:bar@localhost:8080/bean?foo=bar#baz;, 
uri.toString());
+
+   uri = MockRestClient
+   .create(A.class)
+   .simpleJson()
+   .build()
+   .get()
+   .uri("http://localhost;)
+   .uri("http://foo:bar@localhost:8080/bean?foo=bar#baz;)
+   .run()
+   .assertBody().is("{f:1}")
+   .getRequest().getURI();
+   assertEquals("http://foo:bar@localhost:8080/bean?foo=bar#baz;, 
uri.toString());
+
+   uri = MockRestClient
+   .create(A.class)
+   .simpleJson()
+   .build()
+   .get()
+   .uri(new java.net.URI(null, null, null, null))
+   .uri(new 
java.net.URI("http://foo:bar@localhost:8080/bean?foo=bar#baz;))
+   .run()
+   .assertBody().is("{f:1}")
+   .getRequest().getURI();
+   assertEquals("http://foo:bar@localhost:8080/bean?foo=bar#baz;, 
uri.toString());
}
 

//--
@@ -2819,11 +2863,

[juneau] branch master updated: RestClient tests

2020-06-18 Thread jamesbognar
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 3aeae88  RestClient tests
3aeae88 is described below

commit 3aeae88610af3628f4ce96b1587c8c867ce23c09
Author: JamesBognar 
AuthorDate: Thu Jun 18 13:34:27 2020 -0400

RestClient tests
---
 .../org/apache/juneau/utils/MethodInvokerTest.java |   5 +-
 .../org/apache/juneau/mstat/MethodExecStats.java   |   3 +-
 .../juneau/serializer/SerializerSession.java   |   2 +-
 .../org/apache/juneau/utils/MethodExecStats.java   | 181 
 .../org/apache/juneau/utils/MethodInvoker.java |   2 +
 .../apache/juneau/rest/client2/MarshallsTest.java  |  83 ++
 .../apache/juneau/rest/client2/RestClientTest.java | 314 +
 .../rest/client2/BasicHttpEntityRequestBase.java}  |  56 ++--
 .../juneau/rest/client2/BasicHttpRequestBase.java} |  54 +---
 .../apache/juneau/rest/client2/RestRequest.java|  58 ++--
 .../apache/juneau/rest/client2/RestResponse.java   |   9 +
 .../apache/juneau/rest/mock2/MockRestRequest.java  |   1 +
 .../java/org/apache/juneau/rest/RestContext.java   |   1 +
 .../org/apache/juneau/rest/RestContextStats.java   |   2 +-
 14 files changed, 465 insertions(+), 306 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/MethodInvokerTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/MethodInvokerTest.java
index d904e7c..fe3512d 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/MethodInvokerTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/MethodInvokerTest.java
@@ -18,6 +18,7 @@ import static org.junit.runners.MethodSorters.*;
 
 import java.lang.reflect.*;
 
+import org.apache.juneau.mstat.*;
 import org.junit.*;
 
 @FixMethodOrder(NAME_ASCENDING)
@@ -62,7 +63,7 @@ public class MethodInvokerTest {
mi.invoke(a);
} catch (Exception e) {}
 
-   
assertObjectMatches("{method:'A.bar',runs:3,running:0,errors:3,minTime:*,maxTime:*,avgTime:*,totalTime:*,exceptions:[{exception:'RuntimeException',hash:'*',count:3}]}",
 mes);
+   
assertObjectMatches("{method:'A.bar',runs:3,running:0,errors:3,minTime:*,maxTime:*,avgTime:*,totalTime:*,exceptions:[{hash:'*',count:3,exceptionClass:*,message:*,stackTrace:*}]}",
 mes);
}
 
@Test
@@ -83,7 +84,7 @@ public class MethodInvokerTest {
mi.invoke(a, 1, "x");
} catch (Exception e) {}
 
-   
assertObjectMatches("{method:'A.baz',runs:3,running:0,errors:3,minTime:*,maxTime:*,avgTime:*,totalTime:*,exceptions:[{exception:'IllegalArgumentException',hash:'*',count:3}]}",
 mes);
+   
assertObjectMatches("{method:'A.baz',runs:3,running:0,errors:3,minTime:*,maxTime:*,avgTime:*,totalTime:*,exceptions:[{hash:'*',count:3,exceptionClass:*,message:*,stackTrace:*}]}",
 mes);
}
 
@Test
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/MethodExecStats.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/MethodExecStats.java
index 7d81ba4..598c53a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/MethodExecStats.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/MethodExecStats.java
@@ -149,7 +149,8 @@ public class MethodExecStats implements 
Comparable {
 * @return The average execution time in milliseconds.
 */
public int getAvgTime() {
-   return (int)(getTotalTime() / getRuns());
+   int runs = getRuns();
+   return runs == 0 ? 0 : (int)(getTotalTime() / runs);
}
 
/**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
index 463e5dd..599ab26 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
@@ -264,7 +264,7 @@ public abstract class SerializerSession extends 
BeanTraverseSession {
p.getName(), p.getBeanMeta().getClassMeta(), 
t.getLocalizedMessage());
if (! isIgnoreInvocationExceptionsOnGetters())
throw new SerializeException(this, "{0}Could not call 
getValue() on property ''{1}'' of class ''{2}'', exception = {3}", prefix,
-   p.getName(), p.getBeanMeta().getClassMeta(), 
t.getLocalizedMessage());
+   p.getName(), p.getBean

[juneau] branch master updated: RestClient tests

2020-06-18 Thread jamesbognar
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 99f1bc1  RestClient tests
99f1bc1 is described below

commit 99f1bc1ff6064f089ee2e578eb0084c8a24b11ae
Author: JamesBognar 
AuthorDate: Thu Jun 18 10:54:04 2020 -0400

RestClient tests
---
 .../apache/juneau/rest/client2/RestClientTest.java | 85 +-
 .../org/apache/juneau/rest/client2/RestClient.java | 15 ++--
 .../apache/juneau/rest/client2/RestRequest.java|  4 +-
 .../juneau/rest/client2/RestResponseBody.java  |  8 +-
 4 files changed, 97 insertions(+), 15 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index 15cafef..8414385 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -1297,6 +1297,75 @@ public class RestClientTest {
assertEquals("{f:1}", 
IOUtils.read(res.getEntity().getContent()));
}
 
+   @Test
+   public void c08_miscellaneous_executeHttpHostHttpRequest() throws 
Exception {
+   HttpGet x = new HttpGet("http://localhost/bean;);
+   HttpHost target = new HttpHost("localhost");
+   x.addHeader("Accept", "text/json+simple");
+   HttpResponse res = MockRestClient
+   .create(A.class)
+   .build()
+   .execute(target, x);
+   assertEquals("{f:1}", 
IOUtils.read(res.getEntity().getContent()));
+   }
+
+   @Test
+   public void c09_miscellaneous_executeHttpHostHttpRequestHttpContext() 
throws Exception {
+   HttpGet x = new HttpGet("http://localhost/bean;);
+   HttpHost target = new HttpHost("localhost");
+   HttpContext context = new BasicHttpContext();
+   x.addHeader("Accept", "text/json+simple");
+   HttpResponse res = MockRestClient
+   .create(A.class)
+   .build()
+   .execute(target, x, context);
+   assertEquals("{f:1}", 
IOUtils.read(res.getEntity().getContent()));
+   }
+
+   @Test
+   public void c10_miscellaneous_executeResponseHandler() throws Exception 
{
+   HttpGet x = new HttpGet("http://localhost/bean;);
+   x.addHeader("Accept", "text/json+simple");
+   String res = MockRestClient
+   .create(A.class)
+   .build()
+   .execute(x, new BasicResponseHandler());
+   assertEquals("{f:1}", res);
+   }
+
+   @Test
+   public void 
c11_miscellaneous_executeHttpUriRequestResponseHandlerHttpContext() throws 
Exception {
+   HttpGet x = new HttpGet("http://localhost/bean;);
+   x.addHeader("Accept", "text/json+simple");
+   String res = MockRestClient
+   .create(A.class)
+   .build()
+   .execute(x, new BasicResponseHandler(), new 
BasicHttpContext());
+   assertEquals("{f:1}", res);
+   }
+
+   @Test
+   public void 
c12_miscellaneous_executeHttpHostHttpRequestResponseHandlerHttpContext() throws 
Exception {
+   HttpGet x = new HttpGet("http://localhost/bean;);
+   x.addHeader("Accept", "text/json+simple");
+   String res = MockRestClient
+   .create(A.class)
+   .build()
+   .execute(new HttpHost("localhost"), x, new 
BasicResponseHandler(), new BasicHttpContext());
+   assertEquals("{f:1}", res);
+   }
+
+   @Test
+   public void 
c13_miscellaneous_executeHttpHostHttpRequestResponseHandler() throws Exception {
+   HttpGet x = new HttpGet("http://localhost/bean;);
+   x.addHeader("Accept", "text/json+simple");
+   String res = MockRestClient
+   .create(A.class)
+   .build()
+   .execute(new HttpHost("localhost"), x, new 
BasicResponseHandler());
+   assertEquals("{f:1}", res);
+   }
+

//---

[juneau] branch master updated: RestClient tests.

2020-06-18 Thread jamesbognar
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 66191a6  RestClient tests.
66191a6 is described below

commit 66191a63981619aa2d60f8494b75840008e25c41
Author: JamesBognar 
AuthorDate: Thu Jun 18 10:01:24 2020 -0400

RestClient tests.
---
 .../src/main/java/org/apache/juneau/Session.java   |   2 +-
 .../apache/juneau/rest/client2/RestClientTest.java |  35 ++-
 .../apache/juneau/rest/mock2/MockRestClient.java   |  21 +-
 .../apache/juneau/rest/mock2/MockRestRequest.java  | 330 -
 .../juneau/rest/mock2/MockServletRequest.java  |  74 +
 5 files changed, 379 insertions(+), 83 deletions(-)

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 0c2dfd1..3b3f1a1 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
@@ -331,7 +331,7 @@ public abstract class Session {
 * @see Context#CONTEXT_locale
 * @return The session locale.
 */
-   public final Locale getLocale() {
+   public Locale getLocale() {
return locale;
}
 
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index b80713c..15cafef 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -49,6 +49,7 @@ import org.apache.juneau.http.header.*;
 import org.apache.juneau.http.header.ContentType;
 import org.apache.juneau.http.response.*;
 import org.apache.juneau.httppart.*;
+import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.marshall.*;
 import org.apache.juneau.parser.*;
@@ -1131,7 +1132,7 @@ public class RestClientTest {

//--
 
@Test
-   public void c01_interceptors() throws RestCallException {
+   public void c01_miscellaneous_interceptors() throws RestCallException {
MockRestClient
.create(A.class)
.simpleJson()
@@ -1173,7 +1174,7 @@ public class RestClientTest {
}
 
@Test
-   public void c02_httpProcessor() throws RestCallException {
+   public void c02_miscellaneous_httpProcessor() throws RestCallException {
MockRestClient
.create(A.class)
.simpleJson()
@@ -1196,7 +1197,7 @@ public class RestClientTest {
}
 
@Test
-   public void c03_requestExecutor() throws RestCallException {
+   public void c03_miscellaneous_requestExecutor() throws 
RestCallException {
AtomicBoolean b1 = new AtomicBoolean();
MockRestClient
.create(A.class)
@@ -1216,7 +1217,7 @@ public class RestClientTest {
}
 
@Test
-   public void c04_defaultHeaders() throws RestCallException {
+   public void c04_miscellaneous_defaultHeaders() throws RestCallException 
{
MockRestClient
.create(A.class)
.simpleJson()
@@ -1228,7 +1229,7 @@ public class RestClientTest {
}
 
@Test
-   public void c05_miscellaneous() {
+   public void c05_miscellaneous_httpClientBuilderMethods() {
RestClient.create()
.disableRedirectHandling()
.redirectStrategy(DefaultRedirectStrategy.INSTANCE)
@@ -1272,6 +1273,30 @@ public class RestClientTest {
.evictIdleConnections(1, TimeUnit.DAYS);
}
 
+   @SuppressWarnings("deprecation")
+   @Test
+   public void c06_miscellaneous_unusedHttpClientMethods() {
+   RestClient rc = RestClient
+   .create()
+   .build();
+
+   try {
+   assertNotNull(rc.getParams());
+   } catch (UnsupportedOperationException e) {}
+   assertNotNull(rc.getConnectionManager());
+   }
+
+   @Test
+   public void c07_miscellaneous_executeHttpUriRequest() throws Exception {
+   HttpGet x = new HttpGet("http://localhost/bean;);
+   x.addHeader("Accept", "text/json+simple");
+   HttpResponse res = MockRestClient
+   

[juneau] branch master updated: RestClient tests.

2020-06-16 Thread jamesbognar
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 4146521  RestClient tests.
4146521 is described below

commit 41465213e58b7a02f2a36cc670654a599a827dc3
Author: JamesBognar 
AuthorDate: Tue Jun 16 16:52:37 2020 -0400

RestClient tests.
---
 .../org/apache/juneau/utils/StringUtilsTest.java   |  31 
 .../juneau/assertions/FluentStringAssertion.java   |  73 +++--
 .../org/apache/juneau/internal/StringUtils.java|  48 ++
 .../apache/juneau/rest/client2/RestClientTest.java | 158 ++--
 .../org/apache/juneau/rest/client2/RestClient.java |  34 -
 .../juneau/rest/client2/RestClientBuilder.java |  39 +
 .../apache/juneau/rest/client2/RestResponse.java   |   4 +-
 .../org/apache/juneau/rest/mock2/MockConsole.java  | 164 +
 .../org/apache/juneau/rest/mock2/MockLogger.java   | 147 --
 9 files changed, 629 insertions(+), 69 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java
index 7c1cf3a..db0980a 100755
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java
@@ -1034,4 +1034,35 @@ public class StringUtilsTest {
assertEquals("foo%7Bbar%7Dbaz", fixUrl("foo{bar}baz"));
assertEquals("%7Dfoo%7Bbar%7Dbaz%7B", fixUrl("}foo{bar}baz{"));
}
+
+   
//
+   // diffPosition(String,String)
+   
//
+   @Test
+   public void testDiffPosition() throws Exception {
+   assertEquals(-1, diffPosition("a", "a"));
+   assertEquals(-1, diffPosition(null, null));
+   assertEquals(0, diffPosition("a", "b"));
+   assertEquals(1, diffPosition("aa", "ab"));
+   assertEquals(1, diffPosition("aaa", "ab"));
+   assertEquals(1, diffPosition("aa", "abb"));
+   assertEquals(0, diffPosition("a", null));
+   assertEquals(0, diffPosition(null, "b"));
+   }
+
+   
//
+   // diffPositionIc(String,String)
+   
//
+   @Test
+   public void testDiffPositionIc() throws Exception {
+   assertEquals(-1, diffPositionIc("a", "a"));
+   assertEquals(-1, diffPositionIc("a", "A"));
+   assertEquals(-1, diffPositionIc(null, null));
+   assertEquals(0, diffPositionIc("a", "b"));
+   assertEquals(1, diffPositionIc("aa", "Ab"));
+   assertEquals(1, diffPositionIc("aaa", "Ab"));
+   assertEquals(1, diffPositionIc("aa", "Abb"));
+   assertEquals(0, diffPositionIc("a", null));
+   assertEquals(0, diffPositionIc(null, "b"));
+   }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
index 2b13f4f..d359bd5 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
@@ -28,7 +28,7 @@ import org.apache.juneau.internal.*;
  * client
  * .get(URL)
  * .run()
- * .assertBody().equals("OK");
+ * .assertBody().is("OK");
  * 
  * @param  The return type.
  */
@@ -67,13 +67,40 @@ public class FluentStringAssertion extends 
FluentAssertion {
/**
 * Asserts that the text equals the specified value.
 *
-* @param value The value to check against.
+* Example:
+* 
+*  // Validates the response body of an HTTP call is the text 
"OK".
+*  client
+*  .get(URL)
+*  .run()
+*  .assertBody().e

[juneau] branch master updated: RestClient tests.

2020-06-15 Thread jamesbognar
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 db31683  RestClient tests.
db31683 is described below

commit db316836b999775f94bd56e307a1a10341978f5d
Author: JamesBognar 
AuthorDate: Mon Jun 15 20:11:18 2020 -0400

RestClient tests.
---
 .../remote/RrpcInterfaceMeta.java} |  38 +-
 .../remote/RrpcInterfaceMethodMeta.java}   |   8 +-
 .../org/apache/juneau/remote/RemoteInterface.java  |   5 +
 .../apache/juneau/rest/client2/RemotesTest.java| 512 ++---
 ...erfaceProxyTest.java => RrpcInterfaceTest.java} |   6 +-
 .../org/apache/juneau/rest/client/RestClient.java  |   6 +-
 .../org/apache/juneau/rest/client2/RestClient.java | 259 +--
 .../java/org/apache/juneau/rest/RestContext.java   |   7 +-
 .../org/apache/juneau/rest/RestMethodContext.java  |  18 +-
 .../juneau/rest/RestMethodContextBuilder.java  |  12 +
 .../apache/juneau/rest/annotation/RestMethod.java  |   4 +-
 .../org/apache/juneau/rest/remote/RrpcServlet.java |  18 +-
 12 files changed, 652 insertions(+), 241 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/remote/RemoteInterfaceMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMeta.java
similarity index 77%
rename from 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/remote/RemoteInterfaceMeta.java
rename to 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMeta.java
index f2d0f4e..de5fa05 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/remote/RemoteInterfaceMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMeta.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.remote;
+package org.apache.juneau.http.remote;
 
 import static org.apache.juneau.internal.StringUtils.*;
 import java.lang.reflect.*;
@@ -18,21 +18,22 @@ import java.util.*;
 
 import org.apache.juneau.collections.*;
 import org.apache.juneau.reflect.*;
+import org.apache.juneau.remote.*;
 
 /**
  * Contains the meta-data about a remote proxy REST interface.
  *
  * 
- * Captures the information in {@link RemoteInterface @RemoteInterface} 
annotations for caching and reuse.
+ * Captures the information in {@link Remote @Remote} annotations for caching 
and reuse.
  *
  * 
  * {@doc juneau-rest-server.restRPC}
  * 
  */
-public class RemoteInterfaceMeta {
+public class RrpcInterfaceMeta {
 
-   private final Map methods;
-   private final Map methodsByPath;
+   private final Map methods;
+   private final Map methodsByPath;
private final String path;
private final Class c;
 
@@ -40,28 +41,33 @@ public class RemoteInterfaceMeta {
 * Constructor.
 *
 * @param c
-*  The interface class annotated with a {@link RemoteInterface 
@RemoteInterface} annotation.
+*  The interface class annotated with a {@link Remote @Remote} 
annotation.
 *  Note that the annotations are optional.
 * @param uri
 *  The absolute URL of the remote REST interface that implements 
this proxy interface.
 *  This is only used on the client side.
 */
-   public RemoteInterfaceMeta(Class c, String uri) {
+   @SuppressWarnings("deprecation")
+   public RrpcInterfaceMeta(Class c, String uri) {
this.c = c;
String path = "";
ClassInfo ci = ClassInfo.of(c);
-   List rr = 
ci.getAnnotations(RemoteInterface.class);
-   for (RemoteInterface r : rr)
+
+   for (RemoteInterface r : 
ci.getAnnotations(RemoteInterface.class))
+   if (! r.path().isEmpty())
+   path = trimSlashes(r.path());
+
+   for (Remote r : ci.getAnnotations(Remote.class))
if (! r.path().isEmpty())
path = trimSlashes(r.path());
 
-   AMap methods = AMap.of();
+   AMap methods = AMap.of();
for (MethodInfo m : ci.getPublicMethods())
if (m.isPublic())
-   methods.put(m.inner(), new 
RemoteInterfaceMethod(uri, m.inner()));
+   methods.put(m.inner(), new 
Rrp

[juneau] branch master updated: Throwables not always thrown from @Remote methods.

2020-06-15 Thread jamesbognar
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 b6bed70  Throwables not always thrown from @Remote methods.
b6bed70 is described below

commit b6bed7012babe1ec941efb9da4ce7420f335dd3e
Author: JamesBognar 
AuthorDate: Mon Jun 15 12:43:24 2020 -0400

Throwables not always thrown from @Remote methods.
---
 .../org/apache/juneau/internal/ThrowableUtils.java |  32 
 .../rest/test/client/ThirdPartyProxyTest.java  |   6 +-
 .../juneau/rest/client2/InterfaceProxyTest.java|   4 +-
 .../apache/juneau/rest/client2/RemotesTest.java|  64 +++
 .../juneau/rest/client2/RestCallException.java |  64 ++-
 .../org/apache/juneau/rest/client2/RestClient.java | 209 -
 6 files changed, 203 insertions(+), 176 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ThrowableUtils.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ThrowableUtils.java
index ac7bc4b..227c8f3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ThrowableUtils.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ThrowableUtils.java
@@ -15,6 +15,7 @@ package org.apache.juneau.internal;
 import java.text.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.reflect.*;
 
 /**
  * Various utility methods for creating and working with throwables.
@@ -117,4 +118,35 @@ public class ThrowableUtils {
}
return null;
}
+
+   /**
+* Given a list of available throwable types, attempts to create and 
throw the exception based on name.
+*
+* @param name The exception name.  Can be a simple name or 
fully-qualified.
+* @param message The exception message passed to the exception 
constructor.
+* @param throwables The list of available throwable classes to choose 
from.
+* @throws Throwable The thrown exception if it was possible to create.
+*/
+   public static void throwException(String name, String message, 
Class...throwables) throws Throwable {
+   if (name != null)
+   for (Class t : throwables)
+   if (t.getName().endsWith(name))
+   doThrow(t, message);
+   }
+
+   private static void doThrow(Class t, String msg) throws Throwable {
+   ConstructorInfo c = null;
+   ClassInfo ci = ClassInfo.of(t);
+   if (msg != null) {
+   c = ci.getPublicConstructor(String.class);
+   if (c != null)
+   throw c.invoke(msg);
+   c = ci.getPublicConstructor(Object.class);
+   if (c != null)
+   throw c.invoke(msg);
+   }
+   c = ci.getPublicConstructor();
+   if (c != null)
+   throw c.invoke();
+   }
 }
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java
index 2b65e84..bd7053a 100644
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java
+++ 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java
@@ -66,7 +66,7 @@ public class ThirdPartyProxyTest extends RestTestcase {
public ThirdPartyProxyTest(String label, Serializer serializer, Parser 
parser) {
proxy = getCached(label, ThirdPartyProxy.class);
if (proxy == null) {
-   this.proxy = getClient(label, serializer, 
parser).builder().partSerializer(UonSerializer.DEFAULT.builder().addBeanTypes().addRootType().build()).build().getRemote(ThirdPartyProxy.class,
 null, serializer, parser);
+   this.proxy = getClient(label, serializer, 
parser).builder().ignoreErrors().partSerializer(UonSerializer.DEFAULT.builder().addBeanTypes().addRootType().build()).build().getRemote(ThirdPartyProxy.class,
 null, serializer, parser);
cache(label, proxy);
}
}
@@ -2352,7 +2352,7 @@ public class ThirdPartyProxyTest extends RestTestcase {
// Various primitives
 
@RemoteMethod(method="POST", path="/setInt")
-   void setInt(@Body int x);
+   void setInt(@Body int x) throws AssertionError;
 
@RemoteMethod(method="POST", path="/setInteger")
void

[juneau] branch master updated: RestClient tests.

2020-06-13 Thread jamesbognar
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 10fbdc8  RestClient tests.
10fbdc8 is described below

commit 10fbdc8f01a5fced232261d7ee6acf320226cd3a
Author: JamesBognar 
AuthorDate: Sat Jun 13 17:03:10 2020 -0400

RestClient tests.
---
 .../org/apache/juneau/reflect/ConstructorInfo.java | 10 +++
 .../org/apache/juneau/reflect/ExecutableInfo.java  |  5 ++
 .../java/org/apache/juneau/reflect/MethodInfo.java | 10 +++
 .../main/ConfigurablePropertyCodeGenerator.java|  5 +-
 .../juneau/rest/client2/InterfaceProxyTest.java|  4 +-
 .../apache/juneau/rest/client2/RemotesTest.java| 67 --
 .../juneau/rest/client2/RequestBeanProxyTest.java  | 50 ++---
 .../org/apache/juneau/rest/client2/RestClient.java |  8 +--
 .../apache/juneau/rest/mock2/MockRestClient.java   | 82 +-
 .../juneau/rest/mock2/MockRestClientBuilder.java   |  1 -
 .../org/apache/juneau/rest/StatusCodesTest.java|  6 +-
 .../rest/annotation/RestMethodGuardsTest.java  |  2 +-
 .../rest/annotation/RestResourceLoggingTest.java   |  2 +-
 .../annotation/RestResourceSerializersTest.java|  2 +-
 .../annotation/RestResourceStaticFilesTest.java|  2 +-
 .../rest/annotation2/BodyAnnotationTest.java   | 10 +--
 .../rest/annotation2/PathAnnotationTest.java   | 14 ++--
 .../rest/annotation2/ResponseAnnotationTest.java   |  6 +-
 .../rest/annotation2/RestResourceParsersTest.java  |  2 +-
 .../juneau/rest/annotation2/RoleGuardTest.java | 76 ++--
 .../apache/juneau/rest/exceptions/BasicTest.java   | 14 ++--
 .../juneau/rest/headers/AcceptCharsetTest.java |  2 +-
 .../juneau/rest/headers/AcceptEncodingTest.java|  4 +-
 .../org/apache/juneau/rest/headers/AcceptTest.java | 10 +--
 .../juneau/rest/headers/ContentEncodingTest.java   |  2 +-
 .../juneau/rest/headers/ContentTypeTest.java   |  8 +--
 .../apache/juneau/rest/responses/BasicTest.java|  4 +-
 27 files changed, 300 insertions(+), 108 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ConstructorInfo.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ConstructorInfo.java
index 8b93b7b..367a18b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ConstructorInfo.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ConstructorInfo.java
@@ -175,4 +175,14 @@ public final class ConstructorInfo extends ExecutableInfo 
implements Comparable<
}
return i;
}
+
+   // 
+
+   @Override /* GENERATED - ExecutableInfo */
+   public ConstructorInfo accessible() {
+   super.accessible();
+   return this;
+   }
+
+   // 
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ExecutableInfo.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ExecutableInfo.java
index b60ac3e..a8d24af 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ExecutableInfo.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ExecutableInfo.java
@@ -688,6 +688,7 @@ public abstract class ExecutableInfo {
 *
 * @return This object (for method chaining).
 */
+   @FluentSetter
public ExecutableInfo accessible() {
setAccessible();
return this;
@@ -827,4 +828,8 @@ public abstract class ExecutableInfo {
public String toString() {
return getShortName();
}
+
+   // 
+
+   // 
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
index 96635cc..c2bfe43 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
@@ -580,4 +580,14 @@ public final class MethodInfo extends ExecutableInfo 
implements Comparable
+
+   @Override /* GENERATED - ExecutableInfo */
+   public MethodInfo accessible() {
+   super.accessible();
+   return this;
+   }
+
+   // 
 }
diff --git 
a/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java 
b/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
index 9781e10..9e96693 100644
--- 
a/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++ 
b/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
@@ -168,7 +168,10 @@ public class ConfigurablePropertyCodeGenera

[juneau] branch master updated: RestClient tests.

2020-06-13 Thread jamesbognar
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 31dceb4  RestClient tests.
31dceb4 is described below

commit 31dceb4882e1a576efb61801c16dfabd7ecac66c
Author: JamesBognar 
AuthorDate: Sat Jun 13 14:55:01 2020 -0400

RestClient tests.
---
 .../apache/juneau/http/remote/RemoteMethod.java|  5 ++-
 .../juneau/httppart/bean/RequestBeanMeta.java  | 10 ++---
 .../09.juneau-rest-client/01.RestProxies.html  | 24 ++--
 .../apache/juneau/rest/client2/RemotesTest.java| 44 ++
 .../org/apache/juneau/rest/client/RestClient.java  | 10 +
 .../rest/client/remote/RemoteMethodMeta.java   | 25 ++--
 .../org/apache/juneau/rest/client2/RestClient.java | 13 +--
 .../apache/juneau/rest/mock2/MockRestClient.java   |  1 -
 8 files changed, 78 insertions(+), 54 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteMethod.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteMethod.java
index 064489e..5b06fa5 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteMethod.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteMethod.java
@@ -21,7 +21,10 @@ import java.lang.annotation.*;
 import org.apache.juneau.http.annotation.*;
 
 /**
- * Annotation applied to Java methods on REST proxy.
+ * Annotation applied to Java methods on REST proxy interface classes.
+ *
+ * 
+ * Note that this annotation is optional if you do not need to override any of 
the values.
  *
  * 
  * {@doc juneau-rest-client.RestProxies}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
index 395724d..e176cc7 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
@@ -102,11 +102,7 @@ public class RequestBeanMeta {
if (m.isPublic()) {
assertNoInvalidAnnotations(m, 
ResponseHeader.class, ResponseBody.class, ResponseStatus.class);
String n = m.getSimpleName();
-   if (m.hasAnnotation(Body.class)) {
-   assertNoArgs(m, Body.class);
-   assertReturnNotVoid(m, 
Body.class);
-   properties.put(n, 
RequestBeanPropertyMeta.create(BODY, Body.class, m));
-   } else if 
(m.hasAnnotation(Header.class)) {
+   if (m.hasAnnotation(Header.class)) {
assertNoArgs(m, Header.class);
assertReturnNotVoid(m, 
Header.class);
properties.put(n, 
RequestBeanPropertyMeta.create(HEADER, Header.class, m));
@@ -122,6 +118,10 @@ public class RequestBeanMeta {
assertNoArgs(m, Path.class);
assertReturnNotVoid(m, 
Path.class);
properties.put(n, 
RequestBeanPropertyMeta.create(PATH, Path.class, m));
+   } else if (m.hasAnnotation(Body.class)) 
{
+   assertNoArgs(m, Body.class);
+   assertReturnNotVoid(m, 
Body.class);
+   properties.put(n, 
RequestBeanPropertyMeta.create(BODY, Body.class, m));
}
}
}
diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies.html 
b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies.html
index 5e84350..42279c2 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies.html
@@ -13,7 +13,8 @@
  
***/
  -->
 
-REST Proxies
+{8.1.4-updated} 
+Remote REST Proxies
 
 
The juneau-rest-client library can also be used to define 
interface proxies against 3rd-party REST interfaces.
@@ -38,8 +39,8 @@ REST Proxies
 
{@link oaj.http.remote}

-   {@link oaj.http.remote.Rem

[juneau] branch master updated: RestClient tests

2020-06-13 Thread jamesbognar
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 64bde2a  RestClient tests
64bde2a is described below

commit 64bde2ae99748170c2f6e4daa5d459da2963bd52
Author: JamesBognar 
AuthorDate: Sat Jun 13 12:57:59 2020 -0400

RestClient tests
---
 .../org/apache/juneau/rest/test/MockRestTest.java  |  58 
 .../java/org/apache/juneau/rest/test/Root.java |   1 -
 .../org/apache/juneau/rest/test/_TestSuite.java|   6 -
 .../rest/test/client/RestClientResource.java   |  38 -
 .../juneau/rest/test/client/RestClientTest.java| 157 -
 juneau-rest/juneau-rest-client-utest/pom.xml   |   5 +
 .../juneau/rest/client2}/ClientFuturesTest.java|   4 +-
 .../apache/juneau/rest/client2}/FormDataTest.java  |   6 +-
 .../juneau/rest/client2}/InterfaceProxyTest.java   |   2 +-
 .../juneau/rest/client2}/RequestBeanProxyTest.java |   2 +-
 .../apache/juneau/rest/client2/RestClientTest.java |  57 +++-
 .../rest/client2/BasicRestCallInterceptor.java |  11 --
 .../juneau/rest/client2/RestCallInterceptor.java   |   4 +-
 .../org/apache/juneau/rest/client2/RestClient.java |  43 --
 .../juneau/rest/client2/RestClientBuilder.java |  51 +--
 .../apache/juneau/rest/client2/RestRequest.java|  11 +-
 .../apache/juneau/rest/client2/RestResponse.java   |   6 +-
 .../juneau/rest/mock2/MockRestClientBuilder.java   |   5 +-
 18 files changed, 139 insertions(+), 328 deletions(-)

diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/MockRestTest.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/MockRestTest.java
deleted file mode 100644
index 58f465b..000
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/MockRestTest.java
+++ /dev/null
@@ -1,58 +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.rest.test;
-
-import static org.apache.juneau.http.HttpMethodName.*;
-import static org.junit.Assert.*;
-import static org.junit.runners.MethodSorters.*;
-
-import org.apache.juneau.http.annotation.Body;
-import org.apache.juneau.json.*;
-import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.client2.*;
-import org.apache.juneau.rest.mock2.*;
-import org.junit.*;
-
-@FixMethodOrder(NAME_ASCENDING)
-public class MockRestTest {
-
-   
//=
-   // Basic tests
-   
//=
-
-   @Rest
-   public static class A {
-   @RestMethod(name=PUT, path="/a01")
-   public String a01(@Body String body) {
-   return body;
-   }
-
-   @RestMethod(name=PUT, path="/a02", 
serializers=JsonSerializer.class, parsers=JsonParser.class)
-   public String a02(@Body String body) {
-   return body;
-   }
-   }
-
-   @Test
-   public void a01() throws Exception {
-   RestClient rc = MockRestClient.build(A.class);
-   asse

[juneau] branch master updated: RestClient tests.

2020-06-11 Thread jamesbognar
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 3608a7e  RestClient tests.
3608a7e is described below

commit 3608a7e3dd13f9d1395c3ad259bb38b6460de047
Author: JamesBognar 
AuthorDate: Thu Jun 11 18:16:02 2020 -0400

RestClient tests.
---
 .../apache/juneau/rest/client2/RestClientTest.java | 67 +++-
 .../org/apache/juneau/rest/client2/RestClient.java | 90 ++
 .../apache/juneau/rest/client2/RestRequest.java| 81 ++-
 .../apache/juneau/rest/client2/RestResponse.java   | 34 
 .../org/apache/juneau/rest/mock2/MockLogger.java   | 44 ---
 .../apache/juneau/rest/mock2/MockRestClient.java   |  5 --
 6 files changed, 216 insertions(+), 105 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index 9b55f60..59f9a89 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -22,6 +22,7 @@ import java.net.*;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.concurrent.atomic.*;
+import java.util.function.*;
 import java.util.logging.*;
 
 import org.apache.http.*;
@@ -572,6 +573,9 @@ public class RestClientTest {
 
@Test
public void a23_basicCalls_formPost_exhaustiveBodyTypes() throws 
Exception {
+   Supplier
+   s1 = () -> new StringReader("f=1"),
+   s2 = () -> new ByteArrayInputStream("f=1".getBytes());
 
List bodies = AList.of(
/*[ 0]*/ bean,
@@ -587,7 +591,9 @@ public class RestClientTest {
/*[10]*/ 
StreamResource.create().contents("f=1").build(),
/*[11]*/ StreamResource.create().contents("f=1"),
/*[12]*/ 
StreamResource.create().contents("f=1").mediaType("application/x-www-form-urlencoded").build(),
-   /*[13]*/ 
StreamResource.create().contents("f=1").mediaType("application/x-www-form-urlencoded")
+   /*[13]*/ 
StreamResource.create().contents("f=1").mediaType("application/x-www-form-urlencoded"),
+   /*[14]*/ s1,
+   /*[15]*/ s2
);
 
for (int i = 0; i < bodies.size(); i++) {
@@ -841,6 +847,7 @@ public class RestClientTest {
MockRestClient
.create(A.class)
.simpleJson()
+   .logRequests(DetailLevel.SIMPLE, Level.SEVERE)
.logToConsole()
.build()
.post("/bean", bean)
@@ -879,6 +886,56 @@ public class RestClientTest {
);
}
 
+   public static class B02a extends BasicRestCallInterceptor {
+   @Override /* RestCallInterceptor */
+   public void onConnect(RestRequest req, RestResponse res) throws 
Exception {
+   req.log(Level.WARNING, "Foo");
+   req.log(Level.WARNING, new RuntimeException(), "Foo");
+   res.log(Level.WARNING, "Foo");
+   res.log(Level.WARNING, new RuntimeException(), "Foo");
+   }
+   }
+
+   @SuppressWarnings("unchecked")
+   @Test
+   public void b02a_loggingOther() throws Exception {
+   MockLogger ml = new MockLogger();
+
+   MockRestClient
+   .create(A.class)
+   .simpleJson()
+   .logger(ml)
+   .interceptors(B02a.class)
+   .build()
+   .post("/bean", bean)
+   .complete();
+
+   ml.assertCount(4);
+   }
+
+   public static class B03 extends RestClient {
+   private static boolean METHOD_CALLED;
+   public B03(PropertyStore ps) {
+   super(ps);
+   }
+
+   @Override
+   protected RestRequest createRequest(java.net.URI uri, String 
method, boolean hasBody) throws RestCallException {
+   METHOD_CALLED = true;
+   return super.createRequest(uri, method, hasBody);
+   }
+   }
+
+   @Test
+   public void b03_overrideCreateRequest() throws Excepti

[juneau] branch master updated: RestClient tests

2020-06-11 Thread jamesbognar
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 8adc426  RestClient tests
8adc426 is described below

commit 8adc426b01904a976b4d32dd6799e158fe0862a5
Author: JamesBognar 
AuthorDate: Thu Jun 11 10:02:50 2020 -0400

RestClient tests
---
 .../apache/juneau/assertions/FluentAssertion.java  | 11 ++---
 .../juneau/assertions/FluentDateAssertion.java |  4 ++--
 .../juneau/assertions/FluentIntegerAssertion.java  |  4 ++--
 .../juneau/assertions/FluentLongAssertion.java |  4 ++--
 .../juneau/assertions/FluentStringAssertion.java   |  4 ++--
 .../org/apache/juneau/internal/FluentSetters.java  |  5 
 .../main/ConfigurablePropertyCodeGenerator.java| 15 ++--
 .../apache/juneau/rest/client2/RestClientTest.java |  5 ++--
 .../juneau/rest/client2/RestClientBuilder.java | 28 +-
 .../juneau/rest/mock2/MockRestClientBuilder.java   | 18 --
 .../org/apache/juneau/rest/RestContextBuilder.java |  1 +
 11 files changed, 39 insertions(+), 60 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentAssertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentAssertion.java
index cb13360..c436681 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentAssertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentAssertion.java
@@ -12,6 +12,8 @@
 // 
***
 package org.apache.juneau.assertions;
 
+import static org.apache.juneau.internal.StringUtils.*;
+
 import org.apache.juneau.*;
 import org.apache.juneau.internal.*;
 
@@ -24,6 +26,7 @@ public abstract class FluentAssertion {
 
private final R returns;
private String msg;
+   private Object[] msgArgs;
private boolean stdout, stderr;
 
/**
@@ -51,11 +54,13 @@ public abstract class FluentAssertion {
 * String can contain "{msg}" to represent the original 
message.
 *
 * @param msg The assertion failure message.
+* @param args Optional message arguments.
 * @return This object (for method chaining).
 */
@FluentSetter
-   public FluentAssertion msg(String msg) {
+   public FluentAssertion msg(String msg, Object...args) {
this.msg = msg;
+   this.msgArgs = args;
return this;
}
 
@@ -89,10 +94,10 @@ public abstract class FluentAssertion {
 * @return A new {@link BasicAssertionError}.
 */
protected BasicAssertionError error(String msg, Object...args) {
-   msg = StringUtils.format(msg, args);
+   msg = format(msg, args);
if (this.msg != null) {
if (this.msg.contains("{msg}"))
-   msg = this.msg.replace("{msg}", msg);
+   msg = format(this.msg.replace("{msg}", msg), 
msgArgs);
else
msg = this.msg;
}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentDateAssertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentDateAssertion.java
index 27cf562..86540fd 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentDateAssertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentDateAssertion.java
@@ -207,8 +207,8 @@ public class FluentDateAssertion extends 
FluentAssertion {
// 
 
@Override /* GENERATED - FluentAssertion */
-   public FluentDateAssertion msg(String msg) {
-   super.msg(msg);
+   public FluentDateAssertion msg(String msg, Object...args) {
+   super.msg(msg, args);
return this;
}
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentIntegerAssertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentIntegerAssertion.java
index f87facc..f1a5b9b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentIntegerAssertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentIntegerAssertion.java
@@ -329,8 +329,8 @@ public class FluentIntegerAssertion extends 
FluentAssertion {
// 
 
@Override /* GENERATED - FluentAssertion */
-   public FluentIntegerAssertion msg(String msg) {
-   super.msg(msg);
+   public FluentIntegerAssertion msg(String msg, Object

[juneau] branch master updated: RestClient tests

2020-06-11 Thread jamesbognar
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 6152565  RestClient tests
6152565 is described below

commit 61525655c23fd7c43fa001961ad1fe8280c4e439
Author: JamesBognar 
AuthorDate: Thu Jun 11 09:41:03 2020 -0400

RestClient tests
---
 .../apache/juneau/assertions/FluentAssertion.java  |  64 
 .../juneau/assertions/FluentDateAssertion.java |  39 -
 .../juneau/assertions/FluentIntegerAssertion.java  |  47 --
 .../juneau/assertions/FluentLongAssertion.java |  47 --
 .../juneau/assertions/FluentStringAssertion.java   | 166 +++--
 .../FluentSetters.java}|  35 ++---
 .../main/ConfigurablePropertyCodeGenerator.java|  16 +-
 .../apache/juneau/rest/client2/RestClientTest.java |  74 ++---
 8 files changed, 333 insertions(+), 155 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentAssertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentAssertion.java
index 515bd7a..cb13360 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentAssertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentAssertion.java
@@ -12,6 +12,9 @@
 // 
***
 package org.apache.juneau.assertions;
 
+import org.apache.juneau.*;
+import org.apache.juneau.internal.*;
+
 /**
  * Parent class of all fluent assertion calls.
  *
@@ -20,6 +23,8 @@ package org.apache.juneau.assertions;
 public abstract class FluentAssertion {
 
private final R returns;
+   private String msg;
+   private boolean stdout, stderr;
 
/**
 * Constructor.
@@ -38,4 +43,63 @@ public abstract class FluentAssertion {
protected R returns() {
return returns;
}
+
+   /**
+* Allows to to specify the assertion failure message.
+*
+* 
+* String can contain "{msg}" to represent the original 
message.
+*
+* @param msg The assertion failure message.
+* @return This object (for method chaining).
+*/
+   @FluentSetter
+   public FluentAssertion msg(String msg) {
+   this.msg = msg;
+   return this;
+   }
+
+   /**
+* If an error occurs, send the error message to STDOUT.
+*
+* @return This object (for method chaining).
+*/
+   @FluentSetter
+   public FluentAssertion stdout() {
+   this.stdout = true;
+   return this;
+   }
+
+   /**
+* If an error occurs, send the error message to STDERR.
+*
+* @return This object (for method chaining).
+*/
+   @FluentSetter
+   public FluentAssertion stderr() {
+   this.stderr = true;
+   return this;
+   }
+
+   /**
+* Creates a new {@link BasicAssertionError}.
+*
+* @param msg The message.
+* @param args The message arguments.
+* @return A new {@link BasicAssertionError}.
+*/
+   protected BasicAssertionError error(String msg, Object...args) {
+   msg = StringUtils.format(msg, args);
+   if (this.msg != null) {
+   if (this.msg.contains("{msg}"))
+   msg = this.msg.replace("{msg}", msg);
+   else
+   msg = this.msg;
+   }
+   if (stdout)
+   System.out.println(msg);
+   if (stderr)
+   System.err.println(msg);
+   return new BasicAssertionError(msg);
+   }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentDateAssertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentDateAssertion.java
index 2a84ddc..27cf562 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentDateAssertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentDateAssertion.java
@@ -16,7 +16,7 @@ package org.apache.juneau.assertions;
 import java.util.*;
 import java.util.function.*;
 
-import org.apache.juneau.*;
+import org.apache.juneau.internal.*;
 
 /**
  * Used for fluent assertion calls.
@@ -31,6 +31,7 @@ import org.apache.juneau.*;
  * 
  * @param  The return type.
  */
+@FluentSetters(returns="FluentDateAssertion")
 public class FluentDateAssertion extends FluentAssertion {
 
private final Date value;
@@ -55,7 +56,7 @@ public class Flue

[juneau] branch master updated: RestClient tests.

2020-06-10 Thread jamesbognar
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 ef35e32  RestClient tests.
ef35e32 is described below

commit ef35e32afedbfd9cbb2db2903823fb81da7431ce
Author: JamesBognar 
AuthorDate: Wed Jun 10 17:53:57 2020 -0400

RestClient tests.
---
 .../apache/juneau/internal/StateMachineState.java  |  13 +
 .../org/apache/juneau/rest/test/_TestSuite.java|   1 -
 .../juneau/rest/client2}/CallbackStringsTest.java  |  17 +-
 .../apache/juneau/rest/client2/RestClientTest.java | 457 ++---
 .../org/apache/juneau/rest/client2/RestClient.java | 175 
 .../juneau/rest/client2/RestClientBuilder.java |  91 
 .../apache/juneau/rest/client2/RestRequest.java| 136 +-
 .../apache/juneau/rest/mock2/MockRestClient.java   |   1 +
 .../juneau/rest/mock2/MockRestClientBuilder.java   |  18 +
 9 files changed, 760 insertions(+), 149 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StateMachineState.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StateMachineState.java
index 9232bff..755a0ef 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StateMachineState.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StateMachineState.java
@@ -18,4 +18,17 @@ package org.apache.juneau.internal;
 @SuppressWarnings("javadoc")
 public enum StateMachineState {
S01, S02, S03, S04, S05, S06, S07, S08, S09, S10, S11, S12, S13, S14, 
S15, S16, S17, S18, S19, S20;
+
+   /**
+* Returns true if the state is any one of the specified 
states.
+*
+* @param states The states to check.
+* @return true if the state is any one of the specified 
states.
+*/
+   public boolean isAny(StateMachineState...states) {
+   for (StateMachineState s : states)
+   if (this == s)
+   return true;
+   return false;
+   }
 }
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
index e1da651..f3ad721 100644
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
+++ 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
@@ -25,7 +25,6 @@ import org.junit.runners.Suite.*;
  */
 @RunWith(Suite.class)
 @SuiteClasses({
-   CallbackStringsTest.class,
ClientFuturesTest.class,
ConfigTest.class,
FormDataTest.class,
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/CallbackStringsTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/CallbackStringsTest.java
similarity index 88%
rename from 
juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/CallbackStringsTest.java
rename to 
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/CallbackStringsTest.java
index 4a520fe..6c43f28 100644
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/CallbackStringsTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/CallbackStringsTest.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.rest.test.client;
+package org.apache.juneau.rest.client2;
 
 import static org.apache.juneau.http.HttpMethodName.*;
 import static org.junit.Assert.*;
@@ -21,7 +21,6 @@ import java.util.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.rest.RestRequest;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.client2.*;
 import org.apache.juneau.rest.mock2.*;
 import org.junit.*;
 
@@ -53,7 +52,7 @@ public class CallbackStringsTest {
static RestClient a = MockRestClient.build(A.class);
 
@Test
-   public void a01() throws Exception {
+   public void a01_basicTests() throws Exception {
String r;
 
r = a.callback("GET /testCallback").run().getBody().asString();
@@ -74,4 +73,16 @@ public class CallbackStringsTest {
r = a.callb

[juneau] branch master updated: RestClient tests.

2020-06-09 Thread jamesbognar
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 c4716da  RestClient tests.
c4716da is described below

commit c4716dacea9003e03390f71f5a56f48f8ea18270
Author: JamesBognar 
AuthorDate: Tue Jun 9 19:32:14 2020 -0400

RestClient tests.
---
 .../main/java/org/apache/juneau/Streamable.java|   4 +-
 .../org/apache/juneau/http/StreamResource.java |   2 +-
 .../java/org/apache/juneau/utils/ZipFileList.java  |   2 +-
 .../main/ConfigurablePropertyCodeGenerator.java|   1 +
 .../juneau/rest/client2/EndToEndInterfaceTest.java |   4 +-
 .../apache/juneau/rest/client2/RestClientTest.java | 109 +
 .../org/apache/juneau/rest/client2/RestClient.java |  31 +-
 .../apache/juneau/rest/client2/RestRequest.java|   2 +-
 .../apache/juneau/rest/mock2/MockRestClient.java   |   4 +-
 9 files changed, 145 insertions(+), 14 deletions(-)

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 331a3fb..97a81d0 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
@@ -20,7 +20,7 @@ import org.apache.juneau.http.*;
  * Interface that identifies that an object can be serialized directly to an 
output stream.
  *
  * 
- * Instances must identify the media type of the content by implementing the 
{@link #getMediaType()} method.
+ * Instances must identify the media type of the content by implementing the 
{@link #getContentType()} method.
  */
 public interface Streamable {
 
@@ -37,5 +37,5 @@ public interface Streamable {
 *
 * @return The media type, or null if the media type is not 
known.
 */
-   MediaType getMediaType();
+   MediaType getContentType();
 }
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 8214f11..151bec6 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
@@ -237,7 +237,7 @@ public class StreamResource implements Streamable {
 
@ResponseHeader("Content-Type")
@Override /* Streamable */
-   public MediaType getMediaType() {
+   public MediaType getContentType() {
return mediaType;
}
 
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 9818545..575eb1e 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
@@ -40,7 +40,7 @@ public class ZipFileList extends 
LinkedList implements
 
@Header("Content-Type")
@Override /* Streamable */
-   public MediaType getMediaType() {
+   public MediaType getContentType() {
return MediaType.forString("application/zip");
}
 
diff --git 
a/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java 
b/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
index 8fbadb6..b2cbfa3 100644
--- 
a/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++ 
b/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
@@ -82,6 +82,7 @@ public class ConfigurablePropertyCodeGenerator {
RdfSerializerBuilder.class,
ReaderParserBuilder.class,
RestClientBuilder.class,
+   MockRestClientBuilder.class,
RestContextBuilder.class,
RestMethodContextBuilder.class,
SerializerBuilder.class,
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/EndToEndInterfaceTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/EndToEndInterfaceTest.java
index 0500a10..d20fc85 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/EndToEndInterfaceTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/EndToEndInterfaceTest.java
@@ -328,7 +328,7 @@ public class EndToEndInterfaceTest {
assertEquals("foo", IOUtils.read(r.getContents()));
assertEquals("foo", r.getHeaders().get("Foo"));
assertEquals("bar"

[juneau] branch master updated: RestClient tests.

2020-06-09 Thread jamesbognar
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 fe83c79  RestClient tests.
fe83c79 is described below

commit fe83c79e0dd613fc96dd6c3384efe8cc959b599b
Author: JamesBognar 
AuthorDate: Tue Jun 9 16:38:54 2020 -0400

RestClient tests.
---
 .../main/ConfigurablePropertyCodeGenerator.java|  1 +
 .../apache/juneau/rest/client2/RestClientTest.java | 57 +++---
 .../org/apache/juneau/rest/client2/RestClient.java | 50 +++
 .../apache/juneau/rest/mock2/MockRestClient.java   |  5 --
 .../juneau/rest/mock2/MockRestClientBuilder.java   | 54 
 5 files changed, 124 insertions(+), 43 deletions(-)

diff --git 
a/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java 
b/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
index fe462cd..8fbadb6 100644
--- 
a/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++ 
b/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
@@ -45,6 +45,7 @@ import org.apache.juneau.xml.*;
 public class ConfigurablePropertyCodeGenerator {
 
static Class[] classes = new Class[]{
+   BasicRuntimeException.class,
BeanContextBuilder.class,
BeanTraverseBuilder.class,
ConfigBuilder.class,
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index c3ad079..7741ffb 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -34,6 +34,7 @@ import org.apache.http.message.*;
 import org.apache.http.protocol.*;
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.annotation.URI;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.http.*;
 import org.apache.juneau.http.BasicNameValuePair;
@@ -303,12 +304,56 @@ public class RestClientTest {
@Test
public void a10_basicCalls_head() throws Exception {
MockRestClient
-   .create(A.class)
-   .simpleJson()
-   .build()
-   .head("/bean")
-   .run()
-   .assertBody().is("");
+   .create(A.class)
+   .simpleJson()
+   .build()
+   .head("/bean")
+   .run()
+   .assertBody().is("");
+   }
+
+   @Test
+   public void a11_basicCalls_formPost() throws Exception {
+   MockRestClient
+   .create(A.class)
+   .build()
+   .formPost("/bean", bean)
+   .accept("application/json+simple")
+   .run()
+   .assertBody().is("{f:1}");
+
+   MockRestClient
+   .create(A.class)
+   .build()
+   .formPost("/bean")
+   .body(bean)
+   .accept("application/json+simple")
+   .run()
+   .assertBody().is("{f:1}");
+
+   MockRestClient
+   .create(A.class)
+   .build()
+   .formPost("/bean", NameValuePairs.of("f","1"))
+   .accept("application/json+simple")
+   .run()
+   .assertBody().is("{f:1}");
+
+   MockRestClient
+   .create(A.class)
+   .build()
+   .formPost("/bean", BasicNameValuePair.of("f","1"))
+   .accept("application/json+simple")
+   .run()
+   .assertBody().is("{f:1}");
+
+   MockRestClient
+   .create(A.class)
+   .build()
+   .formPostPairs("/bean", "f", "1")
+   .accept("application/json+simple")
+   .run()
+   .assertBody().is("{f:1}");
}
 

//--
diff --git 
a/juneau-rest/juneau-rest

[juneau] branch master updated: RestClient tests.

2020-06-09 Thread jamesbognar
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 75f178d  RestClient tests.
75f178d is described below

commit 75f178d6505b86d7cfa8e610abf93a85b0ac0842
Author: JamesBognar 
AuthorDate: Tue Jun 9 16:07:21 2020 -0400

RestClient tests.
---
 .../java/org/apache/juneau/BasicException.java |  13 +
 .../juneau/BasicIllegalArgumentException.java  |  12 +
 .../org/apache/juneau/BasicRuntimeException.java   |  13 +
 .../main/java/org/apache/juneau/BeanRegistry.java  |   9 +-
 .../juneau/http/exception/HttpException.java   |   7 +-
 .../org/apache/juneau/internal/ThrowableUtils.java |  18 ++
 .../org/apache/juneau/reflect/ConstructorInfo.java |   2 +
 .../rest/client2/RestClientMarshallsTest.java  |   3 +-
 .../apache/juneau/rest/client2/RestClientTest.java | 338 +
 .../juneau/rest/client2/RestCallException.java |   9 +-
 .../org/apache/juneau/rest/client2/RestClient.java |  18 +-
 .../apache/juneau/rest/mock2/MockRestClient.java   |   7 +-
 .../apache/juneau/rest/HttpRuntimeException.java   |   3 +-
 .../java/org/apache/juneau/rest/RestContext.java   |   4 +-
 .../org/apache/juneau/rest/RestContextBuilder.java |   3 +-
 .../juneau/rest/RestMethodContextBuilder.java  |   2 +-
 .../org/apache/juneau/rest/RestParamDefaults.java  |   4 +-
 .../apache/juneau/rest/RestServletException.java   |  26 +-
 .../org/apache/juneau/rest/SwaggerGenerator.java   |   2 +-
 19 files changed, 455 insertions(+), 38 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicException.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicException.java
index 2c6fb28..4e0bc03 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicException.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicException.java
@@ -16,6 +16,8 @@ import static org.apache.juneau.internal.StringUtils.*;
 
 import java.text.*;
 
+import org.apache.juneau.internal.*;
+
 /**
  * Subclass of non-runtime exceptions that take in a message and zero or more 
arguments.
  */
@@ -53,4 +55,15 @@ public class BasicException extends Exception {
public BasicException(Throwable causedBy) {
this(causedBy, causedBy.getLocalizedMessage());
}
+
+   /**
+* Same as {@link #getCause()} but searches the throwable chain for an 
exception of the specified type.
+*
+* @param c The throwable type to search for.
+* @param  The throwable type to search for.
+* @return The exception, or null if not found.
+*/
+   public  T getCause(Class c) {
+   return ThrowableUtils.getCause(c, this);
+   }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicIllegalArgumentException.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicIllegalArgumentException.java
index 7f976a3..08b408d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicIllegalArgumentException.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicIllegalArgumentException.java
@@ -16,6 +16,7 @@ import static org.apache.juneau.internal.StringUtils.*;
 
 import java.text.*;
 
+import org.apache.juneau.internal.*;
 import org.apache.juneau.reflect.*;
 
 /**
@@ -57,4 +58,15 @@ public class BasicIllegalArgumentException extends 
IllegalArgumentException {
if (! m.argsOnlyOfType(args))
throw new BasicIllegalArgumentException("Invalid 
arguments passed to method {0}.  Only arguments of type {1} are allowed.", m, 
args);
}
+
+   /**
+* Same as {@link #getCause()} but searches the throwable chain for an 
exception of the specified type.
+*
+* @param c The throwable type to search for.
+* @param  The throwable type to search for.
+* @return The exception, or null if not found.
+*/
+   public  T getCause(Class c) {
+   return ThrowableUtils.getCause(c, this);
+   }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicRuntimeException.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicRuntimeException.java
index 24d5e6a..a649fe5 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicRuntimeException.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicRuntimeException.java
@@ -16,6 +16,8 @@ import static org.apache.juneau.internal.StringUtils.*;
 
 import java.text.*;
 
+import org.apache.juneau.internal.*;
+
 /**
  * Subclass of runtime exceptions that take in a message and zero or more 
arguments.
  */
@@ -60,4 +62,15 @@ public class BasicRuntimeException extends Runtim

[juneau] branch master updated: RestClient tests

2020-06-08 Thread jamesbognar
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 27d2497  RestClient tests
27d2497 is described below

commit 27d2497772822e269b3181b1654918d4a540074d
Author: JamesBognar 
AuthorDate: Mon Jun 8 19:54:23 2020 -0400

RestClient tests
---
 .../apache/juneau/rest/client2/RestClientMarshallsTest.java   |  3 +--
 .../java/org/apache/juneau/rest/mock2/MockRestClient.java |  8 ++--
 .../src/main/java/org/apache/juneau/rest/RestServlet.java | 11 ++-
 3 files changed, 17 insertions(+), 5 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientMarshallsTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientMarshallsTest.java
index 38327ea..9e91c3b 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientMarshallsTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientMarshallsTest.java
@@ -76,7 +76,7 @@ public class RestClientMarshallsTest {
private static RestClient a1h = 
MockRestClient.create(A.class).urlEnc().build();
private static RestClient a1i = 
MockRestClient.create(A.class).openApi().build();
private static RestClient a1j = 
MockRestClient.create(A.class).htmlDoc().build();
-   private static RestClient a1k = 
MockRestClient.create(A.class).htmlStrippedDoc().debug().build();
+   private static RestClient a1k = 
MockRestClient.create(A.class).htmlStrippedDoc().build();
 
@Test
public void a01_singleLanguages() throws Exception {
@@ -141,7 +141,6 @@ public class RestClientMarshallsTest {
.assertStatus().is(200)
.getBody().as(Bean.class).check();
a1k.post("/a01", bean)
-   .debug()
.header("X-Accept", "text/html")
.header("X-Content-Type", "text/html+stripped")
.run()
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
index 5275092..c9fd966 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
@@ -268,7 +268,8 @@ public class MockRestClient extends RestClient implements 
HttpClientConnection {
Class c = restBean instanceof Class ? 
(Class)restBean : restBean.getClass();
Map,RestContext> contexts = isDebug ? 
CONTEXTS_DEBUG : CONTEXTS_NORMAL;
if (! contexts.containsKey(c)) {
-   Object o = restBean instanceof Class ? 
((Class)restBean).newInstance() : restBean;
+   boolean isClass = restBean instanceof Class;
+   Object o = isClass ? 
((Class)restBean).newInstance() : restBean;
RestContextBuilder rcb = RestContext.create(o);
if (isDebug) {
rcb.debug(Enablement.TRUE);
@@ -276,7 +277,10 @@ public class MockRestClient extends RestClient implements 
HttpClientConnection {
}
RestContext rc = rcb.build();
if (o instanceof RestServlet) {
-   ((RestServlet)o).setContext(rc);
+   RestServlet rs = (RestServlet)o;
+   if (! rs.isInitialized())
+   rs.setContext(rc);
+   rc = rs.getContext();
} else {
rc.postInit();
}
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
index 9c9f401..1004d8f 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
@@ -106,6 +106,15 @@ public abstract class RestServlet extends HttpServlet 
implements RestCallHandler
}
 
/**
+* Returns true if this servlet has been initialized and 
{@link #getContext()} returns a value.
+*
+* @return true if this servlet ha

[juneau] branch master updated: RestClient tests

2020-06-08 Thread jamesbognar
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 39bd632  RestClient tests
39bd632 is described below

commit 39bd632c4715491b6f4f0d23c7296ada4a4d728c
Author: JamesBognar 
AuthorDate: Mon Jun 8 12:10:06 2020 -0400

RestClient tests
---
 .../juneau/rest/client2/RestCallInterceptor.java   |  25 -
 .../org/apache/juneau/rest/client2/RestClient.java | 122 -
 .../juneau/rest/client2/RestResponseBody.java  |   3 +
 .../juneau/rest/client2/RestResponseHeader.java|  14 ++-
 4 files changed, 158 insertions(+), 6 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallInterceptor.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallInterceptor.java
index 0241d01..fd26b3a 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallInterceptor.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallInterceptor.java
@@ -19,7 +19,28 @@ import org.apache.http.*;
  * listening for call lifecycle events.
  *
  * 
- * Useful if you want to prevent {@link RestCallException RestCallExceptions} 
from being thrown on error conditions.
+ * The {@link BasicRestCallInterceptor} is provided as an adapter class for 
implementing this interface.
+ *
+ * 
+ * Note that the {@link RestClient} class itself implements this interface so 
you can achieve the same results by
+ * overriding the methods on the client class as well.
+ *
+ * Example:
+ * 
+ * // Specialized client that adds a header to every request.
+ * public class MyRestClient extends RestClient {
+ * @Override
+ * public void onInit(RestRequest req) {
+ * req.header("Foo", "bar");
+ * }
+ * }
+ *
+ * // Instantiate the client.
+ * MyRestClient c = RestClient
+ * .create()
+ * .json()
+ * .build(MyRestClient.class);
+ * 
  *
  * 
  * {@link RestClient#RESTCLIENT_interceptors}
@@ -31,7 +52,7 @@ public interface RestCallInterceptor extends 
HttpRequestInterceptor, HttpRespons
 
/**
 * Called immediately after {@link RestRequest} object is created and 
all headers/query/form-data has been
-* set on the request from the client.
+* copied from the client to the request object.
 *
 * @param req The HTTP request object.
 * @throws Exception Any exception can be thrown.
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 dd71afc..4f9eca9 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
@@ -949,7 +949,7 @@ import org.apache.http.client.CookieStore;
  * 
  */
 @ConfigurableContext(nocache=true)
-public class RestClient extends BeanContext implements HttpClient, Closeable {
+public class RestClient extends BeanContext implements HttpClient, Closeable, 
RestCallHandler, RestCallInterceptor {
 

//---
// Configurable properties
@@ -2025,6 +2025,15 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
 * 
 * Subclasses can override this method to provide specialized handling.
 *
+* 
+* The behavior of this method can also be modified by specifying a 
different {@link RestCallHandler}.
+*
+* 
+*  {@link RestClient#RESTCLIENT_callHandler}
+*  {@link RestClientBuilder#callHandler(Class)}
+*  {@link 
RestClientBuilder#callHandler(RestCallHandler)}
+* 
+*
 * @param target The target host for the request.
 *  Implementations may accept null if they can still 
determine a route, for example to a default
 *  target or by inspecting the request.
@@ -2038,7 +2047,8 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
 * @throws IOException In case of a problem or the connection was 
aborted.
 * @throws ClientProtocolException In case of an http protocol error.
 */
-   protected HttpResponse execute(HttpHost target, HttpRequestBase 
request, HttpContext context) throws ClientProtocolException, IOException {
+   @Override /* RestCallHandler */
+   public HttpResponse execute(HttpHost target, HttpRequestBase request, 
HttpCon

[juneau] branch master updated: RestClient tests.

2020-06-06 Thread jamesbognar
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 3275cd9  RestClient tests.
3275cd9 is described below

commit 3275cd9b101873c1acdc82e1c51e046a4b283381
Author: JamesBognar 
AuthorDate: Sat Jun 6 11:42:31 2020 -0400

RestClient tests.
---
 .../juneau/assertions/FluentStringAssertion.java   |  31 +-
 .../rest/client2/RestClientMarshallsTest.java  |  14 +
 .../apache/juneau/rest/client2/RestClientTest.java | 434 ++---
 3 files changed, 410 insertions(+), 69 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
index 6653e99..d42386c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
@@ -12,6 +12,7 @@
 // 
***
 package org.apache.juneau.assertions;
 
+import static org.apache.juneau.internal.StringUtils.*;
 
 import java.util.function.*;
 import java.util.regex.*;
@@ -55,7 +56,7 @@ public class FluentStringAssertion extends 
FluentAssertion {
 * @throws AssertionError If assertion failed.
 */
public R equals(String value) throws AssertionError {
-   if (! StringUtils.isEquals(value, text)) {
+   if (! isEquals(value, text)) {
if (value != null && value.startsWith("x")) {
StringBuilder sb = new StringBuilder();
sb.append("Text did not equal expected.");
@@ -83,6 +84,28 @@ public class FluentStringAssertion extends 
FluentAssertion {
}
 
/**
+* Asserts that the text equals the specified value after the text has 
been URL-decoded.
+*
+* @param value The value to check against.
+* @return The response object (for method chaining).
+* @throws AssertionError If assertion failed.
+*/
+   public R urlDecodedIs(String value) throws AssertionError {
+   String t = urlDecode(text);
+   if (! isEqualsIc(value, t)) {
+   if (value != null && value.startsWith("x")) {
+   StringBuilder sb = new StringBuilder();
+   sb.append("Text did not equal expected.");
+   sb.append("\nExpected: 
[").append(value.replaceAll("", "").replaceAll("\n", 
"n").replaceAll("\t", "t")).append("]");
+   sb.append("\nActual  : 
[").append(t.replaceAll("", "").replaceAll("\n", 
"n").replaceAll("\t", "t")).append("]");
+   System.err.println(sb.toString());
+   }
+   throw new BasicAssertionError("Text did not equal 
expected.\n\tExpected=[{0}]\n\tActual=[{1}]", value, t);
+   }
+   return returns();
+   }
+
+   /**
 * Asserts that the text equals the specified value ignoring case.
 *
 * @param value The value to check against.
@@ -90,7 +113,7 @@ public class FluentStringAssertion extends 
FluentAssertion {
 * @throws AssertionError If assertion failed.
 */
public R equalsIc(String value) throws AssertionError {
-   if (! StringUtils.isEqualsIc(value, text)) {
+   if (! isEqualsIc(value, text)) {
if (value != null && value.startsWith("x")) {
StringBuilder sb = new StringBuilder();
sb.append("Text did not equal expected.");
@@ -111,7 +134,7 @@ public class FluentStringAssertion extends 
FluentAssertion {
 * @throws AssertionError If assertion failed.
 */
public R doesNotEqual(String value) throws AssertionError {
-   if (StringUtils.isEquals(value, text)) {
+   if (isEquals(value, text)) {
if (value != null && value.startsWith("x")) {
StringBuilder sb = new StringBuilder();
sb.append("Text equaled unexpected.");
@@ -145,7 +168,7 @@ public class FluentStringAssertion extends 
FluentAssertion {
 * @throws Ass

[juneau] branch master updated: RestClient tests.

2020-06-05 Thread jamesbognar
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 d9037ac  RestClient tests.
d9037ac is described below

commit d9037ac140da924d8dedb3fa981ceffe92175d0f
Author: JamesBognar 
AuthorDate: Fri Jun 5 18:05:36 2020 -0400

RestClient tests.
---
 .../org/apache/juneau/testutils/TestSupplier.java  | 33 +++
 .../apache/juneau/rest/client2/RestClientTest.java | 66 +-
 .../juneau/rest/mock2/MockServletRequest.java  |  1 +
 .../org/apache/juneau/rest/util/RestUtils.java |  2 +-
 4 files changed, 86 insertions(+), 16 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/testutils/TestSupplier.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/testutils/TestSupplier.java
new file mode 100644
index 000..c6da0da
--- /dev/null
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/testutils/TestSupplier.java
@@ -0,0 +1,33 @@
+// 
***
+// * 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.testutils;
+
+import java.util.function.*;
+
+public class TestSupplier implements Supplier {
+   public Object value;
+
+   public static TestSupplier of(Object value) {
+   return new TestSupplier().set(value);
+   }
+
+   public TestSupplier set(Object value) {
+   this.value = value;
+   return this;
+   }
+
+   @Override
+   public Object get() {
+   return value;
+   }
+}
\ No newline at end of file
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index 8589f91..f245344 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -20,7 +20,6 @@ import java.io.*;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.concurrent.atomic.*;
-import java.util.function.*;
 import java.util.logging.*;
 
 import org.apache.http.*;
@@ -53,6 +52,7 @@ import org.apache.juneau.rest.client2.RestResponse;
 import org.apache.juneau.rest.mock2.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.svl.*;
+import org.apache.juneau.testutils.*;
 import org.apache.juneau.transform.*;
 import org.apache.juneau.xml.*;
 import org.junit.*;
@@ -121,20 +121,7 @@ public class RestClientTest {
CALENDAR.set(2000, 11, 31, 12, 34, 56);
}
 
-   public static class TestSupplier implements Supplier {
-   public Object value;
 
-   public TestSupplier set(Object value) {
-   this.value = value;
-   return this;
-   }
-
-   @Override
-   public Object get() {
-   return value;
-   }
-
-   }
 

//--
// Override client and builder.
@@ -428,7 +415,7 @@ public class RestClientTest {
 
@Test
public void f01a_sup

[juneau] branch master updated: RestClient tests.

2020-06-05 Thread jamesbognar
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 990928c  RestClient tests.
990928c is described below

commit 990928c06e304fc3cb76030a76466f00c76f344a
Author: JamesBognar 
AuthorDate: Fri Jun 5 17:17:39 2020 -0400

RestClient tests.
---
 .../java/org/apache/juneau/BeanContextBuilder.java |  8 ++---
 .../org/apache/juneau/http/BasicNameValuePair.java | 25 +-
 .../apache/juneau/http/ContentEncodingEnum.java| 38 
 .../org/apache/juneau/http/NameValuePairs.java | 19 ++
 .../org/apache/juneau/http/SerializedHeader.java   | 23 +++--
 .../juneau/http/SerializedNameValuePair.java   | 10 --
 .../juneau/http/header/BasicCsvArrayHeader.java| 11 +++---
 .../org/apache/juneau/http/header/BasicHeader.java | 22 
 .../org/apache/juneau/internal/StringUtils.java| 15 +---
 .../apache/juneau/rest/client2/RestClientTest.java | 40 ++
 10 files changed, 137 insertions(+), 74 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
index 5f8b3c3..2739e45 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
@@ -1124,7 +1124,7 @@ public class BeanContextBuilder extends ContextBuilder {
@FluentSetter
public BeanContextBuilder bpi(Map values) {
for (Map.Entry e : values.entrySet())
-   prependTo(BEAN_annotations, new 
BeanAnnotation(e.getKey()).bpi(asString(e.getValue(;
+   prependTo(BEAN_annotations, new 
BeanAnnotation(e.getKey()).bpi(stringify(e.getValue(;
return this;
}
 
@@ -1297,7 +1297,7 @@ public class BeanContextBuilder extends ContextBuilder {
@FluentSetter
public BeanContextBuilder bpx(Map values) {
for (Map.Entry e : values.entrySet())
-   prependTo(BEAN_annotations, new 
BeanAnnotation(e.getKey()).bpx(asString(e.getValue(;
+   prependTo(BEAN_annotations, new 
BeanAnnotation(e.getKey()).bpx(stringify(e.getValue(;
return this;
}
 
@@ -1463,7 +1463,7 @@ public class BeanContextBuilder extends ContextBuilder {
@FluentSetter
public BeanContextBuilder bpro(Map values) {
for (Map.Entry e : values.entrySet())
-   prependTo(BEAN_annotations, new 
BeanAnnotation(e.getKey()).bpro(asString(e.getValue(;
+   prependTo(BEAN_annotations, new 
BeanAnnotation(e.getKey()).bpro(stringify(e.getValue(;
return this;
}
 
@@ -1635,7 +1635,7 @@ public class BeanContextBuilder extends ContextBuilder {
@FluentSetter
public BeanContextBuilder bpwo(Map values) {
for (Map.Entry e : values.entrySet())
-   prependTo(BEAN_annotations, new 
BeanAnnotation(e.getKey()).bpwo(asString(e.getValue(;
+   prependTo(BEAN_annotations, new 
BeanAnnotation(e.getKey()).bpwo(stringify(e.getValue(;
return this;
}
 
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 df9191d..6910f0f 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
@@ -13,6 +13,9 @@
 package org.apache.juneau.http;
 
 import static org.apache.juneau.internal.StringUtils.*;
+
+import java.util.function.*;
+
 import org.apache.http.*;
 
 /**
@@ -38,6 +41,20 @@ public class BasicNameValuePair implements NameValuePair {
}
 
/**
+* Convenience creator using supplier.
+*
+* 
+* Value is re-evaluated on each call to {@link #getValue()}.
+*
+* @param name The parameter name.
+* @param value The parameter value supplier.
+* @return A new {@link BasicNameValuePair} object.
+*/
+   public static BasicNameValuePair of(String name, Supplier value) {
+   return new BasicNameValuePair(name, value);
+   }
+
+   /**
 * Constructor.
 *
 * @param name The parameter name.
@@ -55,6 +72,12 @@ public class BasicNameValuePair implements NameValuePair {
 
@Override /* NameValuePair */
public String getValue() {
-   return stringify(value);
+   return stringify

[juneau] branch master updated: RestClient tests.

2020-06-05 Thread jamesbognar
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 776e751  RestClient tests.
776e751 is described below

commit 776e751d607c6249922ab49d98bdf8d768858d24
Author: JamesBognar 
AuthorDate: Fri Jun 5 09:10:49 2020 -0400

RestClient tests.
---
 .../org/apache/juneau/http/BasicObjectHeader.java  |  13 +
 .../juneau/http/SerializedNameValuePair.java   |  22 +-
 .../org/apache/juneau/internal/StringUtils.java|   3 +
 .../apache/juneau/rest/client2/RestClientTest.java |   5 +-
 .../org/apache/juneau/rest/client2/RestClient.java |  34 +-
 .../juneau/rest/client2/RestClientBuilder.java | 319 ++-
 .../apache/juneau/rest/client2/RestRequest.java| 963 +
 .../juneau/rest/mock2/MockRestClientBuilder.java   |  12 +-
 8 files changed, 1151 insertions(+), 220 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicObjectHeader.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicObjectHeader.java
index 25edaf3..f0814e3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicObjectHeader.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicObjectHeader.java
@@ -12,6 +12,8 @@
 // 
***
 package org.apache.juneau.http;
 
+import java.util.function.*;
+
 import org.apache.http.message.BasicHeader;
 import org.apache.juneau.internal.*;
 
@@ -36,6 +38,17 @@ public class BasicObjectHeader extends BasicHeader {
}
 
/**
+* Convenience creator.
+*
+* @param name The parameter name.
+* @param value The parameter value.
+* @return A new {@link BasicObjectHeader} object.
+*/
+   public static BasicObjectHeader of(String name, Supplier value) {
+   return new BasicObjectHeader(name, value);
+   }
+
+   /**
 * Constructor.
 *
 * @param name The HTTP header name.
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 f054feb..90d73e9 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
@@ -14,6 +14,8 @@ package org.apache.juneau.http;
 
 import static org.apache.juneau.internal.StringUtils.*;
 
+import java.util.function.*;
+
 import org.apache.http.*;
 import org.apache.juneau.*;
 import org.apache.juneau.httppart.*;
@@ -115,6 +117,17 @@ public class SerializedNameValuePair implements 
NameValuePair {
}
 
/**
+* Sets the POJO to serialize to the parameter value.
+*
+* @param value The new value for this property.
+* @return This object (for method chaining).
+*/
+   public Builder value(Supplier value) {
+   this.value = value;
+   return this;
+   }
+
+   /**
 * Sets the HTTP part type.
 *
 * @param value The new value for this property.
@@ -189,15 +202,18 @@ public class SerializedNameValuePair implements 
NameValuePair {
@Override /* NameValuePair */
public String getValue() {
try {
-   if (value == null) {
+   Object v = value;
+   if (v instanceof Supplier)
+   v = ((Supplier)v).get();
+   if (v == null) {
if (schema == null)
return null;
if (schema.getDefault() == null && ! 
schema.isRequired())
return null;
}
-   if (isEmpty(value) && skipIfEmpty && 
schema.getDefault() == null)
+   if (isEmpty(v) && skipIfEmpty && schema.getDefault() == 
null)
return null;
-   return serializer.serialize(type, schema, value);
+   return serializer.serialize(type, schema, v);
} catch (SchemaValidationException e) {
throw new BasicRuntimeException(e, "Validation error on 
request {0} parameter ''{1}''=''{2}''", type, name, value);
} catch (SerializeException e) {
diff --git 
a/juneau-core/juneau

[juneau] branch master updated: RestClient tests.

2020-06-04 Thread jamesbognar
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 39580c1  RestClient tests.
39580c1 is described below

commit 39580c1c615e5ecda43207b6e023bff9e38acd9e
Author: JamesBognar 
AuthorDate: Thu Jun 4 13:06:33 2020 -0400

RestClient tests.
---
 .../juneau/SerializerPropertiesComboTest.java  |   2 +-
 .../juneau/httppart/OpenApiPartParserTest.java |  48 +++---
 .../juneau/httppart/OpenApiPartSerializerTest.java |  48 +++---
 .../java/org/apache/juneau/oapi/OpenApiTest.java   |  94 +--
 .../juneau/serializer/UriResolutionTest.java   |   2 +-
 .../utils/UriContextResolutionComboTest.java   |  24 +--
 .../juneau/utils/UriContextUriComboTest.java   |   2 +-
 .../main/java/org/apache/juneau/UriContext.java|  17 ++
 .../main/java/org/apache/juneau/UriResolver.java   |  12 ++
 .../apache/juneau/http/BasicCsvArrayHeader.java|  11 ++
 .../org/apache/juneau/http/BasicDateHeader.java|  11 ++
 .../http/BasicEntityValidatorArrayHeader.java  |  11 ++
 .../java/org/apache/juneau/http/BasicHeader.java   |  12 ++
 .../org/apache/juneau/http/BasicIntegerHeader.java |  11 ++
 .../org/apache/juneau/http/BasicLongHeader.java|  11 ++
 .../org/apache/juneau/http/BasicNameValuePair.java |  11 ++
 .../org/apache/juneau/http/BasicObjectHeader.java  |  11 ++
 .../apache/juneau/http/BasicRangeArrayHeader.java  |  11 ++
 .../org/apache/juneau/http/BasicStringHeader.java  |  11 ++
 .../org/apache/juneau/http/BasicUriHeader.java |  11 ++
 .../org/apache/juneau/httppart/HttpPartSchema.java |  88 ++
 .../juneau/serializer/SerializerSession.java   |   2 +-
 .../apache/juneau/rest/client2/RestClientTest.java | 161 --
 .../apache/juneau/rest/client2/RestRequest.java| 185 +
 .../juneau/rest/client2/RestResponseHeader.java|  16 +-
 .../java/org/apache/juneau/rest/RestRequest.java   |   6 +-
 26 files changed, 696 insertions(+), 133 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
index 941bb40..6477760 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
@@ -320,7 +320,7 @@ public class SerializerPropertiesComboTest extends 
ComboRoundTripTest {
.rdfXml("\n\n\n\n\n")
.rdfXmlT("\n\n\n\n\n")
.rdfXmlR("\n  \n
\n  
\n\n")
-   .properties(OMap.of(SERIALIZER_uriContext, new 
UriContext("https://localhost:80;, "/context", "/resource", "/path"), 
SERIALIZER_uriRelativity, UriRelativity.PATH_INFO, SERIALIZER_uriResolution, 
UriResolution.ABSOLUTE))
+   .properties(OMap.of(SERIALIZER_uriContext, 
UriContext.of("https://localhost:80;, "/context", "/resource", "/path"), 
SERIALIZER_uriRelativity, UriRelativity.PATH_INFO, SERIALIZER_uriResolution, 
UriResolution.ABSOLUTE))
.convert(x -> new T9())
.skipTest(x -> x.contains("parseRdf") || 
x.contains("verifyRdf"))
},
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java
index fb19559..497601e 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java
@@ -48,7 +48,7 @@ public class OpenApiPartParserTest {
 
@Test
public void a01_inputValidations_nullInput() throws Exception {
-   HttpPartSchema s = tNone().build();
+   HttpPartSchema s = T_NONE;
assertNull(parse(s, null, String.class));
 
s = tNone().required(false).build();
@@ -285,7 +285,7 @@ public class OpenApiPartParserTest {
 
@Test
public void c01_stringType_simple() throws Exception {
-   HttpPartSchema s = tString().build();
+   HttpPartSchema s = T_STRING;
assertEquals("foo", parse(s, "foo", String.class));
}
 
@@ -298,7 +298,7 @@ public class OpenApiPartParserTest {
 
@Test
public void c03_stringType_byteFormat() throws Exception {
-   

[juneau] branch master updated: RestClient tests.

2020-06-04 Thread jamesbognar
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 954a98b  RestClient tests.
954a98b is described below

commit 954a98ba724fd214bbd05f5637225f15de3a70f0
Author: JamesBognar 
AuthorDate: Thu Jun 4 10:42:08 2020 -0400

RestClient tests.
---
 .../juneau/reflection/ExecutableInfoTest.java  |  8 ++---
 .../org/apache/juneau/reflect/ExecutableInfo.java  | 10 ++
 .../java/org/apache/juneau/reflect/FieldInfo.java  | 22 
 .../apache/juneau/rest/client2/RestClientTest.java | 39 --
 .../juneau/rest/client2/RestClientBuilder.java |  2 +-
 5 files changed, 59 insertions(+), 22 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ExecutableInfoTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ExecutableInfoTest.java
index 24f2fbb..b6467ec 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ExecutableInfoTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ExecutableInfoTest.java
@@ -570,10 +570,10 @@ public class ExecutableInfoTest {
 
@Test
public void setAccessible() {
-   f_isPublic.setAccessible();
-   f_isProtected.setAccessible();
-   f_isPrivate.setAccessible();
-   f_isDefault.setAccessible();
+   f_isPublic.accessible();
+   f_isProtected.accessible();
+   f_isPrivate.accessible();
+   f_isDefault.accessible();
}
 
@Test
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ExecutableInfo.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ExecutableInfo.java
index a0a7963..b60ac3e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ExecutableInfo.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ExecutableInfo.java
@@ -686,6 +686,16 @@ public abstract class ExecutableInfo {
/**
 * Attempts to call x.setAccessible(true) and 
quietly ignores security exceptions.
 *
+* @return This object (for method chaining).
+*/
+   public ExecutableInfo accessible() {
+   setAccessible();
+   return this;
+   }
+
+   /**
+* Attempts to call x.setAccessible(true) and 
quietly ignores security exceptions.
+*
 * @return true if call was successful.
 */
public final boolean setAccessible() {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/FieldInfo.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/FieldInfo.java
index 4f9ad19..84772e2 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/FieldInfo.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/FieldInfo.java
@@ -324,6 +324,16 @@ public final class FieldInfo implements 
Comparable {
/**
 * Attempts to call x.setAccessible(true) and 
quietly ignores security exceptions.
 *
+* @return This object (for method chaining).
+*/
+   public FieldInfo accessible() {
+   setAccessible();
+   return this;
+   }
+
+   /**
+* Attempts to call x.setAccessible(true) and 
quietly ignores security exceptions.
+*
 * @return true if call was successful.
 */
public boolean setAccessible() {
@@ -379,4 +389,16 @@ public final class FieldInfo implements 
Comparable {
public String getName() {
return f.getName();
}
+
+   /**
+* Invokes this field on the specified object.
+*
+* @param o The object containing the field.
+* @return The field value.
+* @throws IllegalAccessException Field was not accessible.
+* @throws IllegalArgumentException Field does not belong to object.
+*/
+   public Object invoke(Object o) throws IllegalArgumentException, 
IllegalAccessException {
+   return f.get(o);
+   }
 }
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index aa7b716..30a443a 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -135,16 +135,7 @@ public class RestClientTest {
 
@Test
public void a02_useNoArgConstructor() {
-// new A2

[juneau] branch master updated: RestClient improvements.

2020-06-03 Thread jamesbognar
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 e90bba5  RestClient improvements.
e90bba5 is described below

commit e90bba550e5ae87f8bc3f6c02ec28d8adf87a1b3
Author: JamesBognar 
AuthorDate: Wed Jun 3 20:02:06 2020 -0400

RestClient improvements.
---
 ...shallTest.java => RestClientMarshallsTest.java} | 21 --
 .../org/apache/juneau/rest/client2/RestClient.java | 47 +-
 .../juneau/rest/client2/RestClientBuilder.java | 11 -
 .../apache/juneau/rest/mock2/MockRestClient.java   | 10 +
 .../juneau/rest/mock2/MockRestClientBuilder.java   |  6 +++
 5 files changed, 45 insertions(+), 50 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/MarshallTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientMarshallsTest.java
similarity index 96%
rename from 
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/MarshallTest.java
rename to 
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientMarshallsTest.java
index 3af41c0..aff46d3 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/MarshallTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientMarshallsTest.java
@@ -24,7 +24,7 @@ import org.apache.juneau.rest.mock2.*;
 import org.junit.*;
 
 @FixMethodOrder(NAME_ASCENDING)
-public class MarshallTest {
+public class RestClientMarshallsTest {
 
public static class Bean {
public int f;
@@ -75,6 +75,8 @@ public class MarshallTest {
private static RestClient a1g = 
MockRestClient.create(A.class).uon().build();
private static RestClient a1h = 
MockRestClient.create(A.class).urlEnc().build();
private static RestClient a1i = 
MockRestClient.create(A.class).openApi().build();
+   private static RestClient a1j = 
MockRestClient.create(A.class).htmlDoc().build();
+   private static RestClient a1k = 
MockRestClient.create(A.class).htmlStrippedDoc().debug().build();
 
@Test
public void a01_singleLanguages() throws Exception {
@@ -132,6 +134,19 @@ public class MarshallTest {
.run()
.assertStatus().is(200)
.getBody().as(Bean.class).check();
+   a1j.post("/a01", bean)
+   .header("X-Accept", "text/html")
+   .header("X-Content-Type", "text/html")
+   .run()
+   .assertStatus().is(200)
+   .getBody().as(Bean.class).check();
+   a1k.post("/a01", bean)
+   .debug()
+   .header("X-Accept", "text/html")
+   .header("X-Content-Type", "text/html+stripped")
+   .run()
+   .assertStatus().is(200)
+   .getBody().as(Bean.class).check();
}
 
@Test
@@ -146,11 +161,11 @@ public class MarshallTest {
.getBody().as(Bean.class).check();
}
 
-   private static RestClient a1j = MockRestClient.create(A.class).build();
+   private static RestClient a3 = MockRestClient.create(A.class).build();
 
@Test
public void a03_noLanguages() throws Exception {
-   a1j.post("/a01", bean)
+   a3.post("/a01", bean)
.header("Accept", "application/json")
.header("Content-Type", "application/json")
.header("X-Accept", "application/json")
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 fae2f36..6824dd1 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
@@ -1008,37 +1008,6 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
public static final String RESTCLIENT_callHandler = PREFIX + 
"callHandler.o";
 
/**
-* Configuration property:  Debug.
-*
-* Property:
-* 
-*  ID:  {@link 
org.apache.juneau.rest.client2.RestClient#RESTCLIENT_debug RESTCLIENT_debug}
-*  Name:  "RestClient.debug.b&q

[juneau] branch master updated: MockRestClient improvements.

2020-06-03 Thread jamesbognar
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 73c845e  MockRestClient improvements.
73c845e is described below

commit 73c845e3037f4d7abcd49ac979a9c02d09cf9acd
Author: JamesBognar 
AuthorDate: Wed Jun 3 19:20:59 2020 -0400

MockRestClient improvements.
---
 .../10.juneau-rest-mock/01.MockRestClient.html |  29 +-
 .../apache/juneau/rest/client2/RestRequest.java|  38 --
 .../rest/mock2/MockHttpClientConnection.java   | 126 
 .../mock2/MockHttpClientConnectionManager.java |  23 +-
 .../juneau/rest/mock2/MockHttpConnection.java  |  37 --
 .../juneau/rest/mock2/MockHttpConnectionImpl.java  | 113 
 .../apache/juneau/rest/mock2/MockHttpRequest.java  |  65 --
 .../apache/juneau/rest/mock2/MockHttpResponse.java |  53 --
 .../apache/juneau/rest/mock2/MockHttpSession.java  | 131 +++-
 .../org/apache/juneau/rest/mock2/MockLogger.java   |  37 ++
 .../apache/juneau/rest/mock2/MockPathResolver.java |   2 +-
 .../apache/juneau/rest/mock2/MockRestClient.java   | 597 ++-
 .../juneau/rest/mock2/MockRestClientBuilder.java   |  78 +--
 .../apache/juneau/rest/mock2/MockRestRequest.java  | 657 -
 .../apache/juneau/rest/mock2/MockRestResponse.java |   5 +-
 .../juneau/rest/mock2/MockServletRequest.java  | 487 +--
 .../juneau/rest/mock2/MockServletResponse.java |  83 +--
 .../juneau/rest/BasicRestCallLoggerTest.java   |  18 +-
 .../juneau/rest/RestCallLoggerConfigTest.java  |   2 +-
 19 files changed, 1473 insertions(+), 1108 deletions(-)

diff --git a/juneau-doc/docs/Topics/10.juneau-rest-mock/01.MockRestClient.html 
b/juneau-doc/docs/Topics/10.juneau-rest-mock/01.MockRestClient.html
index fed94f7..de43681 100644
--- a/juneau-doc/docs/Topics/10.juneau-rest-mock/01.MockRestClient.html
+++ b/juneau-doc/docs/Topics/10.juneau-rest-mock/01.MockRestClient.html
@@ -112,6 +112,31 @@ MockRestClient
 
 
 
+   The {@link oajr.mock2.MockRestRequest} object has convenience methods 
provided to allow you to set properties
+   directly on the underlying {@link javax.servlet.HttpServletRequest} 
object.  The following example shows how
+   this can be used to directly set roles on the request object to perform 
security testing.
+
+Example:
+
+   @Rest(roleGuard="ADMIN")
+   public class A {
+   @RestMethod
+   public String get() {
+   return "OK";
+   }
+   }
+
+   @Test
+   public void mytest() throws Exception {
+   MockRestClient a = 
MockRestClient.build(A.class);
+
+   // Admin user should get 200, but anyone else should get 
403-Unauthorized.
+   a.get().roles("ADMIN").run().assertStatus().is(200);
+   a.get().roles("USER").run().assertStatus().is(403);
+   }
+
+
+
The {@link oajr.mock2.MockRestClient} class has a debug mode that will 
cause your HTTP requests and responses to
be sent to the console:
 
@@ -124,7 +149,7 @@ MockRestClient
 
 
 
-   The {@link oajr.mock2.MockRestclient} class can also be used for 
testing of {@link oaj.http.annotation.Remote}-annotated
+   The {@link oajr.mock2.MockRestClient} class can also be used for 
testing of {@link oaj.http.annotation.Remote}-annotated
interfaces against {@link oajr.annotation.Rest @Rest}-annotated 
resources.
 
 Example:
@@ -141,7 +166,7 @@ MockRestClient
@Rest
public class MyRest {

-   @RestMethod(name=GET, path="/echoQuery")
+   @RestMethod(name=GET, 
path="/echoQuery")
public int echoQuery(@Query("id") 
String id) {
return id;
}
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 49d19ba..be03ca4 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
@@ -2722,44 +2722,6 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
}
 
/**
-* Sets the value for the X-Roles request header.
-*
-* 
-* This is a shortcut for calling header("X-Roles", 
value);
-*
-* 
-* Typically not used in production, but allows you to set roles on a 
request for use in mocked testing.
-* For example, the MockRestClient class uses this value to 
directly set roles on the HttpServletRequest
-* object.
-*
-* Example:

[juneau] branch master updated: MockRestClient improvements.

2020-06-02 Thread jamesbognar
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 3208b36  MockRestClient improvements.
3208b36 is described below

commit 3208b367dcf2eadc16044cefcdd271047d88698d
Author: JamesBognar 
AuthorDate: Tue Jun 2 18:53:41 2020 -0400

MockRestClient improvements.
---
 .../apache/juneau/rest/mock2/MockHttpClientConnection.java|  4 +++-
 .../juneau/rest/mock2/MockHttpClientConnectionManager.java| 11 +--
 .../java/org/apache/juneau/rest/mock2/MockRestClient.java |  1 +
 .../org/apache/juneau/rest/mock2/MockRestClientBuilder.java   |  4 +++-
 4 files changed, 16 insertions(+), 4 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
index e8451c9..05dedcd 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
@@ -29,6 +29,7 @@ import org.apache.juneau.internal.*;
 public class MockHttpClientConnection implements HttpClientConnection {
 
private final MockHttpConnection c;
+   private final MockRestClient rc;
private volatile MockHttpRequest req;
private volatile MockHttpResponse res;
 
@@ -37,8 +38,9 @@ public class MockHttpClientConnection implements 
HttpClientConnection {
 *
 * @param c The API for performing the connections.
 */
-   public MockHttpClientConnection(MockHttpConnection c) {
+   public MockHttpClientConnection(MockHttpConnection c, MockRestClient 
rc) {
this.c = c;
+   this.rc = rc;
}
 
@Override /* HttpClientConnection */
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnectionManager.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnectionManager.java
index 51cf236..99c6f3a 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnectionManager.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnectionManager.java
@@ -27,7 +27,10 @@ import org.apache.http.protocol.*;
  */
 public class MockHttpClientConnectionManager implements 
HttpClientConnectionManager {
 
-   final ConnectionRequest cr;
+   private ConnectionRequest cr;
+   private MockRestClient restClient;
+   private MockHttpConnection httpConnection;
+
 
/**
 * Constructor.
@@ -35,7 +38,11 @@ public class MockHttpClientConnectionManager implements 
HttpClientConnectionMana
 * @param c The mocked connection.
 */
public MockHttpClientConnectionManager(final MockHttpConnection c) {
-   final HttpClientConnection hcc = new 
MockHttpClientConnection(c);
+   this.httpConnection = c;
+   }
+
+   public void init(MockRestClient mrc) {
+   final HttpClientConnection hcc = new 
MockHttpClientConnection(httpConnection, restClient);
this.cr = new ConnectionRequest() {
@Override
public boolean cancel() {
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
index d4a4b34..1fae967 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
@@ -37,6 +37,7 @@ public class MockRestClient extends RestClient {
 */
public MockRestClient(PropertyStore ps) {
super(ps);
+   
ps.getInstanceProperty("MockRestClient.MockHttpClientConnectionManager.o", 
MockHttpClientConnectionManager.class, null).init(this);
}
 
/**
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
index b38d7aa..05ea4e3 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
@@ -178,7 +178,9 @@ public class MockRestClientBuilder extends 
RestClientBuilder {
public  T build(Class c) {
boolean debug = (peek(BeanContext.BEAN_debug) == Bo

[juneau] branch master updated: MockRestClient improvements.

2020-06-01 Thread jamesbognar
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 05b4c82  MockRestClient improvements.
05b4c82 is described below

commit 05b4c82894e5c85c85c8589d2e9b7dc1a3f954b5
Author: JamesBognar 
AuthorDate: Mon Jun 1 15:03:04 2020 -0400

MockRestClient improvements.
---
 .../juneau/rest/mock2/MockServletRequest.java  | 101 -
 1 file changed, 101 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
index 6e67e0d..d483ec8 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
@@ -114,107 +114,6 @@ public class MockServletRequest implements 
HttpServletRequest, MockHttpRequest {
}
 
/**
-* Specifies the Accept header value.
-*
-* @param value The Accept header value.
-* @return This object (for method chaining).
-*/
-   public MockServletRequest accept(String value) {
-   return header("Accept", value);
-   }
-
-   /**
-* Specifies the Content-Type header value.
-*
-* @param value The Content-Type header value.
-* @return This object (for method chaining).
-*/
-   public MockServletRequest contentType(String value) {
-   return header("Content-Type", value);
-   }
-
-   /**
-* Convenience method for setting Accept and Content-Type 
headers to "application/json".
-*
-* @return This object (for method chaining).
-*/
-   public MockServletRequest json() {
-   return 
accept("application/json").contentType("application/json");
-   }
-
-   /**
-* Convenience method for setting Accept and Content-Type 
headers to "application/json+simple".
-*
-* @return This object (for method chaining).
-*/
-   public MockServletRequest simpleJson() {
-   return 
accept("application/json+simple").contentType("application/json+simple");
-   }
-
-   /**
-* Convenience method for setting Accept and Content-Type 
headers to "text/xml".
-*
-* @return This object (for method chaining).
-*/
-   public MockServletRequest xml() {
-   return accept("text/xml").contentType("text/xml");
-   }
-
-   /**
-* Convenience method for setting Accept and Content-Type 
headers to "text/html".
-*
-* @return This object (for method chaining).
-*/
-   public MockServletRequest html() {
-   return accept("text/html").contentType("text/html");
-   }
-
-   /**
-* Convenience method for setting Accept and Content-Type 
headers to "text/plain".
-*
-* @return This object (for method chaining).
-*/
-   public MockServletRequest plainText() {
-   return accept("text/plain").contentType("text/plain");
-   }
-
-   /**
-* Convenience method for setting Accept and Content-Type 
headers to "octal/msgpack".
-*
-* @return This object (for method chaining).
-*/
-   public MockServletRequest msgpack() {
-   return accept("octal/msgpack").contentType("octal/msgpack");
-   }
-
-   /**
-* Convenience method for setting Accept and Content-Type 
headers to "text/uon".
-*
-* @return This object (for method chaining).
-*/
-   public MockServletRequest uon() {
-   return accept("text/uon").contentType("text/uon");
-   }
-
-   /**
-* Convenience method for setting Accept and Content-Type 
headers to "application/x-www-form-urlencoded".
-*
-* @return This object (for method chaining).
-*/
-   public MockServletRequest urlEnc() {
-   return 
accept("application/x-www-form-urlencoded").contentType("application/x-www-form-urlencoded");
-   }
-
-   /**
-* Convenience method for setting Accept and Content-Type 
headers to "text/yaml".
-*
-* @return This object (for method chaining).
-*/
-   public MockServletRequest yaml() {
-   return accept("text/yaml").contentType("text/yaml");
-   }
-
-   /**
 * Fluent setter.
 *
 * @param uri The URI of the request.



[juneau] branch master updated: MockRestClient improvements.

2020-05-31 Thread jamesbognar
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 2abc948  MockRestClient improvements.
2abc948 is described below

commit 2abc948eb1e5cf5affb91c186ff9fc479f45a924
Author: JamesBognar 
AuthorDate: Sun May 31 19:20:40 2020 -0400

MockRestClient improvements.
---
 .../apache/juneau/rest/client2/RestRequest.java| 50 --
 .../juneau/rest/client2/RestRequestCreated.java| 31 ++
 .../apache/juneau/rest/mock2/MockRestRequest.java  |  1 +
 3 files changed, 70 insertions(+), 12 deletions(-)

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 2207124..49d19ba 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
@@ -97,19 +97,9 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
super(client, BeanSessionArgs.DEFAULT);
this.client = client;
if (hasBody) {
-   this.request = new HttpEntityEnclosingRequestBase() {
-   @Override /* HttpRequest */
-   public String getMethod() {
-   return method;
-   }
-   };
+   this.request = new EntityRequest(method);
} else {
-   this.request = new HttpRequestBase() {
-   @Override /* HttpRequest */
-   public String getMethod() {
-   return method;
-   }
-   };
+   this.request = new Request(method);
}
this.request.setURI(uri);
this.errorCodes = client.errorCodes;
@@ -118,6 +108,42 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
this.ignoreErrors = client.ignoreErrors;
}
 
+   private class Request extends HttpRequestBase implements 
RestRequestCreated {
+   private final String method;
+
+   Request(String method) {
+   this.method = method;
+   }
+
+   @Override /* RestRequestCreated */
+   public RestRequest getRestRequest() {
+   return RestRequest.this;
+   }
+
+   @Override /* HttpRequestBase */
+   public String getMethod() {
+   return method;
+   }
+   }
+
+   private class EntityRequest extends HttpEntityEnclosingRequestBase 
implements RestRequestCreated {
+   private final String method;
+
+   EntityRequest(String method) {
+   this.method = method;
+   }
+
+   @Override /* RestRequestCreated */
+   public RestRequest getRestRequest() {
+   return RestRequest.this;
+   }
+
+   @Override /* HttpRequestBase */
+   public String getMethod() {
+   return method;
+   }
+   }
+

//--
// Configuration

//--
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequestCreated.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequestCreated.java
new file mode 100644
index 000..c89b805
--- /dev/null
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequestCreated.java
@@ -0,0 +1,31 @@
+// 
***
+// * 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 t

[juneau] branch master updated: MockRestClient improvements.

2020-05-31 Thread jamesbognar
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 b12a571  MockRestClient improvements.
b12a571 is described below

commit b12a571a8ebf0173f667e14cf84ef92f687b0b05
Author: JamesBognar 
AuthorDate: Sun May 31 19:00:33 2020 -0400

MockRestClient improvements.
---
 .../org/apache/juneau/rest/client2/RestClient.java | 55 +++---
 .../apache/juneau/rest/client2/RestRequest.java| 23 +++--
 .../apache/juneau/rest/mock2/MockRestClient.java   | 11 +++--
 .../apache/juneau/rest/mock2/MockRestRequest.java  | 11 +++--
 4 files changed, 52 insertions(+), 48 deletions(-)

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 27da129..fae2f36 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
@@ -2802,46 +2802,25 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
throw new RestCallException("RestClient.close() has 
already been called.  This client cannot be reused.  Closed location stack 
trace can be displayed by setting the system property 
'org.apache.juneau.rest.client2.RestClient.trackCreation' to true.");
}
 
-   RestRequest req = null;
-   final String methodUC = method.toUpperCase(Locale.ENGLISH);
try {
-   HttpRequestBase reqb = null;
-   final URI uri = toURI(url);
-   if (hasBody) {
-   reqb = new HttpEntityEnclosingRequestBase() {
-   @Override /* HttpRequest */
-   public String getMethod() {
-   return methodUC;
-   }
-   };
-   reqb.setURI(uri);
-   req = createRequest(reqb);
-   } else {
-   reqb = new HttpRequestBase() {
-   @Override /* HttpRequest */
-   public String getMethod() {
-   return methodUC;
-   }
-   };
-   reqb.setURI(uri);
-   req = createRequest(reqb);
-   }
-   } catch (URISyntaxException e1) {
-   throw new RestCallException(e1);
-   }
+   RestRequest req = createRequest(toURI(url), 
method.toUpperCase(Locale.ENGLISH), hasBody);
+
+   for (Object o : headers)
+   req.header(toHeader(o));
 
-   for (Object o : headers)
-   req.header(toHeader(o));
+   for (Object o : query)
+   req.query(toQuery(o));
 
-   for (Object o : query)
-   req.query(toQuery(o));
+   for (Object o : formData)
+   req.formData(toFormData(o));
 
-   for (Object o : formData)
-   req.formData(toFormData(o));
+   req.interceptors(interceptors);
 
-   req.interceptors(interceptors);
+   return req;
 
-   return req;
+   } catch (URISyntaxException e1) {
+   throw new RestCallException(e1);
+   }
}
 
/**
@@ -2850,12 +2829,14 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
 * 
 * Subclasses can override this method to provide their own specialized 
{@link RestRequest} objects.
 *
-* @param httpRequest The request object to wrap.
+* @param uri The target.
+* @param method The HTTP method (uppercase).
+* @param hasBody Whether this method has a request entity.
 * @return A new {@link RestRequest} object.
 * @throws RestCallException If an exception or non-200 response code 
occurred during the connection attempt.
 */
-   protected RestRequest createRequest(HttpRequestBase httpRequest) throws 
RestCallException {
-   return new RestRequest(this, httpRequest);
+   protected RestRequest createRequest(URI uri, String method, boolean 
hasBody) throws RestCallException {
+   return new R

[juneau] branch master updated: MockRestClient improvements.

2020-05-31 Thread jamesbognar
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 44bc156  MockRestClient improvements.
44bc156 is described below

commit 44bc1560c81d4809601869c21751ab004e456319
Author: JamesBognar 
AuthorDate: Sun May 31 18:17:58 2020 -0400

MockRestClient improvements.
---
 .../apache/juneau/rest/client2/RestResponse.java   |  1 +
 .../apache/juneau/rest/mock2/MockRestClient.java   | 16 ++
 .../apache/juneau/rest/mock2/MockRestRequest.java  | 58 ++
 .../apache/juneau/rest/mock2/MockRestResponse.java | 41 +++
 4 files changed, 116 insertions(+)

diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponse.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponse.java
index 39d0d2f..989166b 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponse.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponse.java
@@ -53,6 +53,7 @@ public class RestResponse implements HttpResponse {
 
/**
 * Constructor.
+*
 * @param client The RestClient that created this response.
 * @param request The REST request.
 * @param response The HTTP response.  Can be null.
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
index b6902eb..a6813af 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
@@ -12,6 +12,8 @@
 // 
***
 package org.apache.juneau.rest.mock2;
 
+import org.apache.http.*;
+import org.apache.http.client.methods.*;
 import org.apache.juneau.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.client2.*;
@@ -102,6 +104,20 @@ public class MockRestClient extends RestClient {
return create(impl).simpleJson().build(MockRestClient.class);
}
 
+   /**
+* Creates a {@link RestRequest} object from the specified {@link 
HttpRequest} object.
+*
+* 
+* Subclasses can override this method to provide their own specialized 
{@link RestRequest} objects.
+*
+* @param httpRequest The request object to wrap.
+* @return A new {@link RestRequest} object.
+* @throws RestCallException If an exception or non-200 response code 
occurred during the connection attempt.
+*/
+   @Override
+   protected MockRestRequest createRequest(HttpRequestBase httpRequest) 
throws RestCallException {
+   return new MockRestRequest(this, httpRequest);
+   }
 
// 
 
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestRequest.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestRequest.java
new file mode 100644
index 000..c1ec765
--- /dev/null
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestRequest.java
@@ -0,0 +1,58 @@
+// 
***
+// * 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 limitation

[juneau] branch master updated: MockRestClient improvements.

2020-05-31 Thread jamesbognar
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 abbf69b  MockRestClient improvements.
abbf69b is described below

commit abbf69bfebdaba735a7742fe166626f000e8c5be
Author: JamesBognar 
AuthorDate: Sun May 31 17:15:23 2020 -0400

MockRestClient improvements.
---
 .../org/apache/juneau/rest/client2/RestRequest.java | 21 +++--
 1 file changed, 19 insertions(+), 2 deletions(-)

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 b6d300f..02962e9 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
@@ -2895,9 +2895,9 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
 
try {
if (request2 != null)
-   response = new RestResponse(client, 
this, client.execute(target, request2, context), parser);
+   response = createResponse(client, 
client.execute(target, request2, context), parser);
else
-   response = new RestResponse(client, 
this, client.execute(target, this.request, context), parser);
+   response = createResponse(client, 
client.execute(target, this.request, context), parser);
} catch (Exception e) {
throw e;
}
@@ -2930,6 +2930,23 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
}
 
/**
+* Creates a {@link RestResponse} object from the specified {@link 
HttpResponse} object.
+*
+* 
+* Subclasses can override this method to provide their own specialized 
{@link RestResponse} objects.
+*
+* @param client The client that created the request.
+* @param httpResponse The response object to wrap.
+* @param parser The parser to use to parse the response.
+*
+* @return A new {@link RestResponse} object.
+* @throws RestCallException If an exception or non-200 response code 
occurred during the connection attempt.
+*/
+   protected RestResponse createResponse(RestClient client, HttpResponse 
httpResponse, Parser parser) throws RestCallException {
+   return new RestResponse(client, this, httpResponse, parser);
+   }
+
+   /**
 * Same as {@link #run()} but allows you to run the call asynchronously.
 *
 * Example:



[juneau] branch master updated: MockRestClient improvements.

2020-05-29 Thread jamesbognar
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 7fbf4f6  MockRestClient improvements.
7fbf4f6 is described below

commit 7fbf4f6862c3d9c32c4173df11224b2117a0d9b5
Author: JamesBognar 
AuthorDate: Fri May 29 12:58:05 2020 -0400

MockRestClient improvements.
---
 .../rest/mock2/MockHttpClientConnection.java   |   2 +-
 .../apache/juneau/rest/mock2/MockHttpResponse.java |   2 +-
 .../juneau/rest/mock2/MockServletRequest.java  |   6 +-
 .../juneau/rest/mock2/MockServletResponse.java | 167 +
 .../juneau/rest/mock2/MockServletResponseBody.java | 193 ---
 .../rest/mock2/MockServletResponseHeader.java  | 263 -
 6 files changed, 9 insertions(+), 624 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
index e70cddb..e8451c9 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
@@ -115,7 +115,7 @@ public class MockHttpClientConnection implements 
HttpClientConnection {
@Override /* HttpClientConnection */
public void receiveResponseEntity(HttpResponse response) throws 
HttpException, IOException {
BasicHttpEntity e = new BasicHttpEntity();
-   e.setContent(res.getBody().asInputStream());
+   e.setContent(new ByteArrayInputStream(res.getBody()));
response.setEntity(e);
}
 
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpResponse.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpResponse.java
index 0749e69..ac1ebd3 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpResponse.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpResponse.java
@@ -49,5 +49,5 @@ public interface MockHttpResponse {
 *
 * @return The body of the response.
 */
-   MockServletResponseBody getBody();
+   byte[] getBody();
 }
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
index 69e5821..6e67e0d 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
@@ -317,7 +317,11 @@ public class MockServletRequest implements 
HttpServletRequest, MockHttpRequest {
for (String h2 : h.getValue())
sb.append("\n").append(h.getKey()).append(": 
").append(h2);
sb.append("\n---response content---\n");
-   sb.append(res.getBody().asString());
+   try {
+   sb.append(IOUtils.read(res.getBody()));
+   } catch (IOException e) {
+   e.printStackTrace();
+   }
sb.append("\n=== END 
===");
 
System.err.println(sb);  // NOT DEBUG
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletResponse.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletResponse.java
index 879eb39..a854d2f 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletResponse.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletResponse.java
@@ -18,7 +18,6 @@ import java.util.*;
 import javax.servlet.*;
 import javax.servlet.http.*;
 
-import org.apache.juneau.assertions.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.rest.util.*;
 
@@ -352,174 +351,12 @@ public class MockServletResponse implements 
HttpServletResponse, MockHttpRespons
 * @return The body of the request.
 */
@Override /* MockHttpResponse */
-   public MockServletResponseBody getBody() {
-   return new MockServletResponseBody(this, baos.toByteArray());
+   public byte[] getBody() {
+   return baos.toByteArray();
}
 
@Override /* MockHttpResponse */
public Map getHeaders() {
return headerMap;
}
-
-   /**
-* Used for fluent a

[juneau] branch master updated: MockRestClient improvements.

2020-05-29 Thread jamesbognar
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 b92c316  MockRestClient improvements.
b92c316 is described below

commit b92c3169d6c9fc89016a3cfeec19ae182cb0f2af
Author: JamesBognar 
AuthorDate: Fri May 29 12:28:37 2020 -0400

MockRestClient improvements.
---
 .../org/apache/juneau/rest/client2/RestClient.java  | 21 +++--
 .../org/apache/juneau/rest/client2/RestRequest.java |  7 +++
 2 files changed, 22 insertions(+), 6 deletions(-)

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 b197ef2..27da129 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
@@ -2806,6 +2806,7 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
final String methodUC = method.toUpperCase(Locale.ENGLISH);
try {
HttpRequestBase reqb = null;
+   final URI uri = toURI(url);
if (hasBody) {
reqb = new HttpEntityEnclosingRequestBase() {
@Override /* HttpRequest */
@@ -2813,7 +2814,8 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
return methodUC;
}
};
-   req = new RestRequest(this, reqb, toURI(url));
+   reqb.setURI(uri);
+   req = createRequest(reqb);
} else {
reqb = new HttpRequestBase() {
@Override /* HttpRequest */
@@ -2821,7 +2823,8 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
return methodUC;
}
};
-   req = new RestRequest(this, reqb, toURI(url));
+   reqb.setURI(uri);
+   req = createRequest(reqb);
}
} catch (URISyntaxException e1) {
throw new RestCallException(e1);
@@ -2842,6 +2845,20 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
}
 
/**
+* Creates a {@link RestRequest} object from the specified {@link 
HttpRequest} object.
+*
+* 
+* Subclasses can override this method to provide their own specialized 
{@link RestRequest} objects.
+*
+* @param httpRequest The request object to wrap.
+* @return A new {@link RestRequest} object.
+* @throws RestCallException If an exception or non-200 response code 
occurred during the connection attempt.
+*/
+   protected RestRequest createRequest(HttpRequestBase httpRequest) throws 
RestCallException {
+   return new RestRequest(this, httpRequest);
+   }
+
+   /**
 * Create a new proxy interface against a 3rd-party REST interface.
 *
 * 
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 93640ea..b6d300f 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
@@ -61,7 +61,7 @@ import org.apache.juneau.xml.*;
  * {@doc juneau-rest-client}
  * 
  */
-public final class RestRequest extends BeanSession implements HttpUriRequest, 
Configurable {
+public class RestRequest extends BeanSession implements HttpUriRequest, 
Configurable {
 
private static final ContentType TEXT_PLAIN = 
ContentType.create("text/plain");
 
@@ -89,16 +89,15 @@ public final class RestRequest extends BeanSession 
implements HttpUriRequest, Co
 *
 * @param client The client that created this request.
 * @param request The wrapped Apache HTTP client request object.
-* @param uri The URI for this call.
 * @throws RestCallException If an exception or non-200 response code 
occurred during the connection attempt.
 */
-   protected RestRequest(RestClient client, HttpRequestBase request, URI 
uri) throws RestCal

[juneau] branch master updated: Javadocs

2020-05-29 Thread jamesbognar
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 d9d8fa9  Javadocs
d9d8fa9 is described below

commit d9d8fa9a3c84b101e554cd8704dcf7808c43df7a
Author: JamesBognar 
AuthorDate: Fri May 29 12:03:34 2020 -0400

Javadocs
---
 .../java/org/apache/juneau/BeanContextBuilder.java |   6 +-
 .../33.LoggingAndDebugging.html|  23 +-
 juneau-doc/src/main/javadoc/overview.html  | 406 +
 juneau-doc/src/main/javadoc/resources/docs.txt |   3 +-
 .../src/main/javadoc/resources/fragments/toc.html  |   7 +-
 5 files changed, 118 insertions(+), 327 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
index 84c62bc..d68b44f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
@@ -418,7 +418,7 @@ public class BeanContextBuilder extends ContextBuilder {
 * BeanContext configuration property:  Bean dictionary.
 *
 * 
-*  Deprecated - Use {@link #dictonary(Object...)}
+*  Deprecated - Use {@link #dictionary(Object...)}
 * 
 */
@SuppressWarnings("javadoc")
@@ -2986,7 +2986,7 @@ public class BeanContextBuilder extends ContextBuilder {
 * BeanContext configuration property:  POJO swaps.
 *
 * 
-*  Deprecated - Use {@link #swapsReplace(Object...)}
+*  Deprecated - Use {@link #set(String,Object)}
 * 
 */
@SuppressWarnings("javadoc")
@@ -3000,7 +3000,7 @@ public class BeanContextBuilder extends ContextBuilder {
 * BeanContext configuration property:  POJO swaps.
 *
 * 
-*  Deprecated - Use {@link #swapsRemove(Object...)}
+*  Deprecated - Use {@link #removeFrom(String,Object)}
 * 
 */
@SuppressWarnings("javadoc")
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/33.LoggingAndDebugging.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/33.LoggingAndDebugging.html
index 3d04f59..1b74b4a 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/33.LoggingAndDebugging.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/33.LoggingAndDebugging.html
@@ -13,7 +13,7 @@
  
***/
  -->
 
-{8.1.0-new} 
+{8.1.0-new,8.1.4-updated} 
 Logging / Debugging
 
 
@@ -102,11 +102,15 @@ Logging / Debugging
}
}
 
-   static MockRest MY_REST = 
MockRest.build(MyRestClass.class, null);
-
@Test
public void test() throws Exception {
-   MY_REST.post("/foo?foo=bar", 
"Foo").header("Foo", 
"bar").execute().assertStatus(500);
+   MockRestClient.create(MyRestClass.class)
+   .simpleJson()
+   .build()
+   .post<("/foo?foo=bar", "Foo")
+   .header("Foo", "bar")
+   .run()
+   .assertStatus().is(500);
}
 
 
@@ -311,12 +315,15 @@ Logging / Debugging
}
}
 
-   static MockRest MY_REST = 
MockRest.build(MyRestClass.class, null);
-
@Test
public void test() throws Exception {
-   MY_REST.post("/foo?foo=bar", 
"Foo").header("Foo", 
"bar").execute().assertStatus(500);
-   MY_REST.post("/foo?foo=bar", 
"Foo").header("Foo", 
"bar").execute().assertStatus(500);
+   MockRestClient.create(MyRestClass.class)
+   .json()
+   .build()
+   .post("/foo?foo=bar", "Foo")
+   .header("Foo", "bar")
+   .run()
+   .assertStatus().is(500);
}
 
 
diff --git a/juneau-doc/src/main/javadoc/overview.html 
b/juneau-doc/src/main/javadoc/overview.html
index 6db0989..c12ab8f 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -439,7 +439,7 @@
Stylesheets8.1.0-updated

Default Headers
-   Logging / Debugging8.1.0-new
+   Logging / Debugging8.1.0-new,8.1.4-updated
HTTP Status Codes
Overloading HTTP 
Methods
 

[juneau] branch master updated: Javadocs.

2020-05-29 Thread jamesbognar
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 e6c9cf0  Javadocs.
e6c9cf0 is described below

commit e6c9cf0e434e9d88d3bdd3412941e5faa0d4709d
Author: JamesBognar 
AuthorDate: Fri May 29 11:10:03 2020 -0400

Javadocs.
---
 juneau-doc/docs/ReleaseNotes/8.1.4.html|   8 +-
 juneau-doc/docs/Topics/10.juneau-rest-mock.html|  14 +-
 .../Topics/10.juneau-rest-mock/01.MockRest.html| 275 -
 .../10.juneau-rest-mock/01.MockRestClient.html | 162 
 .../Topics/10.juneau-rest-mock/02.MockRemote.html  | 126 --
 5 files changed, 169 insertions(+), 416 deletions(-)

diff --git a/juneau-doc/docs/ReleaseNotes/8.1.4.html 
b/juneau-doc/docs/ReleaseNotes/8.1.4.html
index 1d9c4b2..a114811 100644
--- a/juneau-doc/docs/ReleaseNotes/8.1.4.html
+++ b/juneau-doc/docs/ReleaseNotes/8.1.4.html
@@ -477,6 +477,10 @@
p>
 
 
-juneau-doc
+juneau-rest-mock
 
-
+   
+   The MockRest and MockRemote classes have been 
remove entirely and all existing functions
+   have been moved into the improved {@link 
oajr.mock2.MockRestClient} class.  All REST test mocking can be 
+   done through this single class.
+
diff --git a/juneau-doc/docs/Topics/10.juneau-rest-mock.html 
b/juneau-doc/docs/Topics/10.juneau-rest-mock.html
index c4969da..7161095 100644
--- a/juneau-doc/docs/Topics/10.juneau-rest-mock.html
+++ b/juneau-doc/docs/Topics/10.juneau-rest-mock.html
@@ -13,7 +13,7 @@
  
***/
  -->
 
-{8.1.0-new} 
+{8.1.0-new,8.1.4-updated} 
 juneau-rest-mock
 
 Maven Dependency
@@ -41,15 +41,3 @@ juneau-rest-mock
Each of the APIs provide the ability to fully test your server and 
client REST interfaces without the
need for a running servlet container.
 
-
-
-   The API consists of the following classes:
-
-
-   {@link oajr.mock2}
-   
-   {@link oajr.mock2.MockRest} - API for unit 
testing {@link oajr.annotation.Rest @Rest}-annotated classes.
-   {@link oajr.mock2.MockRemote} - API for unit 
testing {@link oaj.http.remote.Remote @Remote}-annotated classes.
-   
-
-
diff --git a/juneau-doc/docs/Topics/10.juneau-rest-mock/01.MockRest.html 
b/juneau-doc/docs/Topics/10.juneau-rest-mock/01.MockRest.html
deleted file mode 100644
index 2813d2f..000
--- a/juneau-doc/docs/Topics/10.juneau-rest-mock/01.MockRest.html
+++ /dev/null
@@ -1,275 +0,0 @@
-
-
-{8.1.0-new} 
-MockRest
-
-
-   The {@link oajr.mock2.MockRest} class is used for performing serverless 
unit testing of {@link oajr.annotation.Rest @Rest}-annotated
-   classes.  These include both parent resource classes that extend from 
{@link oajr.RestServlet} and child resources that do not.
-
-
-   The API consists of the following classes:
-   
-
-   {@link oajr.mock2}
-   
-   {@link oajr.mock2.MockRest}
-   The API for instantiating mocks of REST resource 
classes.
-   {@link oajr.mock2.MockServletRequest}
-   An implementation of {@link 
javax.servlet.http.HttpServletRequest} with additional convenience methods for 
building requests.
-   {@link oajr.mock2.MockServletResponse}
-   An implementation of {@link 
javax.servlet.http.HttpServletRequest} with additional convenience methods for 
testing responses.
-   
-
-
-   The following shows a simple example of invoking a PUT method on a 
simple REST interface and asserting
-   the correct status code and response body: 
-
-
-   public class MockTest {
-   
-   // Our REST resource to test.
-   @Rest(
-   serializers=SimpleJsonSerializer.class, 
-   parsers=JsonParser.class
-   )
-   public static class EchoRest {
-   
-   @RestMethod(
-   name=PUT, 
-   path="/echo"
-   )
-   public String echo(@Body String body) 
{
-   return body;
-   }
-   }
-   
-   // Our JUnit test.
-   @Test
-   public void testEcho() throws Exception {
-   
-   MockRest mr = 
MockRest.build(EchoRest.class);
-   
-   mr
-   .put("/echo", "'foo'")
-   .execute()
-   .assertStatus(200)
-   .assertBody("'foo'");
-   

[juneau] branch master updated: MockRestClient improvements.

2020-05-28 Thread jamesbognar
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 c02b45c  MockRestClient improvements.
c02b45c is described below

commit c02b45c68065468478b1f6f27e59256ce5ef2c76
Author: JamesBognar 
AuthorDate: Thu May 28 19:12:49 2020 -0400

MockRestClient improvements.
---
 .../rest/mock2/MockHttpClientConnection.java   |   2 +-
 .../juneau/rest/mock2/MockHttpConnection.java  |   6 +-
 .../{MockRest.java => MockHttpConnectionImpl.java} | 105 ++---
 .../apache/juneau/rest/mock2/MockRestClient.java   |   2 +-
 .../juneau/rest/mock2/MockRestClientBuilder.java   |  17 ++--
 5 files changed, 43 insertions(+), 89 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
index 5cb818b..e70cddb 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
@@ -87,7 +87,7 @@ public class MockHttpClientConnection implements 
HttpClientConnection {
target = httpHost.toURI();
}
path = target + path;
-   req = c.request(rl.getMethod(), path, 
request.getAllHeaders(), null);
+   req = c.request(rl.getMethod(), path, 
request.getAllHeaders());
} catch (Exception e) {
throw new HttpException(e.getMessage(), e);
}
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpConnection.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpConnection.java
index 53233a5..cf2cba4 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpConnection.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpConnection.java
@@ -18,8 +18,8 @@ import org.apache.http.*;
  * Represent the basic connection for mock HTTP requests.
  *
  * 
- * Used as a shim between the server and client APIs that allow the 
RestClient
- * class to send and receive mocked requests using the MockRest 
interface.
+ * Used as a shim between the server and client APIs that allow the 
MockRestClient class to send and receive mocked
+ * requests directly against @Rest-annotated beans.
  */
 public interface MockHttpConnection {
 
@@ -33,5 +33,5 @@ public interface MockHttpConnection {
 * @return A new mock request.
 * @throws Exception
 */
-   MockHttpRequest request(String method, String uri, Header[] headers, 
Object body) throws Exception;
+   MockHttpRequest request(String method, String uri, Header[] headers) 
throws Exception;
 }
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpConnectionImpl.java
similarity index 54%
rename from 
juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
rename to 
juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpConnectionImpl.java
index a0efe27..edd2fad 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpConnectionImpl.java
@@ -13,78 +13,42 @@
 package org.apache.juneau.rest.mock2;
 
 import static org.apache.juneau.rest.util.RestUtils.*;
+import static org.apache.juneau.internal.StringUtils.*;
 
-import java.io.*;
 import java.util.*;
 import java.util.concurrent.*;
 
 import org.apache.http.*;
-import org.apache.juneau.internal.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 
 /**
- * Creates a mocked interface against a REST resource class.
- *
- * 
- * Allows you to test your REST resource classes without a running servlet 
container.
- *
- * Example:
- * 
- *  public class MockTest {
- *
- * // Our REST resource to test.
- * @Rest(serializers=JsonSerializer.Simple.class, 
parsers=JsonParser.class)
- * public static class MyRest {
- *
- * @RestMethod(name=PUT, 
path="/String")
- * public String echo(@Body String b) {
- * return b;
- * }
- * }
- *
- *  @Test
- *  public void testEcho() throws Exception {
- * MockRest
- * .create(MyRest.class)
- * .json()
- * .build()
- * .put("/String", "'foo

[juneau] branch master updated: MockRestClient improvements.

2020-05-28 Thread jamesbognar
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 f24a77a  MockRestClient improvements.
f24a77a is described below

commit f24a77ac2197b176d72de53bcfa46a20a6a39491
Author: JamesBognar 
AuthorDate: Thu May 28 18:51:42 2020 -0400

MockRestClient improvements.
---
 .../org/apache/juneau/rest/mock2/MockRest.java | 38 -
 .../apache/juneau/rest/mock2/MockRestBuilder.java  | 91 --
 .../juneau/rest/mock2/MockRestClientBuilder.java   | 19 +++--
 3 files changed, 26 insertions(+), 122 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
index aa3dba6..a0efe27 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
@@ -66,22 +66,25 @@ public class MockRest implements MockHttpConnection {
private final RestContext ctx;
 
/** Debug mode enabled. */
-   protected final boolean debug;
+   private final boolean debug;
 
final String contextPath, servletPath, rootUrl;
 
/**
 * Constructor.
 *
-* @param b Builder.
+* @param impl The {@link Rest @Rest} annotated servlet.
+* @param contextPath The context path of the servlet.
+* @param servletPath The servlet path of the servlet.
+* @param debug Enable debug mode on the servlet side.
 */
-   protected MockRest(MockRestBuilder b) {
+   protected MockRest(Object impl, String contextPath, String servletPath, 
boolean debug) {
try {
-   debug = false;
-   Class c = b.impl instanceof Class ? (Class)b.impl 
: b.impl.getClass();
+   this.debug = debug;
+   Class c = impl instanceof Class ? (Class)impl : 
impl.getClass();
Map,RestContext> contexts = debug ? 
CONTEXTS_DEBUG : CONTEXTS_NORMAL;
if (! contexts.containsKey(c)) {
-   Object o = b.impl instanceof Class ? 
((Class)b.impl).newInstance() : b.impl;
+   Object o = impl instanceof Class ? 
((Class)impl).newInstance() : impl;
RestContextBuilder rcb = RestContext.create(o);
if (debug) {
rcb.debug(Enablement.TRUE);
@@ -97,10 +100,10 @@ public class MockRest implements MockHttpConnection {
contexts.put(c, rc);
}
ctx = contexts.get(c);
-   contextPath = b.contextPath;
-   if (b.servletPath.isEmpty())
-   b.servletPath = 
toValidContextPath(ctx.getPath());
-   servletPath = b.servletPath;
+   this.contextPath = contextPath;
+   if (servletPath.isEmpty())
+   servletPath = toValidContextPath(ctx.getPath());
+   this.servletPath = servletPath;
rootUrl = new 
StringBuilder().append(contextPath).append(servletPath).toString();
} catch (Exception e) {
throw new RuntimeException(e);
@@ -108,21 +111,6 @@ public class MockRest implements MockHttpConnection {
}
 
/**
-* Creates a new builder with the specified REST implementation bean or 
bean class.
-*
-* 
-* No Accept or Content-Type header is specified by 
default.
-*
-* @param impl
-*  The REST bean or bean class annotated with {@link Rest @Rest}.
-*  If a class, it must have a no-arg constructor.
-* @return A new builder.
-*/
-   public static MockRestBuilder create(Object impl) {
-   return new MockRestBuilder(impl);
-   }
-
-   /**
 * Performs a REST request against the REST interface.
 *
 * @param method The HTTP method
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestBuilder.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestBuilder.java
deleted file mode 100644
index d36644c..000
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestBuilder.java
+++ /dev/null
@@ -1,91 +0,0 @@
-// 
***
-// * Licensed to the Apache Software Foundation (ASF) under one or m

[juneau] branch master updated: MockRestClient improvements.

2020-05-28 Thread jamesbognar
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 1cda316  MockRestClient improvements.
1cda316 is described below

commit 1cda316b2f71d2f0f0028b6f3b10223d7aedbaf2
Author: JamesBognar 
AuthorDate: Thu May 28 18:21:38 2020 -0400

MockRestClient improvements.
---
 .../java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java  | 8 +---
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
index d2dc27c..3c55e88 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
@@ -168,13 +168,7 @@ public class MockRestClientBuilder extends 
RestClientBuilder {
 
@Override /* ContextBuilder */
public MockRestClient build() {
-   MockRest mr = mrb.build();
-   connectionManager(new MockHttpClientConnectionManager(mr));
-   Object rootUrl = peek(RestClient.RESTCLIENT_rootUri);
-   if (rootUrl == null)
-   rootUrl = "http://localhost;;
-   rootUrl(rootUrl + mr.rootUrl);
-   return super.build(MockRestClient.class);
+   return build(MockRestClient.class);
}
 
@Override /* ContextBuilder */



[juneau] branch master updated: MockRestClient improvements.

2020-05-28 Thread jamesbognar
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 30a347a  MockRestClient improvements.
30a347a is described below

commit 30a347a8f647977400194fb6fb2dd6350eab48ce
Author: JamesBognar 
AuthorDate: Thu May 28 18:14:49 2020 -0400

MockRestClient improvements.
---
 .../apache/juneau/rest/mock2/PathResolverTest.java |  2 +-
 .../{PathResolver.java => MockPathResolver.java}   |  4 +-
 .../org/apache/juneau/rest/mock2/MockRest.java | 42 --
 .../apache/juneau/rest/mock2/MockRestBuilder.java  | 66 --
 .../juneau/rest/mock2/MockRestClientBuilder.java   |  4 --
 5 files changed, 14 insertions(+), 104 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-mock-utest/src/test/java/org/apache/juneau/rest/mock2/PathResolverTest.java
 
b/juneau-rest/juneau-rest-mock-utest/src/test/java/org/apache/juneau/rest/mock2/PathResolverTest.java
index 69363d7..ede5c96 100644
--- 
a/juneau-rest/juneau-rest-mock-utest/src/test/java/org/apache/juneau/rest/mock2/PathResolverTest.java
+++ 
b/juneau-rest/juneau-rest-mock-utest/src/test/java/org/apache/juneau/rest/mock2/PathResolverTest.java
@@ -20,7 +20,7 @@ import org.junit.*;
 
 public class PathResolverTest {
 
-   public static class PathResolver2 extends PathResolver {
+   public static class PathResolver2 extends MockPathResolver {
 
public PathResolver2(String target, String contextPath, String 
servletPath, String pathToResolve, Map pathVars) {
super(target, contextPath, servletPath, pathToResolve, 
pathVars);
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/PathResolver.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockPathResolver.java
similarity index 97%
rename from 
juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/PathResolver.java
rename to 
juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockPathResolver.java
index fd2f590..a5df7f5 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/PathResolver.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockPathResolver.java
@@ -23,7 +23,7 @@ import org.apache.juneau.rest.util.*;
 /**
  * Used to resolve incoming URLS to the various URL artifacts of 
HttpServletRequest.
  */
-public class PathResolver {
+public class MockPathResolver {
 
private String uri, target, contextPath, servletPath, remainder;
private String error;
@@ -44,7 +44,7 @@ public class PathResolver {
 * @param pathVars
 *  Optional path variables to resolve in the context path or 
servlet path.
 */
-   public PathResolver(String target, String contextPath, String 
servletPath, String pathToResolve, Map pathVars) {
+   public MockPathResolver(String target, String contextPath, String 
servletPath, String pathToResolve, Map pathVars) {
try {
init(target, contextPath, servletPath, pathToResolve, 
pathVars);
} catch (Exception e) {
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
index a7583a5..aa3dba6 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
@@ -65,9 +65,6 @@ public class MockRest implements MockHttpConnection {
 
private final RestContext ctx;
 
-   /** Requests headers to add to every request. */
-   protected final Map headers;
-
/** Debug mode enabled. */
protected final boolean debug;
 
@@ -80,7 +77,7 @@ public class MockRest implements MockHttpConnection {
 */
protected MockRest(MockRestBuilder b) {
try {
-   debug = b.debug;
+   debug = false;
Class c = b.impl instanceof Class ? (Class)b.impl 
: b.impl.getClass();
Map,RestContext> contexts = debug ? 
CONTEXTS_DEBUG : CONTEXTS_NORMAL;
if (! contexts.containsKey(c)) {
@@ -100,7 +97,6 @@ public class MockRest implements MockHttpConnection {
contexts.put(c, rc);
}
ctx = contexts.get(c);
-   headers = new LinkedHashMap<>(b.headers);
contextPath = b.contextPath;
if (b.servletPath.isEmpty())
b.servletPath = 
toValidContextPath(ctx.getPath());
@@ -146,7 +142,7 @@ public class MockRes

[juneau] branch master updated: Remote MockRemote.

2020-05-28 Thread jamesbognar
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 e7f6480  Remote MockRemote.
e7f6480 is described below

commit e7f6480a58c957a68dd68ab46175a2936f6fdcde
Author: JamesBognar 
AuthorDate: Thu May 28 18:01:16 2020 -0400

Remote MockRemote.
---
 .../rest/test/client/RequestBeanProxyTest.java |  40 +-
 .../juneau/rest/client2/BodyAnnotationTest.java|   6 +-
 .../juneau/rest/client2/EndToEndInterfaceTest.java |  17 +-
 .../rest/client2/FormDataAnnotationTest.java   |  20 +-
 .../juneau/rest/client2/HeaderAnnotationTest.java  |  20 +-
 .../juneau/rest/client2/PathAnnotationTest.java|  16 +-
 .../juneau/rest/client2/QueryAnnotationTest.java   |  20 +-
 .../rest/client2/RemoteMethodAnnotationTest.java   |  24 +-
 .../rest/client2/RemoteResourceAnnotationTest.java |  11 +-
 .../juneau/rest/client2/RequestAnnotationTest.java |  10 +-
 .../rest/client2/ResponseAnnotationTest.java   |   2 +-
 .../org/apache/juneau/rest/mock2/MockRemote.java   | 650 -
 12 files changed, 92 insertions(+), 744 deletions(-)

diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RequestBeanProxyTest.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RequestBeanProxyTest.java
index 7e2529a..b534334 100644
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RequestBeanProxyTest.java
+++ 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RequestBeanProxyTest.java
@@ -87,7 +87,7 @@ public class RequestBeanProxyTest {
@Override public String getX7() { return "123"; }
}
 
-   static A01_RemoteResource a01a = 
MockRemote.build(A01_RemoteResource.class, A.class);
+   static A01_RemoteResource a01a = 
MockRestClient.build(A.class).getRemote(A01_RemoteResource.class);
static A01_RemoteResource a01b = 
MockRestClient.create(A.class).partSerializer(UonSerializer.class).build().getRemote(A01_RemoteResource.class);
 
@Test
@@ -136,7 +136,7 @@ public class RequestBeanProxyTest {
}
}
 
-   static A02_RemoteResource a02a = 
MockRemote.build(A02_RemoteResource.class, A.class);
+   static A02_RemoteResource a02a = 
MockRestClient.build(A.class).getRemote(A02_RemoteResource.class);
static A02_RemoteResource a02b = 
MockRestClient.create(A.class).partSerializer(UonSerializer.class).build().getRemote(A02_RemoteResource.class);
 
@Test
@@ -188,7 +188,7 @@ public class RequestBeanProxyTest {
}
}
 
-   static A03_RemoteResource a03a = 
MockRemote.build(A03_RemoteResource.class, A.class);
+   static A03_RemoteResource a03a = 
MockRestClient.build(A.class).getRemote(A03_RemoteResource.class);
static A03_RemoteResource a03b = 
MockRestClient.create(A.class).partSerializer(UonSerializer.class).build().getRemote(A03_RemoteResource.class);
 
@Test
@@ -224,7 +224,7 @@ public class RequestBeanProxyTest {
}
}
 
-   static A04_RemoteResource a04a = 
MockRemote.build(A04_RemoteResource.class, A.class);
+   static A04_RemoteResource a04a = 
MockRestClient.build(A.class).getRemote(A04_RemoteResource.class);
 
@Test
public void a04a_query_charSequence() throws Exception {
@@ -249,7 +249,7 @@ public class RequestBeanProxyTest {
}
}
 
-   static A05_RemoteResource a05a = 
MockRemote.build(A05_RemoteResource.class, A.class);
+   static A05_RemoteResource a05a = 
MockRestClient.build(A.class).getRemote(A05_RemoteResource.class);
 
@Test
public void a05a_query_reader() throws Exception {
@@ -310,7 +310,7 @@ public class RequestBeanProxyTest {
}
}
 
-   static A06_RemoteResource a06a = 
MockRemote.build(A06_RemoteResource.class, A.class);
+   static A06_RemoteResource a06a = 
MockRestClient.build(A.class).getRemote(A06_RemoteResource.class);
static A06_RemoteResource a06b = 
MockRestClient.create(A.class).partSerializer(UonSerializer.class).build().getRemote(A06_RemoteResource.class);
 
@Test
@@ -386,7 +386,7 @@ public class RequestBeanProxyTest {
}
}
 
-   static C01_RemoteResource c01a = 
MockRemote.build(C01_RemoteResource.class, C.class);
+   static C01_RemoteResource c01a = 
MockRestClient.build(C.class).getRemote(C01_RemoteResource.class);
static C01_RemoteResource c01b = 
MockRestClient.create(C.class).partSerializer(UonSerializer.class).build().getRemote(C01_RemoteResource.class);
 
@Test
@@ -438,7 +438,7 @@ public class RequestBeanProxyTest {
}
}
 
-   

[juneau] branch master updated: MockRestClient improvements.

2020-05-28 Thread jamesbognar
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 6865d15  MockRestClient improvements.
6865d15 is described below

commit 6865d1562157f1d4814b346cd471ccc55a170c82
Author: JamesBognar 
AuthorDate: Thu May 28 17:16:01 2020 -0400

MockRestClient improvements.
---
 .../org/apache/juneau/rest/mock2/MockRest.java | 111 
 .../apache/juneau/rest/mock2/MockRestBuilder.java  | 142 -
 2 files changed, 253 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
index ee910f9..a7583a5 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRest.java
@@ -20,11 +20,8 @@ import java.util.concurrent.*;
 
 import org.apache.http.*;
 import org.apache.juneau.internal.*;
-import org.apache.juneau.marshall.*;
-import org.apache.juneau.parser.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.serializer.*;
 
 /**
  * Creates a mocked interface against a REST resource class.
@@ -130,114 +127,6 @@ public class MockRest implements MockHttpConnection {
}
 
/**
-* Convenience method for creating a MockRest over the specified REST 
implementation bean or bean class.
-*
-* 
-* Accept and Content-Type headers are not added to the 
request.
-*
-* 
-* Equivalent to calling:
-* 
-*  MockRest.create(impl, null, null).build();
-* 
-*
-* @param impl
-*  The REST bean or bean class annotated with {@link Rest @Rest}.
-*  If a class, it must have a no-arg constructor.
-* @return A new {@link MockRest} object.
-*/
-   public static MockRest build(Object impl) {
-   return build(impl, null, null);
-   }
-
-   /**
-* Convenience method for creating a MockRest over the specified REST 
implementation bean or bean class.
-*
-* 
-* Accept and Content-Type headers are set to the primary 
media types on the specified marshall.
-*
-* 
-* Note that the marshall itself is not involved in any serialization 
or parsing.
-*
-* 
-* Equivalent to calling:
-* 
-*  MockRest.create(impl, 
SimpleJson.DEFAULT).marshall(m).build();
-* 
-*
-* @param impl
-*  The REST bean or bean class annotated with {@link Rest @Rest}.
-*  If a class, it must have a no-arg constructor.
-* @param m
-*  The marshall to use for specifying the Accept and 
Content-Type headers.
-*  If null, headers will be reset.
-* @return A new {@link MockRest} object.
-*/
-   public static MockRest build(Object impl, Marshall m) {
-   return create(impl).marshall(m).build();
-   }
-
-   /**
-* Convenience method for creating a MockRest over the specified REST 
implementation bean or bean class.
-*
-* 
-* Accept and Content-Type headers are set to the primary 
media types on the specified serializer and parser.
-*
-* 
-* Note that the serializer and parsers are not involved in any 
serialization or parsing.
-*
-* 
-* Equivalent to calling:
-* 
-*  MockRest.create(impl).serializer(s).parser(p).build();
-* 
-*
-* @param impl
-*  The REST bean or bean class annotated with {@link Rest @Rest}.
-*  If a class, it must have a no-arg constructor.
-* @param s
-*  The serializer to use for specifying the Content-Type 
header.
-*  If null, header will be reset.
-* @param p
-*  The parser to use for specifying the Accept header.
-*  If null, header will be reset.
-* @return A new {@link MockRest} object.
-*/
-   public static MockRest build(Object impl, Serializer s, Parser p) {
-   return create(impl).serializer(s).parser(p).build();
-   }
-
-   /**
-* Shortcut builder.
-*
-* 
-* Shortcut for calling create(impl).json().build().
-*
-* @param impl
-*  The REST bean or bean class annotated with {@link Rest @Rest}.
-*  If a class, it must have a no-arg constructor.
-* @return A new {@link MockRest} object.
-*/
-   public static MockRest buildJson(Object impl) {
-   return create(impl).json().build

[juneau] branch master updated: MockRestClient improvements.

2020-05-28 Thread jamesbognar
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 7283a1d  MockRestClient improvements.
7283a1d is described below

commit 7283a1da5335be0e1abcbe37f00829bda30938c1
Author: JamesBognar 
AuthorDate: Thu May 28 17:05:26 2020 -0400

MockRestClient improvements.
---
 .../juneau/config/store/ConfigFileStoreTest.java   |   2 +-
 .../juneau/assertions/FluentStringAssertion.java   |   2 +-
 .../org/apache/juneau/internal/StringUtils.java|  33 +-
 .../apache/juneau/rest/mock2/PathResolverTest.java | 360 +
 .../rest/mock2/MockHttpClientConnection.java   |  11 +-
 .../juneau/rest/mock2/MockHttpConnection.java  |   4 +-
 .../org/apache/juneau/rest/mock2/MockRest.java | 195 +--
 .../apache/juneau/rest/mock2/MockRestBuilder.java  |   2 +-
 .../juneau/rest/mock2/MockRestClientBuilder.java   |  14 +-
 .../juneau/rest/mock2/MockServletRequest.java  |   6 +-
 .../org/apache/juneau/rest/mock2/PathResolver.java | 237 ++
 .../java/org/apache/juneau/rest/PathsTest.java |  80 ++---
 .../annotation/RestResourcePropertiesTest.java |   2 +-
 .../rest/annotation2/PathAnnotationTest.java   | 210 ++--
 .../org/apache/juneau/rest/RestContextBuilder.java |   2 +-
 15 files changed, 820 insertions(+), 340 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/config/store/ConfigFileStoreTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/config/store/ConfigFileStoreTest.java
index ce9652e..bd29861 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/config/store/ConfigFileStoreTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/config/store/ConfigFileStoreTest.java
@@ -24,7 +24,7 @@ import org.junit.*;
 @FixMethodOrder(NAME_ASCENDING)
 public class ConfigFileStoreTest {
 
-   private static final File DIR = new File("./config");
+   private static final File DIR = new File("./target/config");
 
@After
public void cleanUp() {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
index bd851c0..6653e99 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
@@ -60,7 +60,7 @@ public class FluentStringAssertion extends 
FluentAssertion {
StringBuilder sb = new StringBuilder();
sb.append("Text did not equal expected.");
sb.append("\nExpected: 
[").append(value.replaceAll("", "").replaceAll("\n", 
"n").replaceAll("\t", "t")).append("]");
-   sb.append("\nActual  : 
[").append(text.replaceAll("", "").replaceAll("\n", 
"n").replaceAll("\t", "t")).append("]");
+   sb.append("\nActual  : [").append(text == null 
? null : text.replaceAll("", "").replaceAll("\n", 
"n").replaceAll("\t", "t")).append("]");
System.err.println(sb.toString());
}
throw new BasicAssertionError("Text did not equal 
expected.\n\tExpected=[{0}]\n\tActual=[{1}]", value, text);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
index e7cbad9..b8f8816 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
@@ -1467,7 +1467,7 @@ public final class StringUtils {
if (s == null)
return null;
 
-   if (s.indexOf('{') == -1)
+   if (m == null || m.isEmpty() || s.indexOf('{') == -1)
return s;
 
int S1 = 1;// Not in variable, looking for {
@@ -1846,6 +1846,20 @@ public final class StringUtils {
}
 
/**
+* Trims '/' characters from the beginning of the specified 
string.
+*
+* @param s The string to trim.
+* @return A new trimmed string, or the same 

[juneau] branch master updated: MockRestClient improvements.

2020-05-28 Thread jamesbognar
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 bd0ee42  MockRestClient improvements.
bd0ee42 is described below

commit bd0ee4221338b6dfd7b1de88760efdb42526cbe4
Author: JamesBognar 
AuthorDate: Thu May 28 10:40:44 2020 -0400

MockRestClient improvements.
---
 .../org/apache/juneau/rest/mock2/MockServletResponse.java  | 14 ++
 .../org/apache/juneau/rest/headers/AcceptCharsetTest.java  |  2 +-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletResponse.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletResponse.java
index ad53494..879eb39 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletResponse.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletResponse.java
@@ -91,6 +91,19 @@ public class MockServletResponse implements 
HttpServletResponse, MockHttpRespons
@Override /* HttpServletResponse */
public void setCharacterEncoding(String charset) {
this.characterEncoding = charset;
+   updateContentTypeHeader();
+   }
+
+   private void updateContentTypeHeader() {
+   String contentType = getContentType();
+   String charset = characterEncoding;
+   if (contentType != null && charset != null) {
+   if (contentType.indexOf("charset=") != -1)
+   contentType = 
contentType.replaceAll("\\;\\s*charset=.*", "");
+   if (! "UTF-8".equalsIgnoreCase(charset))
+   contentType = contentType + ";charset=" + 
charset;
+   header("Content-Type", contentType);
+   }
}
 
/**
@@ -128,6 +141,7 @@ public class MockServletResponse implements 
HttpServletResponse, MockHttpRespons
@Override /* HttpServletResponse */
public void setContentType(String type) {
setHeader("Content-Type", type);
+   updateContentTypeHeader();
}
 
/**
diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/AcceptCharsetTest.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/AcceptCharsetTest.java
index a562727..4aa7a2d 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/AcceptCharsetTest.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/AcceptCharsetTest.java
@@ -40,7 +40,7 @@ public class AcceptCharsetTest {
return "foo";
}
}
-   static MockRest a = MockRest.build(A.class);
+   static MockRestClient a = MockRestClient.build(A.class);
 
@Test
public void a01_qValues() throws Exception {



[juneau] branch master updated: MockRestClient improvements.

2020-05-28 Thread jamesbognar
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 59b077b  MockRestClient improvements.
59b077b is described below

commit 59b077b38d1a5c9c032ef54476e461903d613ed3
Author: JamesBognar 
AuthorDate: Thu May 28 10:19:56 2020 -0400

MockRestClient improvements.
---
 .../org/apache/juneau/rest/client2/RestClientBuilder.java  | 14 ++
 .../java/org/apache/juneau/rest/client2/RestRequest.java   | 14 ++
 .../apache/juneau/rest/headers/ContentEncodingTest.java|  4 ++--
 3 files changed, 30 insertions(+), 2 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
index 12e88c8..0ef4c35 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
@@ -1401,6 +1401,20 @@ public class RestClientBuilder extends 
BeanContextBuilder {
}
 
/**
+* Sets the value for the Content-Encoding request header on all 
requests.
+*
+* 
+* This is a shortcut for calling 
header("Content-Encoding", value);
+*
+* @param value The new header value.
+* @return This object (for method chaining).
+*/
+   @ConfigurationProperty
+   public RestClientBuilder contentEncoding(Object value) {
+   return header("Content-Encoding", value);
+   }
+
+   /**
 * Sets the value for the Date request header on all requests.
 *
 * 
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 23d4e4d..93640ea 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
@@ -2442,6 +2442,20 @@ public final class RestRequest extends BeanSession 
implements HttpUriRequest, Co
}
 
/**
+* Sets the value for the Content-Encoding request header.
+*
+* 
+* This is a shortcut for calling 
header("Content-Encoding", value);
+*
+* @param value The new header value.
+* @return This object (for method chaining).
+* @throws RestCallException Invalid input.
+*/
+   public RestRequest contentEncoding(Object value) throws 
RestCallException {
+   return header("Content-Encoding", value);
+   }
+
+   /**
 * Sets the value for the Date request header.
 *
 * 
diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/ContentEncodingTest.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/ContentEncodingTest.java
index 541c6e2..7137279 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/ContentEncodingTest.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/ContentEncodingTest.java
@@ -47,7 +47,7 @@ public class ContentEncodingTest {
return in;
}
}
-   static MockRest a = MockRest.build(A.class);
+   static MockRestClient a = MockRestClient.build(A.class);
 
@Test
public void a01_noCompression() throws Exception {
@@ -76,7 +76,7 @@ public class ContentEncodingTest {
return in;
}
}
-   static MockRest b = MockRest.build(B.class);
+   static MockRestClient b = MockRestClient.build(B.class);
 
@Test
public void b01_withCompression_identity() throws Exception {



[juneau] branch master updated: MockRestClient improvements.

2020-05-28 Thread jamesbognar
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 e46d393  MockRestClient improvements.
e46d393 is described below

commit e46d393132aa8facab579330d8bb1eb4a6352733
Author: JamesBognar 
AuthorDate: Thu May 28 10:05:57 2020 -0400

MockRestClient improvements.
---
 .../juneau/rest/headers/ContentTypeTest.java   | 55 ++
 1 file changed, 24 insertions(+), 31 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/ContentTypeTest.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/ContentTypeTest.java
index e7916ea..b864507 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/ContentTypeTest.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/ContentTypeTest.java
@@ -68,25 +68,24 @@ public class ContentTypeTest {
return in;
}
}
-   private static MockRest a = MockRest.build(A.class);
+   private static MockRestClient a = MockRestClient.build(A.class);
 
@Test
public void a01_defaultHeadersOnServletAnnotation_valid() throws 
Exception {
-   a.put("/a01", null)
+   a.put("/a01", null, "")
.run()
.assertBody().is("p2");
-   a.put("/a01", null).contentType("text/p1")
+   a.put("/a01", null, "text/p1")
.run()
.assertBody().is("p1");
-   a.put("/a01", null).contentType("text/p2")
+   a.put("/a01", null, "text/p2")
.run()
.assertBody().is("p2");
}
 
@Test
public void a02_defaultHeadersOnServletAnnotation_invalid() throws 
Exception {
-   a.put("/a01?noTrace=true", null)
-   .contentType("text/p3")
+   a.put("/a01?noTrace=true", null, "text/p3")
.run()
.assertStatus().is(415)
.assertBody().contains("Unsupported media-type in 
request header 'Content-Type': 'text/p3'");
@@ -107,7 +106,7 @@ public class ContentTypeTest {
return in;
}
}
-   private static MockRest b = MockRest.build(B.class);
+   private static MockRestClient b = MockRestClient.build(B.class);
 
@Test
public void b01_restMethodWithParsersSerializers_valid() throws 
Exception {
@@ -116,21 +115,21 @@ public class ContentTypeTest {
 
@Test
public void b02_restMethodWithParsersSerializers_invalid() throws 
Exception {
-   b.put("/b?noTrace=true", null)
+   b.put("/b?noTrace=true", null, "")
.run()
.assertStatus().is(415)
.assertBody().contains(
"Unsupported media-type in request header 
'Content-Type': 'text/p2'",
"Supported media-types: ['text/p3']"
);
-   b.put("/b?noTrace=true", null).contentType("text/p1")
+   b.put("/b?noTrace=true", null, "text/p1")
.run()
.assertStatus().is(415)
.assertBody().contains(
"Unsupported media-type in request header 
'Content-Type': 'text/p1'",
"Supported media-types: ['text/p3']"
);
-   b.put("/b?noTrace=true", null).contentType("text/p2")
+   b.put("/b?noTrace=true", null, "text/p2")
.run()
.assertStatus().is(415)
.assertBody().contains(
@@ -154,14 +153,14 @@ public class ContentTypeTest {
return in;
}
}
-   private static MockRest c = MockRest.build(C.class);
+   private static MockRestClient c = MockRestClient.build(C.class);
 
@Test
public void c01_restMethodAddParsersSerializersInherit() throws 
Exception {
-   c.put("/c", null).run().assertBody().is("p2");
-   c.put("/c", 
null).contentType("text/p1").run().assertBody().is("p1");
-   c.put("/c", 
null).co

[juneau] branch master updated: MockRestClient improvements.

2020-05-28 Thread jamesbognar
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 e49b119  MockRestClient improvements.
e49b119 is described below

commit e49b1196881d1cf0282b1bf30e0a61c1f462456b
Author: JamesBognar 
AuthorDate: Thu May 28 09:49:15 2020 -0400

MockRestClient improvements.
---
 .../apache/juneau/rest/client2/RestRequest.java| 39 ++-
 .../rest/mock2/MockHttpClientConnection.java   |  4 +-
 .../juneau/rest/mock2/MockHttpConnection.java  |  4 +-
 .../org/apache/juneau/rest/mock2/MockRest.java | 32 +++--
 .../apache/juneau/rest/mock2/MockRestBuilder.java  | 65 +-
 .../juneau/rest/mock2/MockRestClientBuilder.java   | 73 -
 .../juneau/rest/mock2/MockServletRequest.java  |  3 +-
 .../juneau/rest/annotation2/RoleGuardTest.java | 76 +++---
 .../org/apache/juneau/rest/util/RestUtils.java | 23 +++
 9 files changed, 232 insertions(+), 87 deletions(-)

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 fa5323a..23d4e4d 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
@@ -2666,6 +2666,44 @@ public final class RestRequest extends BeanSession 
implements HttpUriRequest, Co
}
 
/**
+* Sets the value for the X-Roles request header.
+*
+* 
+* This is a shortcut for calling header("X-Roles", 
value);
+*
+* 
+* Typically not used in production, but allows you to set roles on a 
request for use in mocked testing.
+* For example, the MockRestClient class uses this value to 
directly set roles on the HttpServletRequest
+* object.
+*
+* Example:
+* 
+*  // Admin users should be able to make POST requests.
+*  MockRestClient.create(MyRest.class)
+*  .post("/url", new MyBean())
+*  .roles("ROLE_ADMIN")
+*  .run()
+*  .assertStatus().is(200);
+*
+*  // Non-admin users should be rejected.
+*  MockRestClient.create(MyRest.class)
+*  .post("/url", new MyBean())
+*  .roles("ROLE_USER")
+*  .run()
+*  .assertStatus().is(401);
+* 
+*
+* @param value
+*  The new header value converted to a comma-delimited list.
+*  Non-string values are converted to strings using the {@link 
#toString()} method.
+* @return This object (for method chaining).
+* @throws RestCallException Invalid input.
+*/
+   public RestRequest roles(Object...value) throws RestCallException {
+   return header("X-Roles", StringUtils.join(value, ','));
+   }
+
+   /**
 * Sets the value for the TE request header.
 *
 * 
@@ -2780,7 +2818,6 @@ public final class RestRequest extends BeanSession 
implements HttpUriRequest, Co
 
try {
HttpEntityEnclosingRequestBase request2 = request 
instanceof HttpEntityEnclosingRequestBase ? 
(HttpEntityEnclosingRequestBase)request : null;
-
request.setURI(uriBuilder.build());
 
// Pick the serializer if it hasn't been overridden.
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
index b2086e6..d782795 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockHttpClientConnection.java
@@ -78,9 +78,7 @@ public class MockHttpClientConnection implements 
HttpClientConnection {
public void sendRequestHeader(HttpRequest request) throws 
HttpException, IOException {
try {
RequestLine rl = request.getRequestLine();
-   req = c.request(rl.getMethod(), rl.getUri(), null, 
null);
-   for (Header h : request.getAllHeaders())
-   req.header(h.getName(), h.getValue());
+   req = c.request(rl.getMethod(), rl.getUri(), 
request.getAllHeaders(), null);
} catch (Exception e) {
throw new HttpExceptio

[juneau] branch master updated: MockRestClient improvements.

2020-05-27 Thread jamesbognar
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 2fc6794  MockRestClient improvements.
2fc6794 is described below

commit 2fc6794ec71a79ee2857b87bd5c18fb23e82a7ce
Author: JamesBognar 
AuthorDate: Wed May 27 19:22:35 2020 -0400

MockRestClient improvements.
---
 .../juneau/assertions/FluentStringAssertion.java   |  2 +-
 .../juneau/rest/client2/RestResponseBody.java  | 14 ++--
 .../juneau/rest/mock2/MockRestClientBuilder.java   | 16 +
 .../rest/annotation2/PathAnnotationTest.java   | 28 +++
 .../juneau/rest/headers/AcceptEncodingTest.java| 42 +++---
 .../org/apache/juneau/rest/headers/AcceptTest.java | 12 +++
 6 files changed, 77 insertions(+), 37 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
index d0fa678..bd851c0 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
@@ -235,7 +235,7 @@ public class FluentStringAssertion extends 
FluentAssertion {
 */
public R isNull() throws AssertionError {
if (text != null)
-   throw new BasicAssertionError("Text was not null.");
+   throw new BasicAssertionError("Text was not null.  
Text=["+text+"]");
return returns();
}
 
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
index c006f65..5f9d121 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
@@ -341,10 +341,18 @@ public class RestResponseBody implements HttpEntity {
 *  The HTTP response message body reader, never null.
 *  For responses without a body(e.g. HTTP 204), returns an 
empty reader.
 * @return The HTTP response body as a byte array.
-* @throws IOException If an exception occurred.
+* @throws RestCallException If an exception occurred.
 */
-   public byte[] asBytes() throws IOException {
-   cache();
+   public byte[] asBytes() throws RestCallException {
+   if (cache == null) {
+   try {
+   cache = IOUtils.readBytes(entity.getContent());
+   } catch (IOException e) {
+   throw new RestCallException(e);
+   } finally {
+   response.close();
+   }
+   }
return cache;
}
 
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
index b1143d3..a1fe9cd 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
@@ -81,6 +81,22 @@ public class MockRestClientBuilder extends RestClientBuilder 
{
ignoreErrors();
}
 
+   public MockRestClientBuilder contextPath(String value) {
+   mrb.contextPath(value);
+   return this;
+   }
+
+   public MockRestClientBuilder servletPath(String value) {
+   mrb.servletPath(value);
+   return this;
+   }
+
+   public MockRestClientBuilder roles(String...values) {
+   mrb.roles(values);
+   return this;
+   }
+
+
@Override /* ContextBuilder */
public MockRestClient build() {
if (peek(BeanContext.BEAN_debug) == Boolean.TRUE)
diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/PathAnnotationTest.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/PathAnnotationTest.java
index e96fce6..51fc6d8 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/PathAnnotationTest.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/PathAnnotationTest.java
@@ -60,7 +60,7 @@ public class PathAnnotationTest {
  

[juneau] branch master updated: MockRestClient improvements.

2020-05-27 Thread jamesbognar
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 1a1c32c  MockRestClient improvements.
1a1c32c is described below

commit 1a1c32c937f11991d79669511a55f04a44f016f7
Author: JamesBognar 
AuthorDate: Wed May 27 18:29:58 2020 -0400

MockRestClient improvements.
---
 .../org/apache/juneau/rest/StatusCodesTest.java| 38 --
 1 file changed, 14 insertions(+), 24 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/StatusCodesTest.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/StatusCodesTest.java
index 9d779ce..b607352 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/StatusCodesTest.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/StatusCodesTest.java
@@ -39,7 +39,7 @@ public class StatusCodesTest {
return new StringReader(b);
}
}
-   private static MockRest a = MockRest.build(A.class);
+   private static MockRestClient a = MockRestClient.build(A.class);
 
@Test
public void a01a_OK() throws Exception {
@@ -106,12 +106,11 @@ public class StatusCodesTest {
return "OK";
}
}
-   private static MockRest b = MockRest.build(B.class);
+   private static MockRestClient b = MockRestClient.build(B.class);
 
@Test
public void b01a_nonExistentBeanProperties() throws Exception {
-   b.put("/nonExistentBeanProperties?noTrace=true", "{f2:'foo'}")
-   .json()
+   b.put("/nonExistentBeanProperties?noTrace=true", "{f2:'foo'}", 
"application/json")
.run()
.assertStatus().is(400)
.assertBody().contains(
@@ -120,8 +119,7 @@ public class StatusCodesTest {
}
@Test
public void b01b_nonExistentBeanProperties() throws Exception {
-   b.put("/nonExistentBeanProperties?noTrace=true", "{f1:'foo', 
f2:'foo'}")
-   .json()
+   b.put("/nonExistentBeanProperties?noTrace=true", "{f1:'foo', 
f2:'foo'}", "application/json")
.run()
.assertStatus().is(400)
.assertBody().contains(
@@ -130,8 +128,7 @@ public class StatusCodesTest {
}
@Test
public void b02_wrongDataType() throws Exception {
-   b.put("/wrongDataType?noTrace=true", "{f1:'foo'}")
-   .json()
+   b.put("/wrongDataType?noTrace=true", "{f1:'foo'}", 
"application/json")
.run()
.assertStatus().is(400)
.assertBody().contains(
@@ -140,8 +137,7 @@ public class StatusCodesTest {
}
@Test
public void b03_parseIntoNonConstructableBean() throws Exception {
-   b.put("/parseIntoNonConstructableBean?noTrace=true", "{f1:1}")
-   .json()
+   b.put("/parseIntoNonConstructableBean?noTrace=true", "{f1:1}", 
"application/json")
.run()
.assertStatus().is(400)
.assertBody().contains(
@@ -150,8 +146,7 @@ public class StatusCodesTest {
}
@Test
public void b04_parseIntoNonStaticInnerClass() throws Exception {
-   b.put("/parseIntoNonStaticInnerClass?noTrace=true", "{f1:1}")
-   .json()
+   b.put("/parseIntoNonStaticInnerClass?noTrace=true", "{f1:1}", 
"application/json")
.run()
.assertStatus().is(400)
.assertBody().contains(
@@ -160,8 +155,7 @@ public class StatusCodesTest {
}
@Test
public void b05_parseIntoNonStaticInnerClass() throws Exception {
-   b.put("/parseIntoNonPublicInnerClass?noTrace=true", "{f1:1}")
-   .json()
+   b.put("/parseIntoNonPublicInnerClass?noTrace=true", "{f1:1}", 
"application/json")
.run()
.assertStatus().is(400)
.assertBody().contains(
@@ -170,8 +164,7 @@ public class StatusCodesTest {
}
@Test
public void b06_thrownConstructorException() throws Exception {
-   b.put("/thrownConstructorException?noTrace=true

[juneau] branch master updated: MockRestClient improvements.

2020-05-27 Thread jamesbognar
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 cebe62c  MockRestClient improvements.
cebe62c is described below

commit cebe62cdf6065ed5dfceb43ec78b3a8658007c86
Author: JamesBognar 
AuthorDate: Wed May 27 18:23:34 2020 -0400

MockRestClient improvements.
---
 .../main/ConfigurablePropertyCodeGenerator.java|   2 +-
 .../juneau/rest/client2/RestClientBuilder.java |  47 
 .../juneau/rest/mock2/MockRestClientBuilder.java   | 310 +
 .../juneau/rest/mock2/MockServletRequest.java  |   5 +
 .../apache/juneau/rest/responses/BasicTest.java|  42 ++-
 5 files changed, 381 insertions(+), 25 deletions(-)

diff --git 
a/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java 
b/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
index 39ab810..d2f071d 100644
--- 
a/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++ 
b/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
@@ -67,7 +67,7 @@ public class ConfigurablePropertyCodeGenerator {
JsonSerializerBuilder.class,
JsoParserBuilder.class,
JsoSerializerBuilder.class,
-   MockRestClient.class,
+   MockRestClientBuilder.class,
MsgPackParserBuilder.class,
MsgPackSerializerBuilder.class,
OpenApiParserBuilder.class,
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
index 9ab33a1..12e88c8 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
@@ -4722,6 +4722,7 @@ public class RestClientBuilder extends BeanContextBuilder 
{
 * @return This object (for method chaining).
 * @see HttpClientBuilder#disableRedirectHandling()
 */
+   @ConfigurationProperty
public RestClientBuilder disableRedirectHandling() {
httpClientBuilder.disableRedirectHandling();
return this;
@@ -4738,6 +4739,7 @@ public class RestClientBuilder extends BeanContextBuilder 
{
 * @return This object (for method chaining).
 * @see HttpClientBuilder#setRedirectStrategy(RedirectStrategy)
 */
+   @ConfigurationProperty
public RestClientBuilder redirectStrategy(RedirectStrategy 
redirectStrategy) {
httpClientBuilder.setRedirectStrategy(redirectStrategy);
return this;
@@ -4750,6 +4752,7 @@ public class RestClientBuilder extends BeanContextBuilder 
{
 * @return This object (for method chaining).
 * @see HttpClientBuilder#setDefaultCookieSpecRegistry(Lookup)
 */
+   @ConfigurationProperty
public RestClientBuilder 
defaultCookieSpecRegistry(Lookup cookieSpecRegistry) {

httpClientBuilder.setDefaultCookieSpecRegistry(cookieSpecRegistry);
return this;
@@ -4762,6 +4765,7 @@ public class RestClientBuilder extends BeanContextBuilder 
{
 * @return This object (for method chaining).
 * @see HttpClientBuilder#setRequestExecutor(HttpRequestExecutor)
 */
+   @ConfigurationProperty
public RestClientBuilder requestExecutor(HttpRequestExecutor 
requestExec) {
httpClientBuilder.setRequestExecutor(requestExec);
return this;
@@ -4779,6 +4783,7 @@ public class RestClientBuilder extends BeanContextBuilder 
{
 * @return This object (for method chaining).
 * @see HttpClientBuilder#setSSLHostnameVerifier(HostnameVerifier)
 */
+   @ConfigurationProperty
public RestClientBuilder sslHostnameVerifier(HostnameVerifier 
hostnameVerifier) {
httpClientBuilder.setSSLHostnameVerifier(hostnameVerifier);
return this;
@@ -4795,6 +4800,7 @@ public class RestClientBuilder extends BeanContextBuilder 
{
 * @return This object (for method chaining).
 * @see HttpClientBuilder#setPublicSuffixMatcher(PublicSuffixMatcher)
 */
+   @ConfigurationProperty
public RestClientBuilder publicSuffixMatcher(PublicSuffixMatcher 
publicSuffixMatcher) {
httpClientBuilder.setPublicSuffixMatcher(publicSuffixMatcher);
return this;
@@ -4812,6 +4818,7 @@ public class RestClientBuilder extends BeanContextBuilder 
{
 * @return This object (for method chaining).
 * @see HttpClientBuilder#setSSLContext(SSLContext)
 */
+   @ConfigurationProperty
public

[juneau] branch master updated: MockRestClient improvements.

2020-05-27 Thread jamesbognar
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 ee89324  MockRestClient improvements.
ee89324 is described below

commit ee893248d63ab0b20316e4a1ce81bf1068c4e708
Author: JamesBognar 
AuthorDate: Wed May 27 17:59:47 2020 -0400

MockRestClient improvements.
---
 .../org/apache/juneau/utils/StringUtilsTest.java   | 14 
 .../org/apache/juneau/internal/StringUtils.java| 42 ++
 .../org/apache/juneau/rest/client2/RestClient.java |  3 +-
 .../apache/juneau/rest/headers/HeadersTest.java| 18 +-
 4 files changed, 66 insertions(+), 11 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java
index 980ac79..7c1cf3a 100755
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java
@@ -1020,4 +1020,18 @@ public class StringUtilsTest {
assertObjectEquals("['x','y','z']", 
splitMethodArgs("x,y,z"));
assertObjectEquals("['x','y,d>','z']", 
splitMethodArgs("x,y,d>,z"));
}
+
+   
//
+   // fixUrl(String)
+   
//
+   @Test
+   public void testFixUrl() throws Exception {
+   assertEquals(null, fixUrl(null));
+   assertEquals("", fixUrl(""));
+   assertEquals("xxx", fixUrl("xxx"));
+   assertEquals("+x+x+", fixUrl(" x x "));
+   assertEquals("++x++x++", fixUrl("  x  x  "));
+   assertEquals("foo%7Bbar%7Dbaz", fixUrl("foo{bar}baz"));
+   assertEquals("%7Dfoo%7Bbar%7Dbaz%7B", fixUrl("}foo{bar}baz{"));
+   }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
index f69e05f..e7cbad9 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
@@ -2838,4 +2838,46 @@ public final class StringUtils {
 
return l.toArray(new String[l.size()]);
}
+
+   private static final AsciiSet URI_CHARS = 
AsciiSet.create().chars("?#+%;/:@&=+$,-_.!~*'()").range('0','9').range('A','Z').range('a','z').build();
+
+   /**
+* Attempts to escape any invalid characters found in a URI.
+*
+* @param in The URI to fix.
+* @return The fixed URI.
+*/
+   public static String fixUrl(String in) {
+
+   if (in == null)
+   return null;
+
+   StringBuilder sb = null;
+
+   int m = 0;
+   for (int i = 0; i < in.length(); i++) {
+   char c = in.charAt(i);
+   if (c <= 127 && ! URI_CHARS.contains(c)) {
+   sb = append(sb, in.substring(m, i));
+   if (c == ' ')
+   sb.append("+");
+   else
+   sb.append('%').append(toHex2(c));
+   m = i+1;
+   }
+   }
+   if (sb != null) {
+   sb.append(in.substring(m));
+   return sb.toString();
+   }
+   return in;
+
+   }
+
+   private static StringBuilder append(StringBuilder sb, String in) {
+   if (sb == null)
+   return new StringBuilder(in);
+   sb.append(in);
+   return sb;
+   }
 }
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 f61b708..b197ef2 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
@@ -3521,8 +3521,7 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {

[juneau] branch master updated: MockRestClient improvements.

2020-05-27 Thread jamesbognar
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 54d773e  MockRestClient improvements.
54d773e is described below

commit 54d773eb260162de82b02d2f636f1755a0c9add2
Author: JamesBognar 
AuthorDate: Wed May 27 17:10:54 2020 -0400

MockRestClient improvements.
---
 .../apache/juneau/rest/client2/RestRequest.java|  4 +-
 .../rest/annotation2/BodyAnnotationTest.java   | 98 +++---
 .../rest/annotation2/FormDataAnnotationTest.java   |  8 +-
 .../annotation2/HasFormDataAnnotationTest.java |  2 +-
 .../rest/annotation2/HasQueryAnnotationTest.java   |  2 +-
 .../rest/annotation2/QueryAnnotationTest.java  | 10 +--
 .../juneau/rest/annotation2/RestHookTest.java  | 16 ++--
 .../annotation2/RestResourcePojoSwapsTest.java | 10 +--
 8 files changed, 75 insertions(+), 75 deletions(-)

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 8acc59d..fa5323a 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
@@ -1890,7 +1890,7 @@ public final class RestRequest extends BeanSession 
implements HttpUriRequest, Co
 * @throws RestCallException If a retry was attempted, but the entity 
was not repeatable.
 */
public RestRequest stringBody(String input) throws RestCallException {
-   return body(new StringReader(input));
+   return body(input == null ? null : new StringReader(input));
}
 
/**
@@ -2803,7 +2803,7 @@ public final class RestRequest extends BeanSession 
implements HttpUriRequest, Co
 
if (hasInput || formData != null) {
 
-   if (hasInput && formData != null)
+   if (hasInput && formData != null && input != 
null)
throw new RestCallException("Both input 
and form-data found on same request.");
 
if (request2 == null)
diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/BodyAnnotationTest.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/BodyAnnotationTest.java
index 1638f94..14b20ea 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/BodyAnnotationTest.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/BodyAnnotationTest.java
@@ -383,11 +383,11 @@ public class BodyAnnotationTest {
@Override public String toString() { return s; }
}
}
-   private static MockRest b = MockRest.build(B.class);
+   private static MockRestClient b = MockRestClient.build(B.class);
 
@Test
public void b01a_onPojo_StringTransform() throws Exception {
-   b.put("/StringTransform", "'foo'").json()
+   b.put("/StringTransform", "'foo'", "application/json")
.run()
.assertBody().is("'foo'");
}
@@ -400,25 +400,25 @@ public class BodyAnnotationTest {
}
@Test
public void b02a_onPojo_Bean() throws Exception {
-   b.put("/Bean", "{f1:'a'}").json()
+   b.put("/Bean", "{f1:'a'}", "application/json")
.run()
.assertBody().is("{f1:'a'}");
}
@Test
public void b02b_onPojo_Bean_noContentType() throws Exception {
-   b.put("/Bean", "(f1=a)")
+   b.put("/Bean", "(f1=a)", "text/openapi")
.run()
.assertStatus().is(415);
}
@Test
public void b03a_onPojo_BeanList() throws Exception {
-   b.put("/BeanList", "[{f1:'a'}]").json()
+   b.put("/BeanList", "[{f1:'a'}]", "application/json")
.run()
.assertBody().is("[{f1:'a'}]");
}
@Test
public void b03b_onPojo_BeanList_noContentType() throws Exception {
-   b.put("/BeanList", "(f1=a)")
+   b.put("/BeanList", "(f1=a)", "text/openapi")
.run()
.assert

[juneau] branch master updated: MockRestClient improvements.

2020-05-27 Thread jamesbognar
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 ea4072c  MockRestClient improvements.
ea4072c is described below

commit ea4072cbfd3a4e795399070bb7ff17dbcc09013f
Author: JamesBognar 
AuthorDate: Wed May 27 16:50:19 2020 -0400

MockRestClient improvements.
---
 .../org/apache/juneau/rest/client2/RestClient.java | 76 +-
 .../apache/juneau/rest/client2/RestRequest.java| 39 ++-
 .../annotation2/AnnotationInheritanceTest.java |  4 +-
 .../rest/annotation2/BodyAnnotationTest.java   | 25 +++
 4 files changed, 127 insertions(+), 17 deletions(-)

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 2f18fc7..f61b708 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
@@ -2137,7 +2137,6 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
return request("GET", null, false);
}
 
-
/**
 * Perform a PUT request against the specified URL.
 *
@@ -2181,6 +2180,31 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
}
 
/**
+* Perform a PUT request against the specified URL using a plain 
text body bypassing the serializer.
+*
+* @param url
+*  The URL of the remote REST resource.
+*  Can be any of the following types:
+*  
+*  {@link URIBuilder}
+*  {@link URI}
+*  {@link URL}
+*  {@link String}
+*  {@link Object} - Converted to 
String using toString()
+*  
+* @param body
+*  The object to serialize and transmit to the URL as the body of 
the request bypassing the serializer.
+* @param contentType The content type of the request.
+* @return
+*  A {@link RestRequest} object that can be further tailored 
before executing the request
+*  and getting the response as a parsed object.
+* @throws RestCallException If any authentication errors occurred.
+*/
+   public RestRequest put(Object url, String body, String contentType) 
throws RestCallException {
+   return request("PUT", url, 
true).stringBody(body).contentType(contentType);
+   }
+
+   /**
 * Same as {@link #put(Object, Object)} but don't specify the input yet.
 *
 * 
@@ -2253,6 +2277,32 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
}
 
/**
+* Perform a POST request against the specified URL as a plain 
text body bypassing the serializer.
+*
+* @param url
+*  The URL of the remote REST resource.
+*  Can be any of the following types:
+*  
+*  {@link URIBuilder}
+*  {@link URI}
+*  {@link URL}
+*  {@link String}
+*  {@link Object} - Converted to 
String using toString()
+*  
+* @param body
+*  The object to serialize and transmit to the URL as the body of 
the request bypassing the serializer.
+* @param contentType
+*  The content type of the request.
+* @return
+*  A {@link RestRequest} object that can be further tailored 
before executing the request and getting the response
+*  as a parsed object.
+* @throws RestCallException If any authentication errors occurred.
+*/
+   public RestRequest post(Object url, String body, String contentType) 
throws RestCallException {
+   return request("POST", url, 
true).stringBody(body).contentType(contentType);
+   }
+
+   /**
 * Same as {@link #post(Object, Object)} but don't specify the input 
yet.
 *
 * 
@@ -2524,6 +2574,30 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
}
 
/**
+* Perform a PATCH request against the specified URL as a plain 
text body bypassing the serializer.
+*
+* @param url
+*  The URL of the remote REST resource.
+*  Can be any of the following types:
+*  
+*  {@link URIBuilder}
+*  {@link URI}
+*  {@link URL}
+*  {@link String}
+*  {@link Object

[juneau] branch master updated: MockRestClient improvements.

2020-05-27 Thread jamesbognar
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 a591f39  MockRestClient improvements.
a591f39 is described below

commit a591f39cafb44ab29c8036500c5f62aacf5138fd
Author: JamesBognar 
AuthorDate: Wed May 27 12:54:08 2020 -0400

MockRestClient improvements.
---
 .../java/org/apache/juneau/rest/client2/RestClient.java   | 13 +
 .../java/org/apache/juneau/rest/client2/RestResponse.java | 15 +++
 .../org/apache/juneau/rest/client2/RestResponseBody.java  | 15 +++
 .../juneau/rest/annotation2/HeaderAnnotationTest.java |  2 +-
 .../rest/annotation2/PathRemainderAnnotationTest.java |  4 ++--
 .../juneau/rest/annotation2/RestMethodInheritTest.java|  8 
 .../org/apache/juneau/rest/headers/AcceptCharsetTest.java |  4 ++--
 .../org/apache/juneau/rest/headers/ClientVersionTest.java |  4 ++--
 .../java/org/apache/juneau/rest/helper/HyperlinkTest.java |  2 +-
 .../org/apache/juneau/rest/helper/ReaderResourceTest.java |  2 +-
 .../org/apache/juneau/rest/helper/StreamResourceTest.java |  2 +-
 11 files changed, 57 insertions(+), 14 deletions(-)

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 30dc7b8..ffc50ad 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
@@ -2076,6 +2076,19 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
}
 
/**
+* Perform a GET request against the root URL.
+*
+* @return
+*  A {@link RestRequest} object that can be further tailored 
before executing the request and getting the response
+*  as a parsed object.
+* @throws RestCallException If any authentication errors occurred.
+*/
+   public RestRequest get() throws RestCallException {
+   return request("GET", null, false);
+   }
+
+
+   /**
 * Perform a PUT request against the specified URL.
 *
 * @param url
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponse.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponse.java
index 90ea5e8..cc202dd 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponse.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponse.java
@@ -25,6 +25,7 @@ import org.apache.http.params.*;
 import org.apache.http.util.*;
 import org.apache.juneau.*;
 import org.apache.juneau.assertions.*;
+import org.apache.juneau.http.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.httppart.bean.*;
 import org.apache.juneau.utils.*;
@@ -329,6 +330,20 @@ public class RestResponse implements HttpResponse {
return getHeader(name).assertThatDate();
}
 
+   public FluentStringAssertion assertCharset() throws 
RestCallException {
+   return new FluentStringAssertion<>(getCharacterEncoding(), 
this);
+   }
+
+   public String getCharacterEncoding() throws RestCallException {
+   Set s = getContentType().getParameters().get("charset");
+   return s == null ? "utf-8" : s.iterator().next();
+
+   }
+
+   public ContentType getContentType() throws RestCallException {
+   return getHeader("Content-Type").as(ContentType.class);
+   }
+

//--
// Body

//--
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
index 7a221f6..fc0db44 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
@@ -334,6 +334,21 @@ public class RestResponseBody implements HttpEntity {
}
}
 
+
+   /**
+* Returns the HTTP response message body as a byte array.
+*
+*  The HTTP response message body reader, never null.
+*  For responses without a body(e.g. HTTP 204), returns an 
empty rea

[juneau] branch master updated: MockRestClient improvements.

2020-05-27 Thread jamesbognar
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 7960cfb  MockRestClient improvements.
7960cfb is described below

commit 7960cfb1478e789d2259fbc921474087b96a5b2c
Author: JamesBognar 
AuthorDate: Wed May 27 12:20:41 2020 -0400

MockRestClient improvements.
---
 .../juneau/rest/mock2/MockServletResponse.java |   2 +-
 .../org/apache/juneau/rest/StatusCodesTest.java|  28 +-
 .../rest/annotation2/BodyAnnotationTest.java   |  54 +--
 .../rest/annotation2/FormDataAnnotationTest.java   |  16 +-
 .../rest/annotation2/HeaderAnnotationTest.java |  16 +-
 .../rest/annotation2/PathAnnotationTest.java   | 194 -
 .../annotation2/PathRemainderAnnotationTest.java   |   8 +-
 .../rest/annotation2/QueryAnnotationTest.java  |  16 +-
 .../rest/annotation2/ResponseAnnotationTest.java   |  54 +--
 .../rest/annotation2/RestResourceParsersTest.java  |   6 +-
 .../juneau/rest/annotation2/RoleGuardTest.java | 474 ++---
 .../apache/juneau/rest/exceptions/BasicTest.java   | 270 ++--
 .../juneau/rest/headers/AcceptCharsetTest.java |   2 +-
 .../juneau/rest/headers/AcceptEncodingTest.java|  20 +-
 .../org/apache/juneau/rest/headers/AcceptTest.java |  12 +-
 .../juneau/rest/headers/ContentEncodingTest.java   |   2 +-
 .../juneau/rest/headers/ContentTypeTest.java   |  14 +-
 .../apache/juneau/rest/responses/BasicTest.java|  98 ++---
 18 files changed, 643 insertions(+), 643 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletResponse.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletResponse.java
index ad53494..c650556 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletResponse.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletResponse.java
@@ -384,7 +384,7 @@ public class MockServletResponse implements 
HttpServletResponse, MockHttpRespons
 *
 * @return A new fluent-style assertion object.
 */
-   public FluentIntegerAssertion assertStatus() {
+   public FluentIntegerAssertion assertStatusCode() {
return new FluentIntegerAssertion<>(getStatus(), this);
}
 
diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/StatusCodesTest.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/StatusCodesTest.java
index 9d779ce..9816d52 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/StatusCodesTest.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/StatusCodesTest.java
@@ -45,7 +45,7 @@ public class StatusCodesTest {
public void a01a_OK() throws Exception {
a.put("/a01", "foo")
.run()
-   .assertStatus().is(200);
+   .assertStatusCode().is(200);
}
 

//=
@@ -113,7 +113,7 @@ public class StatusCodesTest {
b.put("/nonExistentBeanProperties?noTrace=true", "{f2:'foo'}")
.json()
.run()
-   .assertStatus().is(400)
+   .assertStatusCode().is(400)
.assertBody().contains(
"Unknown property 'f2' encountered while trying 
to parse into class 'org.apache.juneau.rest.StatusCodesTest$B$B01'"
);
@@ -123,7 +123,7 @@ public class StatusCodesTest {
b.put("/nonExistentBeanProperties?noTrace=true", "{f1:'foo', 
f2:'foo'}")
.json()
.run()
-   .assertStatus().is(400)
+   .assertStatusCode().is(400)
.assertBody().contains(
"Unknown property 'f2' encountered while trying 
to parse into class 'org.apache.juneau.rest.StatusCodesTest$B$B01'"
);
@@ -133,7 +133,7 @@ public class StatusCodesTest {
b.put("/wrongDataType?noTrace=true", "{f1:'foo'}")
.json()
.run()
-   .assertStatus().is(400)
+   .assertStatusCode().is(400)
.assertBody().contains(
"Invalid number"
);
@@ -143,7 +143,7 @@ public class StatusCodesTest {
b.put(&

[juneau] branch master updated: Move usage of MockRest to MockRestClient.

2020-05-27 Thread jamesbognar
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 0cc4a63  Move usage of MockRest to MockRestClient.
0cc4a63 is described below

commit 0cc4a63292f8a3c402f58372cbf77293ab124043
Author: JamesBognar 
AuthorDate: Wed May 27 12:15:45 2020 -0400

Move usage of MockRest to MockRestClient.
---
 .../juneau/html/HtmlStrippedDocSerializer.java |   7 +
 .../org/apache/juneau/rest/client2/RestClient.java |  61 +++
 .../juneau/rest/client2/RestClientBuilder.java |   4 +-
 .../apache/juneau/rest/client2/RestRequest.java| 485 +
 .../juneau/rest/annotation/HtmlDocAsideTest.java   |   4 +-
 .../rest/annotation/HtmlDocConfigAsideTest.java|   4 +-
 .../rest/annotation/HtmlDocConfigFooterTest.java   |   4 +-
 .../rest/annotation/HtmlDocConfigHeaderTest.java   |   4 +-
 .../rest/annotation/HtmlDocConfigNavTest.java  |   4 +-
 .../rest/annotation/HtmlDocConfigNavlinksTest.java |   4 +-
 .../rest/annotation/HtmlDocConfigScriptTest.java   |   4 +-
 .../rest/annotation/HtmlDocConfigStyleTest.java|   4 +-
 .../juneau/rest/annotation/HtmlDocFooterTest.java  |   4 +-
 .../juneau/rest/annotation/HtmlDocHeaderTest.java  |   4 +-
 .../juneau/rest/annotation/HtmlDocNavTest.java |   4 +-
 .../rest/annotation/HtmlDocNavlinksTest.java   |   4 +-
 .../juneau/rest/annotation/HtmlDocScriptTest.java  |   4 +-
 .../juneau/rest/annotation/HtmlDocStyleTest.java   |   4 +-
 .../annotation/ResponseHeaderAnnotationTest.java   |   8 +-
 .../annotation/ResponseStatusAnnotationTest.java   |   6 +-
 .../juneau/rest/annotation/RestMethodBpiTest.java  |  14 +-
 .../rest/annotation/RestMethodGuardsTest.java  |  14 +-
 .../rest/annotation/RestMethodMatchersTest.java|   2 +-
 .../juneau/rest/annotation/RestMethodPathTest.java |   4 +-
 .../rest/annotation/RestResourceLoggingTest.java   |  48 +-
 .../rest/annotation/RestResourceMessagesTest.java  |   4 +-
 .../rest/annotation/RestResourcePathTest.java  |   2 +-
 .../annotation/RestResourcePropertiesTest.java |   2 +-
 .../annotation/RestResourceSerializersTest.java|  11 +-
 .../annotation/RestResourceStaticFilesTest.java|  24 +-
 .../juneau/rest/annotation/RestResourceTest.java   | 106 ++---
 31 files changed, 713 insertions(+), 145 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
index 29146f6..f9c50b8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
@@ -36,6 +36,13 @@ import org.apache.juneau.serializer.*;
 public class HtmlStrippedDocSerializer extends HtmlSerializer {
 

//---
+   // Predefined instances
+   
//---
+
+   /** Default serializer, all default settings. */
+   public static final HtmlStrippedDocSerializer DEFAULT = new 
HtmlStrippedDocSerializer(PropertyStore.DEFAULT);
+
+   
//---
// Configurable properties

//---
 
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 f7c509f..30dc7b8 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
@@ -1850,6 +1850,7 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
final Level logRequestsLevel;
private final boolean logToConsole;
private StackTraceElement[] closedStack;
+   private static final ConcurrentHashMap,Context> 
requestContexts = new ConcurrentHashMap<>();
 
// These are read directly by RestCall.
final SerializerGroup serializers;
@@ -2263,6 +2264,28 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable {
}
 
/**
+* Perform a HEAD request against the specified URL.
+*
+* @param url
+*  The URL of the remote REST resource.
+*  Can be any of the follow

[juneau] branch master updated: MockRest improvements.

2020-05-27 Thread jamesbognar
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 9691ead  MockRest improvements.
9691ead is described below

commit 9691ead8b9065e695575c320207e2276204be495
Author: JamesBognar 
AuthorDate: Wed May 27 09:45:53 2020 -0400

MockRest improvements.
---
 .../rest/test/client/InterfaceProxyTest.java   |1 -
 .../apache/juneau/rest/client2/RestClientTest.java |   20 +-
 .../juneau/rest/client2/RestClientBuilder.java |7 +
 .../apache/juneau/rest/client2/RestResponse.java   |2 +-
 .../org/apache/juneau/rest/mock2/MockRemote.java   |2 +-
 .../org/apache/juneau/rest/mock2/MockRest.java |  287 +
 .../apache/juneau/rest/mock2/MockRestBuilder.java  |  302 +
 .../apache/juneau/rest/mock2/MockRestClient.java   | 1169 +---
 ...kRestClient.java => MockRestClientBuilder.java} |  472 
 .../juneau/rest/mock2/MockServletRequest.java  |2 +-
 .../juneau/rest/BasicRestInfoProviderTest.java |2 +-
 .../juneau/rest/BeanContextPropertiesTest.java |2 +-
 .../java/org/apache/juneau/rest/DebugModeTest.java |   32 +-
 .../test/java/org/apache/juneau/rest/NlsTest.java  |6 +-
 14 files changed, 581 insertions(+), 1725 deletions(-)

diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/InterfaceProxyTest.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/InterfaceProxyTest.java
index 8c20150..367bd03 100644
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/InterfaceProxyTest.java
+++ 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/InterfaceProxyTest.java
@@ -922,7 +922,6 @@ public class InterfaceProxyTest {
};
}
}
-   static MockRest interfaceProxyResource = 
MockRest.build(InterfaceProxyResource.class);
 
private static Map cache = new LinkedHashMap<>();
 
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index 25e5e61..64e6719 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -127,8 +127,24 @@ public class RestClientTest {
public void a01_overrideHttpClient() {
HttpClientBuilder cb = HttpClientBuilder.create();
CloseableHttpClient hc = HttpClientBuilder.create().build();
-   RestClient.create().httpClientBuilder(cb).build();
-   RestClient.create().httpClient(hc).build();
+   
RestClient.create().httpClientBuilder(cb).build().builder().build();
+   RestClient.create().httpClient(hc).build().builder().build();
+   }
+
+   public static class A2 extends RestClientBuilder {}
+
+   @Test
+   public void a02_useNoArgConstructor() {
+// new A2()
+// .
+// .create(A.class)
+// .simpleJson()
+// .logToConsole()
+// .build()
+// .post("/bean", bean)
+// .complete();
+// A2.create().httpClientBuilder(cb).build().builder().build();
+// RestClient.create().httpClient(hc).build().builder().build();
}
 

//--
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
index 4e86792..58fcfb2 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
@@ -125,6 +125,13 @@ public class RestClientBuilder extends BeanContextBuilder {
return new RestClient(getPropertyStore());
}
 
+   @Override /* ContextBuilder */
+   public  T build(Class c) {
+   set(RESTCLIENT_httpClient, getHttpClient());
+   set(RESTCLIENT_httpClientBuilder, getHttpClientBuilder());
+   return super.build(c);
+   }
+

//--
// Convenience marshall

[juneau] branch master updated: Tests.

2020-05-26 Thread jamesbognar
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 3346a7e  Tests.
3346a7e is described below

commit 3346a7ef9ed7e1e6414bb7315ecd711206875e51
Author: JamesBognar 
AuthorDate: Tue May 26 18:11:48 2020 -0400

Tests.
---
 .../apache/juneau/rest/client2/RestClientTest.java | 262 +
 1 file changed, 214 insertions(+), 48 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index 2afb04b..25e5e61 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -43,12 +43,14 @@ import org.apache.juneau.json.*;
 import org.apache.juneau.marshall.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.parser.ParseException;
+import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.client2.RestRequest;
 import org.apache.juneau.rest.client2.RestResponse;
 import org.apache.juneau.rest.mock2.*;
 import org.apache.juneau.serializer.*;
+import org.apache.juneau.svl.*;
 import org.apache.juneau.transform.*;
 import org.apache.juneau.xml.*;
 import org.junit.*;
@@ -4091,53 +4093,217 @@ public class RestClientTest {
.assertBody().is("{foo:null}")
.getBody().as(P1.class);
}
-//
-// @Test
-// public void p02_context_addToStringObject() throws Exception { fail(); }
-   public RestClientBuilder addTo(String name, Object value) {
-//
-// @Test
-// public void p03_context_appendToStringObject() throws Exception { 
fail(); }
-   public RestClientBuilder appendTo(String name, Object value) {
-//
-// @Test
-// public void p04_context_prependToStringObject() throws Exception { 
fail(); }
-   public RestClientBuilder prependTo(String name, Object value) {
-//
-// @Test
-// public void p05_context_addToStringStringObject() throws Exception { 
fail(); }
-   public RestClientBuilder addTo(String name, String key, Object value) {
-//
-// @Test
-// public void p06_context_apply() throws Exception { fail(); }
-   public RestClientBuilder apply(PropertyStore copyFrom) {
-//
-// @Test
-// public void p07_context_applyAnnotationsClasses() throws Exception { 
fail(); }
-   public RestClientBuilder 
applyAnnotations(java.lang.Class...fromClasses) {
-//
-// @Test
-// public void p08_context_applyAnnotationsMethods() throws Exception { 
fail(); }
-   public RestClientBuilder applyAnnotations(Method...fromMethods) {
-//
-// @Test
-// public void p09_context_applyAnnotationsAnnotationList() throws 
Exception { fail(); }
-   public RestClientBuilder applyAnnotations(AnnotationList al, 
VarResolverSession r) {
-//
-// @Test
-// public void p10_context_removeFrom() throws Exception { fail(); }
-   public RestClientBuilder removeFrom(String name, Object value) {
-//
-// @Test
-// public void p11_context_setMap() throws Exception { fail(); }
-   public RestClientBuilder set(Map properties) {
-//
-// @Test
-// public void p12_context_setStringObject() throws Exception { fail(); }
-   public RestClientBuilder set(String name, Object value) {
-//
-// @Test
-// public void p13_context_annotations() throws Exception { fail(); }
-   public RestClientBuilder annotations(Annotation...values) {
 
+   public static class P2 {
+   public String foo;
+   @Override
+   public String toString() {
+   return foo;
+   }
+   public static P2 fromString(String s) {
+   P2 p2 = new P2();
+   p2.foo = s;
+   return p2;
+   }
+   }
+
+   @Test
+   public void p02_context_addToStringObject() throws Exception {
+   MockRestClient
+   .create(A.class)
+   .simpleJson()
+   .addTo(BeanContext.BEAN_notBeanClasses,P2.class)
+   .build()
+   .post("/echoBody", P2.fromString("bar"))
+   .run()
+   .cacheBody()
+   .assertBody().is("'bar'")
+   .getBody().as(P2.class);
+   }
+
+   public static class P3 {
+   public int foo;
+   public P3 init() {
+  

[juneau] branch master updated: Tests.

2020-05-25 Thread jamesbognar
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 d6d2a04  Tests.
d6d2a04 is described below

commit d6d2a0406a46f331a898c2c7da13a35f6fe327d8
Author: JamesBognar 
AuthorDate: Mon May 25 19:04:14 2020 -0400

Tests.
---
 .../apache/juneau/rest/client2/RestClientTest.java | 754 +++--
 1 file changed, 389 insertions(+), 365 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index 5b96fc6..2afb04b 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -2548,7 +2548,7 @@ public class RestClientTest {
}
 
@Test
-   public void o001_beanContext_beanClassVisibility() throws Exception {
+   public void o01_beanContext_beanClassVisibility() throws Exception {
RestClient rc1 = MockRestClient
.create(A.class)
.simpleJson()
@@ -2619,7 +2619,7 @@ public class RestClientTest {
}
 
@Test
-   public void o002_beanContext_beanConstructorVisibility() throws 
Exception {
+   public void o02_beanContext_beanConstructorVisibility() throws 
Exception {
RestResponse rr = MockRestClient
.create(O2R.class)
.beanConstructorVisibility(Visibility.PROTECTED)
@@ -2636,12 +2636,11 @@ public class RestClientTest {
assertEquals(1, rr.getHeader("X").as(O2.class).f);
}
 
-
-   public static class O9 {
+   public static class O3 {
public int f1;
protected int f2;
 
-   O9 init() {
+   O3 init() {
f1 = 1;
f2 = 2;
return this;
@@ -2654,29 +2653,29 @@ public class RestClientTest {
}
 
@Test
-   public void o009_beanContext_beanFieldVisibility() throws Exception {
+   public void o03_beanContext_beanFieldVisibility() throws Exception {
RestResponse rr = MockRestClient
.create(O2R.class)
.beanFieldVisibility(Visibility.PROTECTED)
.simpleJson()
.build()
-   .post("/test", new O9().init())
-   .header("X", new O9().init())
+   .post("/test", new O3().init())
+   .header("X", new O3().init())
.run()
.cacheBody()
.assertBody().is("{f1:1,f2:2}")
.assertHeader("X").is("f1=1,f2=2")
;
-   assertEquals(2, rr.getBody().as(O9.class).f2);
-   assertEquals(2, rr.getHeader("X").as(O9.class).f2);
+   assertEquals(2, rr.getBody().as(O3.class).f2);
+   assertEquals(2, rr.getHeader("X").as(O3.class).f2);
}
 
-   public static interface O10I {
+   public static interface O4I {
int getF3();
void setF3(int f3);
}
 
-   public static class O10 implements O10I {
+   public static class O4 implements O4I {
public int f1, f2;
private int f3;
 
@@ -2690,7 +2689,7 @@ public class RestClientTest {
this.f3 = f3;
}
 
-   O10 init() {
+   O4 init() {
f1 = 1;
f2 = 2;
f3 = 3;
@@ -2704,84 +2703,84 @@ public class RestClientTest {
}
 
@Test
-   public void o010_beanContext_beanFilters() throws Exception {
+   public void o04_beanContext_beanFilters() throws Exception {
RestResponse rr = MockRestClient
.create(O2R.class)
-   .bpi(O10.class, "f1")
+   .bpi(O4.class, "f1")
.simpleJson()
.build()
-   .post("/test", new O10().init())
-   .header("X", new O10().init())
+   .post("/test", new O4().init())
+   .header("X", new O4().init())
.run()
.cacheBody()
.assertBody().is("{f1:1}")
.assertH

[juneau] branch master updated: JUNEAU-236

2020-05-25 Thread jamesbognar
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 8cac775  JUNEAU-236
8cac775 is described below

commit 8cac7752add3e554be5e4077ca053bd33b073df2
Author: JamesBognar 
AuthorDate: Mon May 25 18:40:27 2020 -0400

JUNEAU-236

BEAN_addRootType doesn't work without BEAN_addBeanTypes
---
 .../apache/juneau/jena/RdfSerializerSession.java   |   2 +-
 .../org/apache/juneau/BeanTraverseSession.java |  14 +-
 .../apache/juneau/json/JsonSerializerSession.java  |   2 +-
 .../juneau/msgpack/MsgPackSerializerSession.java   |   2 +-
 .../juneau/serializer/SerializerSession.java   |   5 +-
 .../apache/juneau/uon/UonSerializerSession.java|   2 +-
 .../urlencoding/UrlEncodingSerializerSession.java  |   2 +-
 .../apache/juneau/rest/client2/RestClientTest.java | 308 ++---
 8 files changed, 231 insertions(+), 106 deletions(-)

diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
index b808b73..10a971f 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
@@ -190,7 +190,7 @@ public final class RdfSerializerSession extends 
WriterSerializerSession {
sType = eType.getSerializedClassMeta(this);
}
 
-   String typeName = getBeanTypeName(eType, aType, bpm);
+   String typeName = getBeanTypeName(this, eType, aType, bpm);
 
RDFNode n = null;
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
index 2f03183..236b256 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
@@ -131,6 +131,18 @@ public class BeanTraverseSession extends BeanSession {
}
 
/**
+* Returns true if we're processing the root node.
+*
+* 
+* Must be called after {@link #push(String, Object, ClassMeta)} and 
before {@link #pop()}.
+*
+* @return true if we're processing the root node.
+*/
+   protected final boolean isRoot() {
+   return depth == 1;
+   }
+
+   /**
 * Returns true if {@link 
BeanTraverseContext#BEANTRAVERSE_detectRecursions} is enabled, and the specified
 * object is already higher up in the traversal chain.
 *
@@ -154,7 +166,7 @@ public class BeanTraverseSession extends BeanSession {
 
/**
 * Returns true if we're about to exceed the max depth for the 
document.
-* 
+*
 * @return true if we're about to exceed the max depth for the 
document.
 */
protected final boolean willExceedDepth() {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
index c24a5cc..dd58819 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
@@ -114,7 +114,7 @@ public class JsonSerializerSession extends 
WriterSerializerSession {
}
 
sType = aType;
-   String typeName = getBeanTypeName(eType, aType, pMeta);
+   String typeName = getBeanTypeName(this, eType, aType, pMeta);
 
// Swap if necessary
PojoSwap swap = aType.getSwap(this);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerSession.java
index 88ffd7c..cf01f44 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerSession.java
@@ -97,7 +97,7 @@ public final class MsgPackSerializerSession extends 
OutputStreamSerializerSessio
}
 
sType = aType;
-   String typeName = getBeanTypeName(eType, aType, pMeta);
+   String typeName = getBeanTypeName(this, eType, aType, pMeta);
 
// Swap if necessary
PojoSwap swap = aType.getSwap(this);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache

[juneau] branch master updated: Improvements to fluent assertions on headers.

2020-05-25 Thread jamesbognar
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 01e9741  Improvements to fluent assertions on headers.
01e9741 is described below

commit 01e97411975981a13339c55a00dbf28f67224512
Author: JamesBognar 
AuthorDate: Mon May 25 17:59:23 2020 -0400

Improvements to fluent assertions on headers.
---
 .../main/java/org/apache/juneau/http/Accept.java   |   2 +-
 .../java/org/apache/juneau/http/AcceptRanges.java  |   2 +-
 .../java/org/apache/juneau/http/Authorization.java |   2 +-
 .../apache/juneau/http/BasicCsvArrayHeader.java|  13 +-
 .../org/apache/juneau/http/BasicDateHeader.java|  36 -
 .../http/BasicEntityValidatorArrayHeader.java  |   4 +-
 .../org/apache/juneau/http/BasicEnumHeader.java|   3 +-
 .../java/org/apache/juneau/http/BasicHeader.java   | 156 -
 .../org/apache/juneau/http/BasicIntegerHeader.java |  26 
 .../org/apache/juneau/http/BasicLongHeader.java|  26 
 ...{BasicUriHeader.java => BasicStringHeader.java} |  59 
 .../org/apache/juneau/http/BasicUriHeader.java |   2 +-
 .../java/org/apache/juneau/http/CacheControl.java  |   2 +-
 .../java/org/apache/juneau/http/ClientVersion.java |   2 +-
 .../java/org/apache/juneau/http/Connection.java|   2 +-
 .../org/apache/juneau/http/ContentDisposition.java |   2 +-
 .../java/org/apache/juneau/http/ContentRange.java  |   2 +-
 .../src/main/java/org/apache/juneau/http/ETag.java |   2 +-
 .../main/java/org/apache/juneau/http/Expect.java   |   2 +-
 .../java/org/apache/juneau/http/Forwarded.java |   2 +-
 .../src/main/java/org/apache/juneau/http/From.java |   2 +-
 .../src/main/java/org/apache/juneau/http/Host.java |   2 +-
 .../main/java/org/apache/juneau/http/IfRange.java  |   2 +-
 .../main/java/org/apache/juneau/http/NoTrace.java  |   2 +-
 .../main/java/org/apache/juneau/http/Origin.java   |   2 +-
 .../main/java/org/apache/juneau/http/Pragma.java   |   2 +-
 .../org/apache/juneau/http/ProxyAuthenticate.java  |   2 +-
 .../org/apache/juneau/http/ProxyAuthorization.java |   2 +-
 .../main/java/org/apache/juneau/http/Range.java|   2 +-
 .../java/org/apache/juneau/http/RetryAfter.java|   2 +-
 .../org/apache/juneau/http/SerializedHeader.java   |   2 +-
 .../main/java/org/apache/juneau/http/Server.java   |   2 +-
 .../main/java/org/apache/juneau/http/Trailer.java  |   2 +-
 .../org/apache/juneau/http/TransferEncoding.java   |   2 +-
 .../java/org/apache/juneau/http/UserAgent.java |   2 +-
 .../src/main/java/org/apache/juneau/http/Vary.java |   2 +-
 .../main/java/org/apache/juneau/http/Warning.java  |   2 +-
 .../org/apache/juneau/http/WwwAuthenticate.java|   2 +-
 .../java/org/apache/juneau/internal/Cache.java |   4 +-
 .../juneau/rest/client2/RestResponseHeader.java|  65 +
 40 files changed, 190 insertions(+), 262 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Accept.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Accept.java
index c8415fe..cf7a853 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Accept.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Accept.java
@@ -143,7 +143,7 @@ import org.apache.juneau.internal.*;
  * 
  */
 @Header("Accept")
-public class Accept extends BasicHeader {
+public class Accept extends BasicStringHeader {
 
private static final long serialVersionUID = 1L;
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/AcceptRanges.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/AcceptRanges.java
index 35846b3..69cfc15 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/AcceptRanges.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/AcceptRanges.java
@@ -61,7 +61,7 @@ import org.apache.juneau.http.annotation.*;
  * 
  */
 @Header("Accept-Ranges")
-public class AcceptRanges extends BasicHeader {
+public class AcceptRanges extends BasicStringHeader {
 
private static final long serialVersionUID = 1L;
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Authorization.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Authorization.java
index 48843ea..f2e049c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Authorization.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Authorization.java
@@ -70,7 +70,7 @@ import org.apache.juneau.http.annotation.*;
  * 
  */
 @Header("Authorization")
-public class Authorization extends BasicHeader {
+public class Authorization extends BasicStringHeader {
 
private static final long serialVersionUID 

[juneau] branch master updated: Better assertion methods in RestClient.

2020-05-24 Thread jamesbognar
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 797be14  Better assertion methods in RestClient.
797be14 is described below

commit 797be144549deaf938cc16ab08de7087b0dd3ded
Author: JamesBognar 
AuthorDate: Sun May 24 11:02:02 2020 -0400

Better assertion methods in RestClient.
---
 .../apache/juneau/utils/FluentIntAssertion.java| 116 +
 .../apache/juneau/utils/FluentStringAssertion.java | 267 +++
 .../juneau/rest/test/client/RestClientTest.java|  14 +-
 .../apache/juneau/rest/client2/MarshallTest.java   |  78 +--
 .../apache/juneau/rest/client2/RestClientTest.java | 529 +++--
 .../org/apache/juneau/rest/client2/RestClient.java |  18 +-
 .../apache/juneau/rest/client2/RestResponse.java   | 171 ++-
 .../juneau/rest/client2/RestResponseBody.java  | 217 ++---
 .../rest/client2/RestResponseBodyAssertion.java|  84 
 .../juneau/rest/client2/RestResponseHeader.java| 150 +-
 .../rest/client2/RestResponseHeaderAssertion.java  |  82 
 .../client2/RestResponseStatusCodeAssertion.java   |  40 ++
 12 files changed, 1112 insertions(+), 654 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/FluentIntAssertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/FluentIntAssertion.java
new file mode 100644
index 000..92d142d
--- /dev/null
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/FluentIntAssertion.java
@@ -0,0 +1,116 @@
+// 
***
+// * 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.utils;
+
+
+import java.util.function.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.marshall.*;
+
+/**
+ * Used for fluent assertion calls.
+ *
+ * Example:
+ * 
+ * // Validates the response status code is 200 or 404.
+ * client
+ * .get(URL)
+ * .run()
+ * .assertStatus().isOneOf(200,404);
+ * 
+ * @param  The return type.
+ */
+public class FluentIntAssertion {
+
+   private final int value;
+   private final R returns;
+
+   /**
+* Constructor.
+*
+* @param value The value being tested.
+* @param returns The object to return after the test.
+*/
+   public FluentIntAssertion(int value, R returns) {
+   this.value = value;
+   this.returns = returns;
+   }
+
+   /**
+* Asserts that the value equals the specified value.
+*
+* @param value The value to check against.
+* @return The response object (for method chaining).
+* @throws AssertionError If assertion failed.
+*/
+   public R equals(int value) throws AssertionError {
+   if (this.value != value)
+   throw new BasicAssertionError("Unexpected 
value.\n\tExpected=[{0}]\n\tActual=[{1}]", value, this.value);
+   return returns;
+   }
+
+   /**
+* Asserts that the value equals the specified value.
+*
+* @param value The value to check against.
+* @return The response object (for method chaining).
+* @throws AssertionError If assertion failed.
+*/
+   public R notEquals(int value) throws AssertionError {

[juneau] branch master updated: Tests.

2020-05-23 Thread jamesbognar
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 2ad221c  Tests.
2ad221c is described below

commit 2ad221c7cd8c778b2a4d74b30977269fd0492229
Author: JamesBognar 
AuthorDate: Sat May 23 20:30:35 2020 -0400

Tests.
---
 .../org/apache/juneau/jena/RdfParserBuilder.java   |   2 +-
 .../apache/juneau/jena/RdfSerializerBuilder.java   |   2 +-
 .../java/org/apache/juneau/BeanContextBuilder.java |  11 +-
 .../org/apache/juneau/BeanTraverseBuilder.java |   2 +-
 .../org/apache/juneau/csv/CsvParserBuilder.java|   2 +-
 .../apache/juneau/csv/CsvSerializerBuilder.java|   2 +-
 .../juneau/html/HtmlDocSerializerBuilder.java  |   2 +-
 .../org/apache/juneau/html/HtmlParserBuilder.java  |   2 +-
 .../juneau/html/HtmlSchemaSerializerBuilder.java   |   2 +-
 .../apache/juneau/html/HtmlSerializerBuilder.java  |   2 +-
 .../html/HtmlStrippedDocSerializerBuilder.java |   2 +-
 .../org/apache/juneau/jso/JsoParserBuilder.java|   2 +-
 .../apache/juneau/jso/JsoSerializerBuilder.java|   2 +-
 .../org/apache/juneau/json/JsonParserBuilder.java  |   2 +-
 .../juneau/json/JsonSchemaSerializerBuilder.java   |   2 +-
 .../apache/juneau/json/JsonSerializerBuilder.java  |   2 +-
 .../juneau/json/SimpleJsonParserBuilder.java   |   2 +-
 .../juneau/json/SimpleJsonSerializerBuilder.java   |   2 +-
 .../jsonschema/JsonSchemaGeneratorBuilder.java |   2 +-
 .../juneau/msgpack/MsgPackParserBuilder.java   |   2 +-
 .../juneau/msgpack/MsgPackSerializerBuilder.java   |   2 +-
 .../apache/juneau/oapi/OpenApiParserBuilder.java   |   2 +-
 .../juneau/oapi/OpenApiSerializerBuilder.java  |   2 +-
 .../juneau/parser/InputStreamParserBuilder.java|   2 +-
 .../org/apache/juneau/parser/ParserBuilder.java|   2 +-
 .../apache/juneau/parser/ParserGroupBuilder.java   |   2 +-
 .../apache/juneau/parser/ReaderParserBuilder.java  |   2 +-
 .../juneau/plaintext/PlainTextParserBuilder.java   |   2 +-
 .../plaintext/PlainTextSerializerBuilder.java  |   2 +-
 .../serializer/OutputStreamSerializerBuilder.java  |   2 +-
 .../juneau/serializer/SerializerBuilder.java   |   2 +-
 .../juneau/serializer/SerializerGroupBuilder.java  |   2 +-
 .../juneau/serializer/WriterSerializerBuilder.java |   2 +-
 .../juneau/soap/SoapXmlSerializerBuilder.java  |   2 +-
 .../org/apache/juneau/uon/UonParserBuilder.java|   2 +-
 .../apache/juneau/uon/UonSerializerBuilder.java|   2 +-
 .../urlencoding/UrlEncodingParserBuilder.java  |   2 +-
 .../urlencoding/UrlEncodingSerializerBuilder.java  |   2 +-
 .../org/apache/juneau/xml/XmlParserBuilder.java|   2 +-
 .../apache/juneau/xml/XmlSerializerBuilder.java|   2 +-
 .../xmlschema/XmlSchemaSerializerBuilder.java  |   2 +-
 .../apache/juneau/rest/client2/RestClientTest.java | 164 -
 .../juneau/rest/client/RestClientBuilder.java  |   2 +-
 .../juneau/rest/client2/RestClientBuilder.java |   2 +-
 .../apache/juneau/rest/mock2/MockRestClient.java   |   2 +-
 .../org/apache/juneau/rest/RestContextBuilder.java |   2 +-
 .../juneau/rest/RestMethodContextBuilder.java  |   2 +-
 47 files changed, 180 insertions(+), 85 deletions(-)

diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
index 3da3d5b..143a6a7 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
@@ -1075,7 +1075,7 @@ public class RdfParserBuilder extends ReaderParserBuilder 
{
}
 
@Override /* GENERATED - BeanContextBuilder */
-   public RdfParserBuilder implClasses(Map> values) {
+   public RdfParserBuilder implClasses(Map,Class> values) {
super.implClasses(values);
return this;
}
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
index 440ff11..e303209 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
@@ -1235,7 +1235,7 @@ public class RdfSerializerBuilder extends 
WriterSerializerBuilder {
}
 
@Override /* GENERATED - BeanContextBuilder */
-   public RdfSerializerBuilder implClasses(Map> values) {
+   public RdfSerializerBuilder implClasses(Map,Class> values) {
super.implClasses(values);
return this;
}
diff --git 
a/juneau

[juneau] branch master updated: JUNEAU-234

2020-05-23 Thread jamesbognar
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 23a46be  JUNEAU-234
23a46be is described below

commit 23a46be19ffcae97cf99b04878a0bf24e76b6ea7
Author: JamesBognar 
AuthorDate: Sat May 23 15:55:59 2020 -0400

JUNEAU-234

BEAN_ignoreInvocationExceptionsOnGetters is not working.
---
 .../main/java/org/apache/juneau/BeanContext.java   |   1 +
 .../java/org/apache/juneau/BeanContextBuilder.java |   1 +
 .../juneau/serializer/SerializerSession.java   |   6 +-
 .../apache/juneau/rest/client2/RestClientTest.java | 136 ++---
 4 files changed, 98 insertions(+), 46 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index 15db6b3..8309975 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -2501,6 +2501,7 @@ public class BeanContext extends Context implements 
MetaProvider {
 *  // An interface with a single getter.
 *  public interface MyBean {
 *  String getFoo();
+*  void setFoo(String foo);
 *  }
 *
 *  // Create a parser that uses interface proxies.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
index 51d946f..06cc834 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
@@ -3626,6 +3626,7 @@ public class BeanContextBuilder extends ContextBuilder {
 *  // An interface with a single getter.
 *  public interface MyBean {
 *  String getFoo();
+*  void setFoo(String foo);
 *  }
 *
 *  // Create a parser that uses interface proxies.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
index 56a18af..6bc7628 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
@@ -254,13 +254,17 @@ public abstract class SerializerSession extends 
BeanTraverseSession {
 *
 * @param p The bean map entry representing the bean property.
 * @param t The throwable that the bean getter threw.
+* @throws SerializeException Thrown if 
ignoreInvocationExceptionOnGetters is false.
 */
-   protected final void onBeanGetterException(BeanPropertyMeta p, 
Throwable t) {
+   protected final void onBeanGetterException(BeanPropertyMeta p, 
Throwable t) throws SerializeException {
if (listener != null)
listener.onBeanGetterException(this, t, p);
String prefix = (isDebug() ? getStack(false) + ": " : "");
addWarning("{0}Could not call getValue() on property ''{1}'' of 
class ''{2}'', exception = {3}", prefix,
p.getName(), p.getBeanMeta().getClassMeta(), 
t.getLocalizedMessage());
+   if (! isIgnoreInvocationExceptionsOnGetters())
+   throw new SerializeException(this, "{0}Could not call 
getValue() on property ''{1}'' of class ''{2}'', exception = {3}", prefix,
+   p.getName(), p.getBeanMeta().getClassMeta(), 
t.getLocalizedMessage());
}
 
/**
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index 6b50ead..1b39ec5 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -3385,51 +3385,97 @@ public class RestClientTest {
}
}
 
-// @Test
-// public void o0_beanContext_() throws Exception {
-// }
-// @Override /* GENERATED - BeanContextBuilder */
-// public  MockRestClient example(Class pojoClass, T o) {
-// super.example(pojoClass, o);
-// return this;
-// }
-//
-// @Test
-// public void o0_beanContext_() throws Exception {

[juneau] branch master updated: JUNEAU-233

2020-05-23 Thread jamesbognar
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 4247594  JUNEAU-233
4247594 is described below

commit 4247594ecc3e9561a6480ca7601e8505334b3325
Author: JamesBognar 
AuthorDate: Sat May 23 15:34:19 2020 -0400

JUNEAU-233

JsonParser is not instantiating interface proxies.
---
 .../test/java/org/apache/juneau/ProxyBeanTest.java | 54 +
 .../org/apache/juneau/html/HtmlParserSession.java  |  3 ++
 .../org/apache/juneau/json/JsonParserSession.java  |  2 +
 .../juneau/msgpack/MsgPackParserSession.java   |  2 +
 .../org/apache/juneau/uon/UonParserSession.java|  2 +
 .../urlencoding/UrlEncodingParserSession.java  |  4 +-
 .../org/apache/juneau/xml/XmlParserSession.java|  6 +++
 .../apache/juneau/rest/client2/RestClientTest.java | 55 ++
 8 files changed, 108 insertions(+), 20 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ProxyBeanTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ProxyBeanTest.java
new file mode 100644
index 000..69c5e4a
--- /dev/null
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ProxyBeanTest.java
@@ -0,0 +1,54 @@
+// 
***
+// * 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;
+
+import static org.junit.Assert.*;
+
+import org.apache.juneau.html.*;
+import org.apache.juneau.json.*;
+import org.apache.juneau.msgpack.*;
+import org.apache.juneau.oapi.*;
+import org.apache.juneau.uon.*;
+import org.apache.juneau.urlencoding.*;
+import org.apache.juneau.xml.*;
+import org.junit.*;
+
+public class ProxyBeanTest {
+
+   
//
+   // testBasic
+   
//
+
+   public static interface A {
+   void setFoo(int foo);
+   int getFoo();
+   }
+
+   @Test
+   public void testBasic() throws Exception {
+   A a = JsonParser.DEFAULT.parse("{foo:1}", A.class);
+   assertEquals(1, a.getFoo());
+   a = XmlParser.DEFAULT.parse("1", 
A.class);
+   assertEquals(1, a.getFoo());
+   a = UonParser.DEFAULT.parse("(foo=1)", A.class);
+   assertEquals(1, a.getFoo());
+   a = UrlEncodingParser.DEFAULT.parse("foo=1", A.class);
+   assertEquals(1, a.getFoo());
+   a = MsgPackParser.DEFAULT.parse("81A3666F6F01", A.class);
+   assertEquals(1, a.getFoo());
+   a = 
HtmlParser.DEFAULT.parse("foo1", 
A.class);
+   assertEquals(1, a.getFoo());
+   a = OpenApiParser.DEFAULT.parse("foo=1", A.class);
+   assertEquals(1, a.getFoo());
+   }
+}
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
index bdd0e7f..72d70c5 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
+++ 

[juneau] branch master updated: JUNEAU-232

2020-05-23 Thread jamesbognar
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 c44d2fb  JUNEAU-232
c44d2fb is described below

commit c44d2fb36d77d8ee76ed11fd45b2d72ae0b99e67
Author: JamesBognar 
AuthorDate: Sat May 23 10:44:32 2020 -0400

JUNEAU-232

BEAN_isIgnoreUnknownNullBeanProperties doesn't always work correctly.
---
 .../org/apache/juneau/jena/RdfParserSession.java   |   4 +-
 .../main/java/org/apache/juneau/BeanContext.java   |   3 +-
 .../java/org/apache/juneau/BeanContextBuilder.java |   3 +-
 .../org/apache/juneau/html/HtmlParserSession.java  |   3 +-
 .../org/apache/juneau/json/JsonParserSession.java  |   3 +-
 .../juneau/msgpack/MsgPackParserSession.java   |   2 +-
 .../org/apache/juneau/parser/ParserSession.java|  10 +-
 .../org/apache/juneau/uon/UonParserSession.java|   5 +-
 .../urlencoding/UrlEncodingParserSession.java  |   5 +-
 .../org/apache/juneau/xml/XmlParserSession.java|  17 +-
 .../juneau/rest/test/client/RestClientTest.java|  50 -
 .../apache/juneau/rest/client2/RestClientTest.java | 249 +++--
 .../org/apache/juneau/rest/client2/RestClient.java |   2 +-
 .../apache/juneau/rest/client2/RestRequest.java|   2 +-
 .../apache/juneau/rest/client2/RestResponse.java   |  15 ++
 .../juneau/rest/client2/RestResponseBody.java  |  58 ++---
 16 files changed, 290 insertions(+), 141 deletions(-)

diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
index 65c58fb..b71c6b5 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
@@ -202,7 +202,9 @@ public class RdfParserSession extends ReaderParserSession {
}
}
} else if (! (p.equals(pRoot) || p.equals(pType))) {
-   onUnknownProperty(key, m);
+   RDFNode o = st.getObject();
+   Object value = parseAnything(object(), o, 
m.getBean(false), null);
+   onUnknownProperty(key, m, value);
}
setCurrentProperty(null);
}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index 5375f66..15db6b3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -1567,8 +1567,7 @@ public class BeanContext extends Context implements 
MetaProvider {
 * Description:
 *
 * 
-* When enabled, methods and fields marked as transient or 
annotated with {@link java.beans.Transient}
-* will be ignored as bean properties.
+* When enabled, methods and fields marked as transient will 
be ignored as bean properties.
 *
 * Example:
 * 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
index f33cd5e..51d946f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
@@ -2292,8 +2292,7 @@ public class BeanContextBuilder extends ContextBuilder {
 * BeanContext configuration property:  Ignore transient 
fields.
 *
 * 
-* When enabled, methods and fields marked as transient or 
annotated with {@link java.beans.Transient}
-* will be ignored as bean properties.
+* When enabled, methods and fields marked as transient will 
be ignored as bean properties.
 *
 * Example:
 * 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
index b549fc4..bdd0e7f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
@@ -515,8 +515,7 @@ public final class HtmlParserSession extends 
XmlParserSession {
nextTag(r, TD);
BeanPropertyMeta pMeta = m.getPropertyMeta(key);
if (pMeta == null

[juneau] branch master updated: Javadocs.

2020-05-22 Thread jamesbognar
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 8be2c01  Javadocs.
8be2c01 is described below

commit 8be2c019241bc7fe8af4ebde7428ef279038cbec
Author: JamesBognar 
AuthorDate: Fri May 22 16:11:27 2020 -0400

Javadocs.
---
 .../org/apache/juneau/jena/RdfParserBuilder.java   |  2 +-
 .../apache/juneau/jena/RdfSerializerBuilder.java   |  2 +-
 .../main/java/org/apache/juneau/BeanContext.java   | 18 +++---
 .../java/org/apache/juneau/BeanContextBuilder.java | 75 ++
 .../src/main/java/org/apache/juneau/BeanMap.java   |  6 +-
 .../org/apache/juneau/BeanTraverseBuilder.java |  2 +-
 .../org/apache/juneau/csv/CsvParserBuilder.java|  2 +-
 .../apache/juneau/csv/CsvSerializerBuilder.java|  2 +-
 .../juneau/html/HtmlDocSerializerBuilder.java  |  2 +-
 .../org/apache/juneau/html/HtmlParserBuilder.java  |  2 +-
 .../juneau/html/HtmlSchemaSerializerBuilder.java   |  2 +-
 .../apache/juneau/html/HtmlSerializerBuilder.java  |  2 +-
 .../html/HtmlStrippedDocSerializerBuilder.java |  2 +-
 .../org/apache/juneau/jso/JsoParserBuilder.java|  2 +-
 .../apache/juneau/jso/JsoSerializerBuilder.java|  2 +-
 .../org/apache/juneau/json/JsonParserBuilder.java  |  2 +-
 .../juneau/json/JsonSchemaSerializerBuilder.java   |  2 +-
 .../apache/juneau/json/JsonSerializerBuilder.java  |  2 +-
 .../juneau/json/SimpleJsonParserBuilder.java   |  2 +-
 .../juneau/json/SimpleJsonSerializerBuilder.java   |  2 +-
 .../jsonschema/JsonSchemaGeneratorBuilder.java |  2 +-
 .../juneau/msgpack/MsgPackParserBuilder.java   |  2 +-
 .../juneau/msgpack/MsgPackSerializerBuilder.java   |  2 +-
 .../apache/juneau/oapi/OpenApiParserBuilder.java   |  2 +-
 .../juneau/oapi/OpenApiSerializerBuilder.java  |  2 +-
 .../juneau/parser/InputStreamParserBuilder.java|  2 +-
 .../org/apache/juneau/parser/ParserBuilder.java|  2 +-
 .../apache/juneau/parser/ParserGroupBuilder.java   |  2 +-
 .../apache/juneau/parser/ReaderParserBuilder.java  |  2 +-
 .../juneau/plaintext/PlainTextParserBuilder.java   |  2 +-
 .../plaintext/PlainTextSerializerBuilder.java  |  2 +-
 .../serializer/OutputStreamSerializerBuilder.java  |  2 +-
 .../juneau/serializer/SerializerBuilder.java   |  2 +-
 .../juneau/serializer/SerializerGroupBuilder.java  |  2 +-
 .../juneau/serializer/WriterSerializerBuilder.java |  2 +-
 .../juneau/soap/SoapXmlSerializerBuilder.java  |  2 +-
 .../org/apache/juneau/uon/UonParserBuilder.java|  2 +-
 .../apache/juneau/uon/UonSerializerBuilder.java|  2 +-
 .../urlencoding/UrlEncodingParserBuilder.java  |  2 +-
 .../urlencoding/UrlEncodingSerializerBuilder.java  |  2 +-
 .../org/apache/juneau/xml/XmlParserBuilder.java|  2 +-
 .../apache/juneau/xml/XmlSerializerBuilder.java|  2 +-
 juneau-doc/src/main/javadoc/overview.html  |  6 --
 .../juneau/rest/client2/RestClientBuilder.java |  2 +-
 .../apache/juneau/rest/mock2/MockRestClient.java   |  2 +-
 .../org/apache/juneau/rest/RestContextBuilder.java |  2 +-
 .../juneau/rest/RestMethodContextBuilder.java  |  2 +-
 47 files changed, 90 insertions(+), 101 deletions(-)

diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
index d7ad094..5689ad6 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
@@ -1177,7 +1177,7 @@ public class RdfParserBuilder extends ReaderParserBuilder 
{
}
 
@Override /* GENERATED - BeanContextBuilder */
-   public RdfParserBuilder sortProperties(Class on) {
+   public RdfParserBuilder sortProperties(java.lang.Class...on) {
super.sortProperties(on);
return this;
}
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
index 786fe5e..43dd77c 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
@@ -1337,7 +1337,7 @@ public class RdfSerializerBuilder extends 
WriterSerializerBuilder {
}
 
@Override /* GENERATED - BeanContextBuilder */
-   public RdfSerializerBuilder sortProperties(Class on) {
+   public RdfSerializerBuilder sortProperties(java.lang.Class...on) {
super.sortProperties(on);
return this;
}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org

[juneau] branch master updated: Deprecate the BEAN_beanFilters property and methods.

2020-05-22 Thread jamesbognar
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 3617793  Deprecate the BEAN_beanFilters property and methods.
3617793 is described below

commit 36177938fa7d10b72e815184d7bc57d4858b2f4b
Author: JamesBognar 
AuthorDate: Fri May 22 15:01:05 2020 -0400

Deprecate the BEAN_beanFilters property and methods.
---
 .../java/org/apache/juneau/BeanConfigTest.java |  10 --
 .../java/org/apache/juneau/BeanFilterTest.java |   4 +-
 .../juneau/a/rttests/RoundTripBeanMapsTest.java|  45 ++---
 .../apache/juneau/a/rttests/RoundTripEnumTest.java |   2 +-
 .../org/apache/juneau/a/rttests/RoundTripTest.java |  10 +-
 .../apache/juneau/transforms/BeanFilterTest.java   |   8 +-
 .../org/apache/juneau/jena/RdfParserBuilder.java   |  30 ++--
 .../apache/juneau/jena/RdfSerializerBuilder.java   |  30 ++--
 .../main/java/org/apache/juneau/BeanContext.java   | 120 ++---
 .../java/org/apache/juneau/BeanContextBuilder.java | 199 +++--
 .../main/java/org/apache/juneau/BeanSession.java   |   1 -
 .../org/apache/juneau/BeanTraverseBuilder.java |  30 ++--
 .../java/org/apache/juneau/annotation/Bean.java|   4 -
 .../org/apache/juneau/annotation/BeanConfig.java   |  81 -
 .../apache/juneau/annotation/BeanConfigApply.java  |   2 +
 .../org/apache/juneau/csv/CsvParserBuilder.java|  30 ++--
 .../apache/juneau/csv/CsvSerializerBuilder.java|  30 ++--
 .../juneau/html/HtmlDocSerializerBuilder.java  |  30 ++--
 .../org/apache/juneau/html/HtmlParserBuilder.java  |  30 ++--
 .../juneau/html/HtmlSchemaSerializerBuilder.java   |  30 ++--
 .../apache/juneau/html/HtmlSerializerBuilder.java  |  30 ++--
 .../html/HtmlStrippedDocSerializerBuilder.java |  30 ++--
 .../org/apache/juneau/jso/JsoParserBuilder.java|  30 ++--
 .../apache/juneau/jso/JsoSerializerBuilder.java|  30 ++--
 .../org/apache/juneau/json/JsonParserBuilder.java  |  30 ++--
 .../juneau/json/JsonSchemaSerializerBuilder.java   |  30 ++--
 .../apache/juneau/json/JsonSerializerBuilder.java  |  30 ++--
 .../juneau/json/SimpleJsonParserBuilder.java   |  30 ++--
 .../juneau/json/SimpleJsonSerializerBuilder.java   |  30 ++--
 .../jsonschema/JsonSchemaGeneratorBuilder.java |  30 ++--
 .../juneau/msgpack/MsgPackParserBuilder.java   |  30 ++--
 .../juneau/msgpack/MsgPackSerializerBuilder.java   |  30 ++--
 .../apache/juneau/oapi/OpenApiParserBuilder.java   |  30 ++--
 .../juneau/oapi/OpenApiSerializerBuilder.java  |  30 ++--
 .../juneau/parser/InputStreamParserBuilder.java|  30 ++--
 .../org/apache/juneau/parser/ParserBuilder.java|  30 ++--
 .../apache/juneau/parser/ParserGroupBuilder.java   |  30 ++--
 .../apache/juneau/parser/ReaderParserBuilder.java  |  30 ++--
 .../juneau/plaintext/PlainTextParserBuilder.java   |  30 ++--
 .../plaintext/PlainTextSerializerBuilder.java  |  30 ++--
 .../serializer/OutputStreamSerializerBuilder.java  |  30 ++--
 .../juneau/serializer/SerializerBuilder.java   |  30 ++--
 .../juneau/serializer/SerializerGroupBuilder.java  |  30 ++--
 .../juneau/serializer/WriterSerializerBuilder.java |  30 ++--
 .../juneau/soap/SoapXmlSerializerBuilder.java  |  30 ++--
 .../apache/juneau/transform/BeanFilterBuilder.java |   1 -
 .../transform/InterfaceBeanFilterBuilder.java  |   2 +-
 .../org/apache/juneau/uon/UonParserBuilder.java|  30 ++--
 .../apache/juneau/uon/UonSerializerBuilder.java|  30 ++--
 .../urlencoding/UrlEncodingParserBuilder.java  |  30 ++--
 .../urlencoding/UrlEncodingSerializerBuilder.java  |  30 ++--
 .../org/apache/juneau/xml/XmlParserBuilder.java|  30 ++--
 .../apache/juneau/xml/XmlSerializerBuilder.java|  30 ++--
 .../apache/juneau/rest/client2/RestClientTest.java |  17 +-
 .../juneau/rest/client2/RestClientBuilder.java |  30 ++--
 .../apache/juneau/rest/mock2/MockRestClient.java   |  30 ++--
 .../org/apache/juneau/rest/jaxrs/BaseProvider.java |   2 -
 .../org/apache/juneau/rest/RestContextBuilder.java |  30 ++--
 .../juneau/rest/RestMethodContextBuilder.java  |  30 ++--
 59 files changed, 696 insertions(+), 1102 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigTest.java
index af48eb9..79cd219 100755
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigTest.java
@@ -766,16 +766,6 @@ public class BeanConfigTest {
p1.swaps(DummyPojoSwapB.class,DummyPojoSwapC.class);  // Order 
of filters is important!
p2.swaps(DummyPojoSwapC.class,DummyPojoSwapB.class);
assertDifferentCache(p1, p2);
-
-   p1 = JsonParser.create

[juneau] branch master updated: Javadocs

2020-05-21 Thread jamesbognar
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 b516e82  Javadocs
b516e82 is described below

commit b516e82b1f8987a37d55d804f569a7b7d7354cca
Author: JamesBognar 
AuthorDate: Thu May 21 19:28:32 2020 -0400

Javadocs
---
 .../main/java/org/apache/juneau/BeanContext.java   |  31 +-
 .../java/org/apache/juneau/BeanContextBuilder.java | 980 -
 2 files changed, 966 insertions(+), 45 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index f9d8e85..02cf6f1 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -807,7 +807,7 @@ public class BeanContext extends Context implements 
MetaProvider {
 * Description:
 *
 * 
-* If true, then the {@link BeanMap#put(String,Object) 
BeanMap.put()} method will return old property
+* When enabled, then the {@link BeanMap#put(String,Object) 
BeanMap.put()} method will return old property
 * values.  Otherwise, it returns null.
 *
 * 
@@ -921,7 +921,7 @@ public class BeanContext extends Context implements 
MetaProvider {
 * Description:
 *
 * 
-* If true, a Java class must implement a default no-arg 
constructor to be considered a bean.
+* When enabled, a Java class must implement a default no-arg 
constructor to be considered a bean.
 * Otherwise, the bean will be serialized as a string using the {@link 
Object#toString()} method.
 *
 * Example:
@@ -991,7 +991,7 @@ public class BeanContext extends Context implements 
MetaProvider {
 * Description:
 *
 * 
-* If true, a Java class must implement the {@link 
Serializable} interface to be considered a bean.
+* When enabled, a Java class must implement the {@link Serializable} 
interface to be considered a bean.
 * Otherwise, the bean will be serialized as a string using the {@link 
Object#toString()} method.
 *
 * Example:
@@ -1056,7 +1056,7 @@ public class BeanContext extends Context implements 
MetaProvider {
 * Description:
 *
 * 
-* If true, ignore read-only properties (properties with 
getters but not setters).
+* When enabled, ignore read-only properties (properties with getters 
but not setters).
 *
 * Example:
 * 
@@ -1119,7 +1119,7 @@ public class BeanContext extends Context implements 
MetaProvider {
 * Description:
 *
 * 
-* If true, then a Java class must contain at least 1 property 
to be considered a bean.
+* When enabled, then a Java class must contain at least 1 property to 
be considered a bean.
 * Otherwise, the bean will be serialized as a string using the {@link 
Object#toString()} method.
 *
 * 
@@ -1177,6 +1177,8 @@ public class BeanContext extends Context implements 
MetaProvider {
 *  
 * 
 *
+* Description:
+*
 * 
 * This specifies the name of the bean property used to store the 
dictionary name of a bean type so that the
 * parser knows the data type to reconstruct.
@@ -1490,7 +1492,7 @@ public class BeanContext extends Context implements 
MetaProvider {
 * Description:
 *
 * 
-* If true, errors thrown when calling bean getter methods 
will silently be ignored.
+* When enabled, errors thrown when calling bean getter methods will 
silently be ignored.
 * Otherwise, a {@code BeanRuntimeException} is thrown.
 *
 * Example:
@@ -1545,7 +1547,7 @@ public class BeanContext extends Context implements 
MetaProvider {
 * Description:
 *
 * 
-* If true, errors thrown when calling bean setter methods 
will silently be ignored.
+* When enabled, errors thrown when calling bean setter methods will 
silently be ignored.
 * Otherwise, a {@code BeanRuntimeException} is thrown.
 *
 * Example:
@@ -1600,7 +1602,7 @@ public class BeanContext extends Context implements 
MetaProvider {
 * Description:
 *
 * 
-* If true, trying to set a value on a bean property without a 
setter will silently be ignored.
+* When enabled, trying to set a value on a bean property without a 
setter will silently be ignored.
 * Otherwise, a {@code BeanRuntimeException} is thrown.
 *
 * Example:
@@ -1659,7 +1661,7 @@ public class BeanContext extends Context implements 
MetaProvider

[juneau] branch master updated: Javadocs.

2020-05-19 Thread jamesbognar
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 defeaf1  Javadocs.
defeaf1 is described below

commit defeaf11104671795fcdf4a3a84032a88ea6a8e5
Author: JamesBognar 
AuthorDate: Tue May 19 19:17:00 2020 -0400

Javadocs.
---
 .../org/apache/juneau/jena/RdfParserBuilder.java   |   6 -
 .../apache/juneau/jena/RdfSerializerBuilder.java   |   6 -
 .../java/org/apache/juneau/BeanContextBuilder.java |  27 -
 .../org/apache/juneau/BeanTraverseBuilder.java |   6 -
 .../org/apache/juneau/csv/CsvParserBuilder.java|   6 -
 .../apache/juneau/csv/CsvSerializerBuilder.java|   6 -
 .../juneau/html/HtmlDocSerializerBuilder.java  |   6 -
 .../org/apache/juneau/html/HtmlParserBuilder.java  |   6 -
 .../juneau/html/HtmlSchemaSerializerBuilder.java   |   6 -
 .../apache/juneau/html/HtmlSerializerBuilder.java  |   6 -
 .../html/HtmlStrippedDocSerializerBuilder.java |   6 -
 .../org/apache/juneau/jso/JsoParserBuilder.java|   6 -
 .../apache/juneau/jso/JsoSerializerBuilder.java|   6 -
 .../org/apache/juneau/json/JsonParserBuilder.java  |   6 -
 .../juneau/json/JsonSchemaSerializerBuilder.java   |   6 -
 .../apache/juneau/json/JsonSerializerBuilder.java  |   6 -
 .../juneau/json/SimpleJsonParserBuilder.java   |   6 -
 .../juneau/json/SimpleJsonSerializerBuilder.java   |   6 -
 .../jsonschema/JsonSchemaGeneratorBuilder.java |   6 -
 .../juneau/msgpack/MsgPackParserBuilder.java   |   6 -
 .../juneau/msgpack/MsgPackSerializerBuilder.java   |   6 -
 .../apache/juneau/oapi/OpenApiParserBuilder.java   |   6 -
 .../juneau/oapi/OpenApiSerializerBuilder.java  |   6 -
 .../juneau/parser/InputStreamParserBuilder.java|   6 -
 .../org/apache/juneau/parser/ParserBuilder.java|   6 -
 .../apache/juneau/parser/ParserGroupBuilder.java   |   6 -
 .../apache/juneau/parser/ReaderParserBuilder.java  |   6 -
 .../juneau/plaintext/PlainTextParserBuilder.java   |   6 -
 .../plaintext/PlainTextSerializerBuilder.java  |   6 -
 .../serializer/OutputStreamSerializerBuilder.java  |   6 -
 .../juneau/serializer/SerializerBuilder.java   |   6 -
 .../juneau/serializer/SerializerGroupBuilder.java  |   6 -
 .../juneau/serializer/WriterSerializerBuilder.java |   6 -
 .../juneau/soap/SoapXmlSerializerBuilder.java  |   6 -
 .../org/apache/juneau/uon/UonParserBuilder.java|   6 -
 .../apache/juneau/uon/UonSerializerBuilder.java|   6 -
 .../urlencoding/UrlEncodingParserBuilder.java  |   6 -
 .../urlencoding/UrlEncodingSerializerBuilder.java  |   6 -
 .../org/apache/juneau/xml/XmlParserBuilder.java|   6 -
 .../apache/juneau/xml/XmlSerializerBuilder.java|   6 -
 juneau-doc/src/main/javadoc/overview.html  | 130 ++---
 .../juneau/rest/client2/RestClientBuilder.java |   6 -
 .../apache/juneau/rest/mock2/MockRestClient.java   |   6 -
 .../org/apache/juneau/rest/RestContextBuilder.java |   6 -
 .../juneau/rest/RestMethodContextBuilder.java  |   6 -
 45 files changed, 65 insertions(+), 350 deletions(-)

diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
index acf6473..2b83132 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
@@ -1069,12 +1069,6 @@ public class RdfParserBuilder extends 
ReaderParserBuilder {
}
 
@Override /* GENERATED - BeanContextBuilder */
-   public RdfParserBuilder examples(String json) {
-   super.examples(json);
-   return this;
-   }
-
-   @Override /* GENERATED - BeanContextBuilder */
public RdfParserBuilder fluentSetters() {
super.fluentSetters();
return this;
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
index 8b14d1f..7b15cef 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
@@ -1229,12 +1229,6 @@ public class RdfSerializerBuilder extends 
WriterSerializerBuilder {
}
 
@Override /* GENERATED - BeanContextBuilder */
-   public RdfSerializerBuilder examples(String json) {
-   super.examples(json);
-   return this;
-   }
-
-   @Override /* GENERATED - BeanContextBuilder */
public RdfSerializerBuilder fluentSetters() {
super.fluentSetters

[juneau] branch master updated: Javadocs.

2020-05-15 Thread jamesbognar
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 485924e  Javadocs.
485924e is described below

commit 485924e474d9f66a89a0b485abba2fa86e617137
Author: JamesBognar 
AuthorDate: Fri May 15 11:13:16 2020 -0400

Javadocs.
---
 .../java/org/apache/juneau/jena/RdfSerializer.java |   2 +-
 .../juneau/jsonschema/JsonSchemaGenerator.java |   8 +-
 .../apache/juneau/oapi/OpenApiParserBuilder.java   |   6 +-
 .../main/java/org/apache/juneau/parser/Parser.java |  13 +-
 .../org/apache/juneau/parser/ParserBuilder.java|  12 +-
 .../apache/juneau/parser/ReaderParserBuilder.java  |   3 -
 .../serializer/OutputStreamSerializerBuilder.java  |   2 +-
 .../org/apache/juneau/serializer/Serializer.java   |  43 ++---
 .../juneau/serializer/SerializerBuilder.java   |  31 ++--
 .../juneau/serializer/WriterSerializerBuilder.java |   3 -
 .../java/org/apache/juneau/uon/UonSerializer.java  |   1 +
 .../apache/juneau/uon/UonSerializerBuilder.java|  56 +-
 .../org/apache/juneau/rest/client2/RestClient.java | 203 -
 .../juneau/rest/client2/RestClientBuilder.java |  83 +
 14 files changed, 347 insertions(+), 119 deletions(-)

diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
index 373408b..c4fdc2b 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
@@ -72,7 +72,7 @@ public class RdfSerializer extends WriterSerializer 
implements RdfCommon, RdfMet
 *  
 *  Methods:
 *  
-*  {@link 
org.apache.juneau.jena.RdfSerializerBuilder#addBeanTypes(boolean)}
+*  {@link 
org.apache.juneau.jena.RdfSerializerBuilder#addBeanTypes()}
 *  
 * 
 *
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
index 02804ae..3ed66aa 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
@@ -272,10 +272,10 @@ public class JsonSchemaGenerator extends 
BeanTraverseContext implements JsonSche
 * Example:
 * 
 *  // Don't generate schema for any prototype packages or the 
class named 'Swagger'.
-*  @Rest(
-*  properties={
-*  
@Property(name=JSONSCHEMA_ignoreTypes, 
value="Swagger,*.proto.*")
-*  }
+*  @Rest
+*  @JsonSchemaConfig(
+*  ignoreTypes="Swagger,*.proto.*"
+*  )
 *  public class MyResource {...}
 * 
 */
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
index 37aba0e..68cd3eb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
@@ -96,13 +96,11 @@ public class OpenApiParserBuilder extends UonParserBuilder {
 *  .format(UON)
 *  .build();
 *
-*  String string = "foo bar";
-*
 *  // Parse a plain-text string.
-*  String v1 = s.serialize("foo bar");
+*  String v1 = p1.parse("foo bar");
 *
 *  // Parse a UON string.
-*  String v2 = s2.serialize("'foo bar'");
+*  String v2 = p2.parse("'foo bar'");
 * 
 *
 * 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
index 279ee1f..2f642cb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
@@ -369,12 +369,11 @@ public abstract class Parser extends BeanContext {
 *  .build();
 *
 *  // Use it.
-*  try {
-*  String json = "{unquotedAttr:'value'}";
-*  My

[juneau] branch master updated: Javadocs

2020-05-15 Thread jamesbognar
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 3d0  Javadocs
3d0 is described below

commit 3d00bbeba4a1bc31794f74719727e8b9e95b
Author: JamesBognar 
AuthorDate: Fri May 15 09:33:26 2020 -0400

Javadocs
---
 .../main/ConfigurablePropertyCodeGenerator.java| 55 +++---
 .../juneau/rest/client2/RestClientBuilder.java | 37 +--
 2 files changed, 60 insertions(+), 32 deletions(-)

diff --git 
a/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java 
b/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
index 24ae0ab..c6b85a7 100644
--- 
a/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++ 
b/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
@@ -182,6 +182,21 @@ public class ConfigurablePropertyCodeGenerator {
System.err.println("Processing " + f.getName());
String s = IOUtils.read(f);
 
+   int i1 = s.indexOf(""), i2 = 
s.indexOf("");
+   String cpSection = null;
+   if (i1 != -1 && i2 != -1) {
+   cpSection = s.substring(i1+26, i2);
+   } else {
+   System.err.println("...skipped " + f.getName());
+   continue;
+   }
+
+   Map docs = 
Stream.of(cpSection.split("[\n]{2,}"))
+   .map(x -> x.trim())
+   .filter(x -> x.startsWith("/*"))
+   .map(x -> x.split("(?s)\\*\\/.*public"))
+   .collect(Collectors.toMap(x -> 
("\n\tpublic"+x[1].substring(0, x[1].indexOf("\n"))), x -> ("\t"+x[0]+"*/\n")));
+
StringBuilder sb = new StringBuilder();
for (ClassInfo pc : 
ClassInfo.of(c).getParentsParentFirst()) {
Class pcc = pc.inner();
@@ -190,8 +205,26 @@ public class ConfigurablePropertyCodeGenerator {
if (ms != null) {
for (Method m : ms) {
 
+   StringBuilder sigLine = 
new StringBuilder();
+   
sigLine.append("\n\tpublic ");
+   if 
(m.getTypeParameters().length > 0)
+   
sigLine.append("<").append(Arrays.asList(m.getTypeParameters()).stream().map(x 
-> x.getName()).collect(Collectors.joining(", "))).append("> ");
+   
sigLine.append(c.getSimpleName()).append(" 
").append(m.getName()).append("(").append(getArgs(m)).append(") ");
+   if ( 
m.getExceptionTypes().length > 0)
+   
sigLine.append("throws 
").append(Arrays.asList(m.getExceptionTypes()).stream().map(x -> 
x.getSimpleName()).collect(Collectors.joining(", ")));
+   sigLine.append("{");
+   String sigLine2 = 
sigLine.toString();
+
+   sb.append("\n\n");
+
+   // Overridden javadocs
+   String javadoc = 
docs.get(sigLine2);
+   if (javadoc != null) {
+   
sb.append(javadoc);
+   }
+
// Line 1
-   sb.append("\n\n\t")
+   sb.append("\t")

.append(m.getAnnotation(Deprecated.class) == null ? "" : "@Deprecated ")

.append("@Override /* GENERATED - ").append(pcc.getSimpleName()).append(" */")
;
@@ -206,18 +239,13 @@ public class ConfigurablePrope

[juneau] branch master updated: Tests.

2020-05-12 Thread jamesbognar
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 3dcaf85  Tests.
3dcaf85 is described below

commit 3dcaf85e2692678fcf098247beffd768c346cba4
Author: JamesBognar 
AuthorDate: Tue May 12 20:09:08 2020 -0400

Tests.
---
 .../apache/juneau/rest/client2/RestClientTest.java | 271 +
 1 file changed, 223 insertions(+), 48 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index deb252e..5cdefa9 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -3076,7 +3076,6 @@ public class RestClientTest {
void setF3(int f3);
}
 
-
public static class O10 implements O10I {
public int f1, f2;
private int f3;
@@ -3184,53 +3183,229 @@ public class RestClientTest {
assertEquals(3, rr.getHeader("X").as(O10.class).f3);
}
 
-// @Test
-// public void o016_beanContext_beanMapPutReturnsOldValue() throws 
Exception { fail(); }
-   public RestClientBuilder beanMapPutReturnsOldValue() {
-//
-// @Test
-// public void o017_beanContext_beanMapPutReturnsOldValueBoolean() throws 
Exception { fail(); }
-   public RestClientBuilder beanMapPutReturnsOldValue(boolean value) {
-//
-// @Test
-// public void o018_beanContext_beanMethodVisibility() throws Exception { 
fail(); }
-   public RestClientBuilder beanMethodVisibility(Visibility value) {
-//
-// @Test
-// public void o019_beanContext_beanTypePropertyName() throws Exception { 
fail(); }
-   public RestClientBuilder beanTypePropertyName(String value) {
-//
-// @Test
-// public void o020_beanContext_beansDontRequireSomeProperties() throws 
Exception { fail(); }
-   public RestClientBuilder beansDontRequireSomeProperties() {
-//
-// @Test
-// public void o021_beanContext_beansRequireDefaultConstructor() throws 
Exception { fail(); }
-   public RestClientBuilder beansRequireDefaultConstructor() {
-//
-// @Test
-// public void o022_beanContext_beansRequireDefaultConstructorBoolean() 
throws Exception { fail(); }
-   public RestClientBuilder beansRequireDefaultConstructor(boolean value) {
-//
-// @Test
-// public void o023_beanContext_beansRequireSerializable() throws 
Exception { fail(); }
-   public RestClientBuilder beansRequireSerializable() {
-//
-// @Test
-// public void o024_beanContext_beansRequireSerializableBoolean() throws 
Exception { fail(); }
-   public RestClientBuilder beansRequireSerializable(boolean value) {
-//
-// @Test
-// public void o025_beanContext_beansRequireSettersForGetters() throws 
Exception { fail(); }
-   public RestClientBuilder beansRequireSettersForGetters() {
-//
-// @Test
-// public void o026_beanContext_beansRequireSettersForGettersBoolean() 
throws Exception { fail(); }
-   public RestClientBuilder beansRequireSettersForGetters(boolean value) {
-//
-// @Test
-// public void o027_beanContext_beansRequireSomePropertiesBoolean() throws 
Exception { fail(); }
-   public RestClientBuilder beansRequireSomeProperties(boolean value) {
+   public static class O18  {
+   private int f1, f2;
+
+   public int getF1() {
+   return f1;
+   }
+   public void setF1(int f1) {
+   this.f1 = f1;
+   }
+   protected int getF2() {
+   return f2;
+   }
+   protected void setF2(int f2) {
+   this.f2 = f2;
+   }
+
+   O18 init() {
+   f1 = 1;
+   f2 = 2;
+   return this;
+   }
+
+   @Override
+   public String toString() {
+   return f1 + "/" + f2;
+   }
+   }
+
+   @Test
+   public void o018_beanContext_beanMethodVisibility() throws Exception {
+   RestResponse rr = MockRestClient
+   .create(O2R.class)
+   .beanMethodVisibility(Visibility.PROTECTED)
+   .simpleJson()
+   .build()
+   .post("/test", new O18().init())
+   .header("X", new O18().init())
+   .run()
+   .getBody().cache().assertValue("{f1:1,f2:2}")
+  

[juneau] branch master updated: JUNEAU-228

2020-05-12 Thread jamesbognar
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 5236c3a  JUNEAU-228
5236c3a is described below

commit 5236c3a1044700eb02b3afdaa542df15a046a82b
Author: JamesBognar 
AuthorDate: Tue May 12 19:45:35 2020 -0400

JUNEAU-228

Make it easier to create bean filters programmatically.
---
 .../org/apache/juneau/a/rttests/RoundTripTest.java |   6 +-
 .../org/apache/juneau/jena/RdfParserBuilder.java   |  18 --
 .../apache/juneau/jena/RdfSerializerBuilder.java   |  18 --
 .../main/java/org/apache/juneau/BeanContext.java   |  31 ++-
 .../java/org/apache/juneau/BeanContextBuilder.java | 114 +++--
 .../org/apache/juneau/BeanTraverseBuilder.java |  18 --
 .../org/apache/juneau/csv/CsvParserBuilder.java|  18 --
 .../apache/juneau/csv/CsvSerializerBuilder.java|  18 --
 .../juneau/html/HtmlDocSerializerBuilder.java  |  18 --
 .../org/apache/juneau/html/HtmlParserBuilder.java  |  18 --
 .../juneau/html/HtmlSchemaSerializerBuilder.java   |  18 --
 .../apache/juneau/html/HtmlSerializerBuilder.java  |  18 --
 .../html/HtmlStrippedDocSerializerBuilder.java |  18 --
 .../org/apache/juneau/jso/JsoParserBuilder.java|  18 --
 .../apache/juneau/jso/JsoSerializerBuilder.java|  18 --
 .../org/apache/juneau/json/JsonParserBuilder.java  |  18 --
 .../juneau/json/JsonSchemaSerializerBuilder.java   |  18 --
 .../apache/juneau/json/JsonSerializerBuilder.java  |  18 --
 .../juneau/json/SimpleJsonParserBuilder.java   |  18 --
 .../juneau/json/SimpleJsonSerializerBuilder.java   |  18 --
 .../jsonschema/JsonSchemaGeneratorBuilder.java |  18 --
 .../juneau/msgpack/MsgPackParserBuilder.java   |  18 --
 .../juneau/msgpack/MsgPackSerializerBuilder.java   |  18 --
 .../apache/juneau/oapi/OpenApiParserBuilder.java   |  18 --
 .../apache/juneau/oapi/OpenApiParserSession.java   |   4 +-
 .../juneau/oapi/OpenApiSerializerBuilder.java  |  18 --
 .../juneau/parser/InputStreamParserBuilder.java|  18 --
 .../org/apache/juneau/parser/ParserBuilder.java|  18 --
 .../apache/juneau/parser/ParserGroupBuilder.java   |  18 --
 .../apache/juneau/parser/ReaderParserBuilder.java  |  18 --
 .../juneau/plaintext/PlainTextParserBuilder.java   |  18 --
 .../plaintext/PlainTextSerializerBuilder.java  |  18 --
 .../serializer/OutputStreamSerializerBuilder.java  |  18 --
 .../juneau/serializer/SerializerBuilder.java   |  18 --
 .../juneau/serializer/SerializerGroupBuilder.java  |  18 --
 .../juneau/serializer/WriterSerializerBuilder.java |  18 --
 .../juneau/soap/SoapXmlSerializerBuilder.java  |  18 --
 .../org/apache/juneau/transform/BeanFilter.java|  11 +
 .../org/apache/juneau/uon/UonParserBuilder.java|  18 --
 .../apache/juneau/uon/UonSerializerBuilder.java|  18 --
 .../urlencoding/UrlEncodingParserBuilder.java  |  18 --
 .../urlencoding/UrlEncodingSerializerBuilder.java  |  18 --
 .../org/apache/juneau/xml/XmlParserBuilder.java|  18 --
 .../apache/juneau/xml/XmlSerializerBuilder.java|  18 --
 .../xmlschema/XmlSchemaSerializerBuilder.java  |  18 --
 juneau-doc/docs/ReleaseNotes/8.1.4.html|   9 +
 .../apache/juneau/rest/client2/RestClientTest.java | 263 ++---
 .../juneau/rest/client/RestClientBuilder.java  |  18 --
 .../juneau/rest/client2/RestClientBuilder.java |  18 --
 .../apache/juneau/rest/mock2/MockRestClient.java   |  18 --
 .../org/apache/juneau/rest/jaxrs/BaseProvider.java |   4 +-
 .../org/apache/juneau/rest/RestContextBuilder.java |  18 --
 52 files changed, 255 insertions(+), 979 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
index 1362570..51e9f26 100755
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
@@ -206,8 +206,8 @@ public abstract class RoundTripTest {
}
 
 
-   public Class[] getBeanFilters() {
-   return new Class[0];
+   public Object[] getBeanFilters() {
+   return new Object[0];
}
 
public Class[] getPojoSwaps() {
@@ -254,7 +254,7 @@ public abstract class RoundTripTest {
return p;
}
 
-   protected void beanFilters(Class...c) {
+   protected void beanFilters(Object...c) {
s = s.builder().beanFilters(c).build();
if (p != null)
p = p.builder().beanFilters(c).build();
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena

[juneau] branch master updated: JUNEAU-227

2020-05-12 Thread jamesbognar
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 c3fa242  JUNEAU-227
c3fa242 is described below

commit c3fa242de1bab2f0c8bb61ed863ec877f6713792
Author: JamesBognar 
AuthorDate: Tue May 12 16:12:17 2020 -0400

JUNEAU-227

BEAN_methodVisibility and BEAN_constructorVisibility doesn't affect swap
methods
---
 .../main/java/org/apache/juneau/BeanContext.java   |   8 +-
 .../src/main/java/org/apache/juneau/ClassMeta.java |   9 +
 .../juneau/oapi/OpenApiSerializerSession.java  |  16 +-
 .../org/apache/juneau/transform/AutoListSwap.java  |  23 +-
 .../org/apache/juneau/transform/AutoMapSwap.java   |  23 +-
 .../apache/juneau/transform/AutoNumberSwap.java|  26 +-
 .../apache/juneau/transform/AutoObjectSwap.java|  23 +-
 .../java/org/apache/juneau/transform/PojoSwap.java |   1 -
 juneau-doc/docs/ReleaseNotes/8.1.4.html|   2 +
 .../apache/juneau/rest/client2/RestClientTest.java | 277 +++--
 .../juneau/rest/client2/RestCallException.java |   2 +-
 .../juneau/rest/client2/RestClientBuilder.java |  47 
 .../juneau/rest/client2/RestResponseBody.java  |  11 +-
 .../apache/juneau/rest/mock2/MockRestClient.java   |  36 ++-
 14 files changed, 368 insertions(+), 136 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index 5198d2b..f028963 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -3752,7 +3752,7 @@ public class BeanContext extends Context implements 
MetaProvider {
 * @return
 *  Classes are not considered beans unless they meet the minimum 
visibility requirements.
 */
-   protected final Visibility getBeanClassVisibility() {
+   public final Visibility getBeanClassVisibility() {
return beanClassVisibility;
}
 
@@ -3763,7 +3763,7 @@ public class BeanContext extends Context implements 
MetaProvider {
 * @return
 *  Only look for constructors with this specified minimum 
visibility.
 */
-   protected final Visibility getBeanConstructorVisibility() {
+   public final Visibility getBeanConstructorVisibility() {
return beanConstructorVisibility;
}
 
@@ -3786,7 +3786,7 @@ public class BeanContext extends Context implements 
MetaProvider {
 * @return
 *  Only look for bean fields with this specified minimum 
visibility.
 */
-   protected final Visibility getBeanFieldVisibility() {
+   public final Visibility getBeanFieldVisibility() {
return beanFieldVisibility;
}
 
@@ -3821,7 +3821,7 @@ public class BeanContext extends Context implements 
MetaProvider {
 * @return
 *  Only look for bean methods with this specified minimum 
visibility.
 */
-   protected final Visibility getBeanMethodVisibility() {
+   public final Visibility getBeanMethodVisibility() {
return beanMethodVisibility;
}
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
index 13eac61..06afe22 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
@@ -1339,6 +1339,15 @@ public final class ClassMeta implements Type {
}
 
/**
+* Returns true if this class is a {@link Date} or {@link 
Calendar} or {@link Temporal}.
+*
+* @return true if this class is a {@link Date} or {@link 
Calendar} or {@link Temporal}.
+*/
+   public boolean isDateOrCalendarOrTemporal() {
+   return cc == DATE || info.isChildOf(Temporal.class);
+   }
+
+   /**
 * Returns true if this class is a {@link Date}.
 *
 * @return true if this class is a {@link Date}.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerSession.java
index 8dbf800..19f9429 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerSession.java
@@ -27,6 +27,7 @@ import org.apache.juneau.collections.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.serializer.*;
+import org.apache.juneau.transform

[juneau] branch master updated: Add PropertyStoreBuilder.clearCache() method.

2020-04-29 Thread jamesbognar
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 ac196d8  Add PropertyStoreBuilder.clearCache() method.
ac196d8 is described below

commit ac196d832b62cdaed5a8e05ad2ab76a027c0a28d
Author: JamesBognar 
AuthorDate: Wed Apr 29 09:51:59 2020 -0400

Add PropertyStoreBuilder.clearCache() method.
---
 .../src/main/java/org/apache/juneau/PropertyStoreBuilder.java  | 7 +++
 1 file changed, 7 insertions(+)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
index 6c5ced4..a779c1f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
@@ -517,6 +517,13 @@ public class PropertyStoreBuilder {
this.groups.clear();
}
 
+   /**
+* Clears the PropertyStore cache.
+*/
+   public static void clearCache() {
+   CACHE.clear();
+   }
+
private static boolean isSet(String key) {
String s = key.substring(key.lastIndexOf('.')+1);
return s.length() == 2 && s.charAt(0) == 's';



[juneau] branch juneau-7.2.2-branch updated: Add org.apache.juneau.PropertyStoreBuilder.clearCache().

2020-04-29 Thread jamesbognar
This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch juneau-7.2.2-branch
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/juneau-7.2.2-branch by this 
push:
 new b610672  Add org.apache.juneau.PropertyStoreBuilder.clearCache().
 new aa3bc52  Merge pull request #54 from 
garydgregory/PropertyStore_clearCache
b610672 is described below

commit b6106724d589555c085fc1e22ea0ebdf632e5d98
Author: Gary Gregory 
AuthorDate: Tue Apr 28 16:41:52 2020 -0400

Add org.apache.juneau.PropertyStoreBuilder.clearCache().
---
 .../src/main/java/org/apache/juneau/PropertyStoreBuilder.java  | 7 +++
 1 file changed, 7 insertions(+)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
index c9c0b24..88b42a7 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
@@ -75,6 +75,13 @@ public class PropertyStoreBuilder {
}
 
/**
+* Clears the PropertyStore cache.
+*/
+   public void clearCache() {
+   CACHE.clear();
+   }
+   
+   /**
 * Copies all the values in the specified property store into this 
builder.
 *
 * @param copyFrom The property store to copy the values from.



[juneau] branch master updated: Refactor HttpPart API.

2020-04-12 Thread jamesbognar
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 43bd465  Refactor HttpPart API.
43bd465 is described below

commit 43bd465fa481fbe28adc702ba519d01ba6a2c492
Author: JamesBognar 
AuthorDate: Sun Apr 12 17:55:25 2020 -0400

Refactor HttpPart API.
---
 .../juneau/httppart/HttpPartSchemaTest_Body.java   |  22 +-
 .../httppart/HttpPartSchemaTest_FormData.java  |  42 ++--
 .../juneau/httppart/HttpPartSchemaTest_Header.java |  42 ++--
 .../juneau/httppart/HttpPartSchemaTest_Path.java   |  42 ++--
 .../juneau/httppart/HttpPartSchemaTest_Query.java  |  42 ++--
 .../httppart/HttpPartSchemaTest_Response.java  |  22 +-
 .../HttpPartSchemaTest_ResponseHeader.java |  42 ++--
 .../juneau/httppart/HttpPartCollectionFormat.java  |  69 ++
 .../apache/juneau/httppart/HttpPartDataType.java   |  74 ++
 .../org/apache/juneau/httppart/HttpPartFormat.java | 109 +
 .../org/apache/juneau/httppart/HttpPartSchema.java | 266 +++--
 .../juneau/httppart/HttpPartSchemaBuilder.java |  20 +-
 .../apache/juneau/oapi/OpenApiParserSession.java   |  18 +-
 .../juneau/oapi/OpenApiSerializerSession.java  |  30 +--
 .../org/apache/juneau/rest/RestParamDefaults.java  |   4 +-
 15 files changed, 449 insertions(+), 395 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Body.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Body.java
index 8041424..9886591 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Body.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchemaTest_Body.java
@@ -179,8 +179,8 @@ public class HttpPartSchemaTest_Body {
public void a05_basic_nestedItems_onClass() throws Exception {
HttpPartSchema s = HttpPartSchema.create().apply(Body.class, 
A05.class).noValidate().build();
 
-   assertEquals(HttpPartSchema.Type.NUMBER, s.getType());
-   assertEquals(HttpPartSchema.Format.INT32, s.getFormat());
+   assertEquals(HttpPartDataType.NUMBER, s.getType());
+   assertEquals(HttpPartFormat.INT32, s.getFormat());
assertEquals(1, s.getMaximum());
assertEquals(2, s.getMinimum());
assertEquals(3, s.getMultipleOf());
@@ -198,9 +198,9 @@ public class HttpPartSchemaTest_Body {
assertEquals("c1\nc2", s.getDefault());
 
HttpPartSchema items = s.getItems();
-   assertEquals(HttpPartSchema.Type.INTEGER, items.getType());
-   assertEquals(HttpPartSchema.Format.INT64, items.getFormat());
-   assertEquals(HttpPartSchema.CollectionFormat.SSV, 
items.getCollectionFormat());
+   assertEquals(HttpPartDataType.INTEGER, items.getType());
+   assertEquals(HttpPartFormat.INT64, items.getFormat());
+   assertEquals(HttpPartCollectionFormat.SSV, 
items.getCollectionFormat());
assertEquals(5, items.getMaximum());
assertEquals(6, items.getMinimum());
assertEquals(7, items.getMultipleOf());
@@ -216,9 +216,9 @@ public class HttpPartSchemaTest_Body {
assertEquals("c3\nc4", items.getDefault());
 
items = items.getItems();
-   assertEquals(HttpPartSchema.Type.STRING, items.getType());
-   assertEquals(HttpPartSchema.Format.FLOAT, items.getFormat());
-   assertEquals(HttpPartSchema.CollectionFormat.TSV, 
items.getCollectionFormat());
+   assertEquals(HttpPartDataType.STRING, items.getType());
+   assertEquals(HttpPartFormat.FLOAT, items.getFormat());
+   assertEquals(HttpPartCollectionFormat.TSV, 
items.getCollectionFormat());
assertEquals(9, items.getMaximum());
assertEquals(10, items.getMinimum());
assertEquals(11, items.getMultipleOf());
@@ -234,9 +234,9 @@ public class HttpPartSchemaTest_Body {
assertEquals("c5\nc6", items.getDefault());
 
items = items.getItems();
-   assertEquals(HttpPartSchema.Type.ARRAY, items.getType());
-   assertEquals(HttpPartSchema.Format.DOUBLE, items.getFormat());
-   assertEquals(HttpPartSchema.CollectionFormat.PIPES, 
items.getCollectionFormat());
+   assertEquals(HttpPartDataType.ARRAY, items.getType());
+   assertEquals(HttpPartFormat.DOUBLE, items.getFormat());
+   assertEquals(HttpPartCollectionFormat.PIPES, 
items.getCollectionFormat());
assertEquals(13, items.getMaximum());
ass

[juneau] branch master updated: Tests.

2020-04-11 Thread jamesbognar
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 9486f1f  Tests.
9486f1f is described below

commit 9486f1fab076f594348c2900282d0f12d11ad691
Author: JamesBognar 
AuthorDate: Sat Apr 11 10:21:32 2020 -0400

Tests.
---
 .../apache/juneau/rest/client2/RestClientTest.java | 138 -
 .../juneau/rest/client2/RestClientBuilder.java |   8 +-
 .../apache/juneau/rest/mock2/MockRestClient.java   |  16 +--
 3 files changed, 121 insertions(+), 41 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index e60e808..3297537 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -2457,13 +2457,13 @@ public class RestClientTest {
}
 
@Test
-   public void l21_serializer_trimStringsS() throws Exception {
+   public void l21_serializer_trimStringsOnWrite() throws Exception {
L21 x = new L21();
 
MockRestClient
.create(A.class)
.simpleJson()
-   .trimStringsS()
+   .trimStringsOnWrite()
.build()
.post("/echoBody", x)
.run()
@@ -2472,7 +2472,7 @@ public class RestClientTest {
MockRestClient
.create(A.class)
.simpleJson()
-   .trimStringsS(true)
+   .trimStringsOnWrite(true)
.build()
.post("/echoBody", x)
.run()
@@ -2481,7 +2481,7 @@ public class RestClientTest {
MockRestClient
.create(A.class)
.simpleJson()
-   .trimStringsS(false)
+   .trimStringsOnWrite(false)
.build()
.post("/echoBody", x)
.run()
@@ -2783,37 +2783,117 @@ public class RestClientTest {
.getBody().as(M5.class);
}
 
+   public static class M7 {
+   public String f;
+   }
+
@Test
public void m07_parser_trimStringsOnRead() throws Exception {
+   M7 x = MockRestClient
+   .create(A.class)
+   .simpleJson()
+   .trimStringsOnRead()
+   .build()
+   .post("/echoBody", new StringReader("{f:' 1 '}"))
+   .run()
+   .getBody().as(M7.class);
+   assertEquals("1", x.f);
 
+   x = MockRestClient
+   .create(A.class)
+   .simpleJson()
+   .trimStringsOnRead(true)
+   .build()
+   .post("/echoBody", new StringReader("{f:' 1 '}"))
+   .run()
+   .getBody().as(M7.class);
+   assertEquals("1", x.f);
 
+   x = MockRestClient
+   .create(A.class)
+   .simpleJson()
+   .trimStringsOnRead(false)
+   .build()
+   .post("/echoBody", new StringReader("{f:' 1 '}"))
+   .run()
+   .getBody().as(M7.class);
+   assertEquals(" 1 ", x.f);
+   }
+
+   @Test
+   public void m09_parser_unbufferedBoolean() throws Exception {
+   RestClient rc = null;
+
+   rc = MockRestClient
+   .create(A.class)
+   .simpleJson()
+   .unbuffered()
+   .build();
+
+   
assertTrue(rc.parsers.getParser("application/json").toMap().getMap("Parser").getBoolean("unbuffered"));
+
+   M7 x = rc
+   .post("/echoBody", new StringReader("{f:'1'}"))
+   .run()
+   .getBody().as(M7.class);
+   assertEquals("1", x.f);
+
+   rc = MockRestClient
+   .create(A.class)
+   .simpleJson()
+   .unbuffered(true)
+   .build();
+
+   
a

[juneau] branch master updated: JUNEAU-217

2020-04-11 Thread jamesbognar
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 b9cc19d  JUNEAU-217
b9cc19d is described below

commit b9cc19d8a416a2be4fda537b4a9ba263d833e8c3
Author: JamesBognar 
AuthorDate: Sat Apr 11 09:48:17 2020 -0400

JUNEAU-217

my-jetty-microservice sample eclipse project - The type
org.apache.juneau.utils.Args cannot be resolved. It is indirectly
referenced from required .class files
---
 juneau-examples/juneau-examples-rest-jetty/build-overlay/pom.xml| 2 +-
 juneau-examples/juneau-examples-rest-springboot/build-overlay/pom.xml   | 2 +-
 .../juneau-my-jetty-microservice/build-overlay/pom.xml.2| 2 +-
 juneau-microservice/juneau-my-jetty-microservice/pom.xml| 2 +-
 .../juneau-my-springboot-microservice/build-overlay/pom.xml.2   | 2 +-
 juneau-microservice/juneau-my-springboot-microservice/pom.xml   | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/juneau-examples/juneau-examples-rest-jetty/build-overlay/pom.xml 
b/juneau-examples/juneau-examples-rest-jetty/build-overlay/pom.xml
index 6bb9653..19bc870 100644
--- a/juneau-examples/juneau-examples-rest-jetty/build-overlay/pom.xml
+++ b/juneau-examples/juneau-examples-rest-jetty/build-overlay/pom.xml
@@ -21,7 +21,7 @@
with java -jar juneau-microservice-template-1.0.0.jar microservice.cfg
The group/artifact/version information is meant to be overwritten by 
developers to match their own needs.
 -->
-http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; 
xsi:schemaLocation="http://maven.apache.org/xsd/maven-4.0.0.xsd;>
+http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd;>

4.0.0
 
diff --git 
a/juneau-examples/juneau-examples-rest-springboot/build-overlay/pom.xml 
b/juneau-examples/juneau-examples-rest-springboot/build-overlay/pom.xml
index 4cced15..cf76288 100644
--- a/juneau-examples/juneau-examples-rest-springboot/build-overlay/pom.xml
+++ b/juneau-examples/juneau-examples-rest-springboot/build-overlay/pom.xml
@@ -24,7 +24,7 @@

The group/artifact/version information is meant to be overwritten by 
developers to match their own needs.
 -->
-http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; 
xsi:schemaLocation="http://maven.apache.org/xsd/maven-4.0.0.xsd;>
+http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd;>

4.0.0
 
diff --git 
a/juneau-microservice/juneau-my-jetty-microservice/build-overlay/pom.xml.2 
b/juneau-microservice/juneau-my-jetty-microservice/build-overlay/pom.xml.2
index 48f2cbe..35a31ac 100644
--- a/juneau-microservice/juneau-my-jetty-microservice/build-overlay/pom.xml.2
+++ b/juneau-microservice/juneau-my-jetty-microservice/build-overlay/pom.xml.2
@@ -24,7 +24,7 @@

The group/artifact/version information is meant to be overwritten by 
developers to match their own needs.
 -->
-http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; 
xsi:schemaLocation="http://maven.apache.org/xsd/maven-4.0.0.xsd;>
+http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd;>
 
4.0.0

diff --git a/juneau-microservice/juneau-my-jetty-microservice/pom.xml 
b/juneau-microservice/juneau-my-jetty-microservice/pom.xml
index 25e74a4..a7d95c6 100644
--- a/juneau-microservice/juneau-my-jetty-microservice/pom.xml
+++ b/juneau-microservice/juneau-my-jetty-microservice/pom.xml
@@ -21,7 +21,7 @@
with java -jar juneau-microservice-template-1.0.0.jar microservice.cfg
The group/artifact/version information is meant to be overwritten by 
developers to match their own needs.
 -->
-http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; 
xsi:schemaLocation="http://maven.apache.org/xsd/maven-4.0.0.xsd;>
+http://maven.apache.org/POM/4.0.0; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd;>
 
4.0.0

diff --git 
a/juneau-microservice/juneau-my-springboot-microservice/build-overlay/pom.xml.2 
b/juneau-microservice/juneau-my-springboot-microservice/build-overlay/pom.xml.2
index 7c5516

[juneau] branch master updated: JUNEAU-201

2020-04-11 Thread jamesbognar
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 3557061  JUNEAU-201
3557061 is described below

commit 35570612df0bf2641296e2797208966d9278c723
Author: JamesBognar 
AuthorDate: Sat Apr 11 09:20:50 2020 -0400

JUNEAU-201

JettyMicroserviceBuilder logConfig method is a NO-OP
---
 .../org/apache/juneau/microservice/jetty/JettyMicroserviceBuilder.java   | 1 +
 1 file changed, 1 insertion(+)

diff --git 
a/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroserviceBuilder.java
 
b/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroserviceBuilder.java
index 1b26ce7..502a7ef 100644
--- 
a/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroserviceBuilder.java
+++ 
b/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroserviceBuilder.java
@@ -288,6 +288,7 @@ public class JettyMicroserviceBuilder extends 
MicroserviceBuilder {
 
@Override /* MicroserviceBuilder */
public JettyMicroserviceBuilder logConfig(LogConfig logConfig) {
+   super.logConfig(logConfig);
return this;
}
 



[juneau] branch master updated: Tests.

2020-04-10 Thread jamesbognar
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 ddd0aae  Tests.
ddd0aae is described below

commit ddd0aae3851c91644a5128f4207582e18160a789
Author: JamesBognar 
AuthorDate: Fri Apr 10 18:40:50 2020 -0400

Tests.
---
 .../apache/juneau/rest/client2/RestClientTest.java | 77 --
 .../juneau/rest/client2/RestCallException.java | 71 +---
 2 files changed, 103 insertions(+), 45 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index b752f42..e60e808 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -2723,16 +2723,12 @@ public class RestClientTest {
 
@Test
public void m04_parser_parserListener() throws Exception {
-   RestClient rc = null;
-
-   rc = MockRestClient
-   .create(A.class)
-   .parser(JsonParser.class)
-   .parserListener(M4L.class)
-   .build();
-
try {
-   rc
+   MockRestClient
+   .create(A.class)
+   .parser(JsonParser.class)
+   .parserListener(M4L.class)
+   .build()
.post("/echoBody", "{f:'1'}")
.run()
.getBody().as(M4.class);
@@ -2743,18 +2739,57 @@ public class RestClientTest {
}
}
 
-// @Test
-// public void m05_parser_strictBoolean() throws Exception { fail(); }
-   public RestClientBuilder strict(boolean value) {
-//
-// @Test
-// public void m06_parser_strict() throws Exception { fail(); }
-   public RestClientBuilder strict() {
-//
-// @Test
-// public void m07_parser_trimStringsPBoolean() throws Exception { fail(); 
}
-   public RestClientBuilder trimStringsP(boolean value) {
-//
+   public static class M5 {
+   public int f;
+   }
+
+   @Test
+   public void m05_parser_strict() throws Exception {
+   try {
+   MockRestClient
+   .create(A.class)
+   .json()
+   .strict()
+   .build()
+   .post("/echoBody", new StringReader("{f:1}"))
+   .run()
+   .getBody().as(M5.class);
+   fail("Exception expected");
+   } catch (Exception e) {
+   assertTrue(e.getMessage().contains("Unquoted attribute 
detected."));
+   }
+
+   try {
+   MockRestClient
+   .create(A.class)
+   .json()
+   .strict(true)
+   .build()
+   .post("/echoBody", new StringReader("{f:1}"))
+   .run()
+   .getBody().as(M5.class);
+   fail("Exception expected");
+   } catch (Exception e) {
+   assertTrue(e.getMessage().contains("Unquoted attribute 
detected."));
+   }
+
+   MockRestClient
+   .create(A.class)
+   .json()
+   .strict(false)
+   .build()
+   .post("/echoBody", new StringReader("{f:1}"))
+   .run()
+   .getBody().as(M5.class);
+   }
+
+   @Test
+   public void m07_parser_trimStringsOnRead() throws Exception {
+
+
+   }
+// public RestClientBuilder trimStringsP(boolean value) {
+
 // @Test
 // public void m08_parser_trimStringsP() throws Exception { fail(); }
    public RestClientBuilder trimStringsP() {
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallException.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallException.java
index 5bab939..9cf4722 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallException.java
+

<    5   6   7   8   9   10   11   12   13   14   >