[juneau] branch master updated: RestClient API improvements.

2021-06-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 7f984e1  RestClient API improvements.
7f984e1 is described below

commit 7f984e1522bde7a4ef2274fe4140f66f47b50b67
Author: JamesBognar 
AuthorDate: Sat Jun 12 10:47:07 2021 -0400

RestClient API improvements.
---
 .../src/main/java/org/apache/juneau/rest/client/RestClient.java   | 8 
 1 file changed, 8 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index ab8bf3e..01f369b 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -3654,14 +3654,6 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable, Re
// Other methods.

//-
 
-   HttpPartSerializerSession getPartSerializerSession() {
-   return partSerializer.createPartSession(null);
-   }
-
-   HttpPartParserSession getPartParserSession() {
-   return partParser.createPartSession(null);
-   }
-
private Pattern absUrlPattern = Pattern.compile("^\\w+\\:\\/\\/.*");
 
URI toURI(Object x, String rootUri) throws RestCallException {


[juneau] branch master updated: RestClient API improvements.

2021-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 bd0b99d  RestClient API improvements.
bd0b99d is described below

commit bd0b99dd8d3367be58934c78103468ac986f39c5
Author: JamesBognar 
AuthorDate: Wed Jun 9 16:07:06 2021 -0400

RestClient API improvements.
---
 .../java/org/apache/juneau/http/remote/Remote.java | 10 ++--
 .../11.RestcProxies/01.RestcRemote.html|  8 +--
 .../org/apache/juneau/rest/client/RestClient.java  | 63 --
 .../org/apache/juneau/rest/client/RestRequest.java | 54 +--
 .../apache/juneau/rest/ClientVersionMatcher.java   |  4 +-
 .../java/org/apache/juneau/rest/RestContext.java   |  4 +-
 .../org/apache/juneau/rest/RestContextBuilder.java |  2 +-
 .../apache/juneau/rest/RestOperationContext.java   | 12 ++---
 .../apache/juneau/rest/annotation/RestDelete.java  | 12 ++---
 .../org/apache/juneau/rest/annotation/RestGet.java | 12 ++---
 .../org/apache/juneau/rest/annotation/RestOp.java  | 10 ++--
 .../apache/juneau/rest/annotation/RestPost.java| 10 ++--
 .../org/apache/juneau/rest/annotation/RestPut.java | 10 ++--
 .../rest/annotation/RestOp_ClientVersion_Test.java |  2 +-
 .../rest/client/RestClient_Headers_Test.java   |  4 +-
 15 files changed, 77 insertions(+), 140 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/Remote.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/Remote.java
index 68fde15..cceae7b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/Remote.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/Remote.java
@@ -82,7 +82,7 @@ public @interface Remote {
 * Specifies the client version of this interface.
 *
 * 
-* Used to populate the "X-Client-Version" header that 
identifies what version of client this is
+* Used to populate the "Client-Version" header that 
identifies what version of client this is
 * so that the server side can handle older versions accordingly.
 *
 * 
@@ -91,16 +91,16 @@ public @interface Remote {
 * 
 * The server side then uses an OSGi-version matching pattern to 
identify which methods to call:
 * 
-*  // Call this method if X-Client-Version is at least 2.0.
+*  // Call this method if Client-Version is at least 2.0.
 *  // Note that this also matches 2.0.1.
 *  @RestGet(path="/foobar", 
clientVersion="2.0")
 *  public Object method1()  {...}
 *
-*  // Call this method if X-Client-Version is at least 1.1, 
but less than 2.0.
+*  // Call this method if Client-Version is at least 1.1, but 
less than 2.0.
 *  @RestGet(path="/foobar", 
clientVersion="[1.1,2.0)")
 *  public Object method2()  {...}
 *
-*  // Call this method if X-Client-Version is less than 
1.1.
+*  // Call this method if Client-Version is less than 1.1.
 *  @RestGet(path="/foobar", 
clientVersion="[0,1.1)")
 *  public Object method3()  {...}
 * 
@@ -117,7 +117,7 @@ public @interface Remote {
 * Specifies the client version header name.
 *
 * 
-* The default value is "X-Client-Version".
+* The default value is "Client-Version".
 *
 * 
 *  
diff --git 
a/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/01.RestcRemote.html
 
b/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/01.RestcRemote.html
index 41f4efa..2a04aed 100644
--- 
a/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/01.RestcRemote.html
+++ 
b/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/01.RestcRemote.html
@@ -148,7 +148,7 @@ specific language governing permissions and limitations 
under the License.
 
@Remote(
path="/petstore",
-   version="1.2.3"  // Adds "X-Client-Version: 1.2.3" 
header to all requests.
+   version="1.2.3"  // Adds "Client-Version: 1.2.3" 
header to all requests.
)
public interface PetStore {...}
 
@@ -157,16 +157,16 @@ specific language governing permissions and limitations 
under the License.
This can be used in conjunction with the server-side client-versioning 
support.
 
 
-   // Call this method if X-Client-Version is at least 2.0.
+   // Call this method if Client-Version is at least 2.0.
// Note that this also matches 2.0.1.
@RestGet(clientVersion="2.0")

[juneau] branch master updated: RestClient API improvements.

2021-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 5dac8dd  RestClient API improvements.
5dac8dd is described below

commit 5dac8dd0b972224997796d9557708660009b5f1c
Author: JamesBognar 
AuthorDate: Wed Jun 9 10:09:16 2021 -0400

RestClient API improvements.
---
 .../juneau/rest/client/RestClientBuilder.java  |  67 --
 .../org/apache/juneau/rest/client/RestRequest.java | 146 +++--
 .../juneau/rest/mock/MockRestClientBuilder.java|   4 +-
 .../org/apache/juneau/rest/RestOp_Params_Test.java |  16 ++-
 .../rest/client/RestClient_Headers_Test.java   |  27 ++--
 5 files changed, 124 insertions(+), 136 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
index a3cbfa0..1dd1867 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
@@ -157,10 +157,10 @@ public class RestClientBuilder extends BeanContextBuilder 
{
 *  
 * 
 *  Accept request header will be set to 
"application/json" unless overridden
-*  by {@link #header(String,Object)} or {@link 
#accept(String)}, or per-request via {@link RestRequest#header(String,Object)} 
or {@link RestRequest#accept(Object)}.
+*  by {@link #header(String,Object)} or {@link 
#accept(String)}, or per-request via {@link RestRequest#header(String,Object)} 
or {@link RestRequest#accept(String)}.
 * 
 *  Content-Type request header will be set to 
"application/json" unless overridden
-*  by {@link #header(String,Object)} or {@link 
#contentType(String)}, or per-request via {@link 
RestRequest#header(String,Object)} or {@link RestRequest#contentType(Object)}.
+*  by {@link #header(String,Object)} or {@link 
#contentType(String)}, or per-request via {@link 
RestRequest#header(String,Object)} or {@link RestRequest#contentType(String)}.
 * 
 *  Can be combined with other marshaller setters such as {@link 
#xml()} to provide support for multiple languages.
 *  
@@ -204,10 +204,10 @@ public class RestClientBuilder extends BeanContextBuilder 
{
 *  
 * 
 *  Accept request header will be set to 
"application/json" unless overridden
-*  by {@link #header(String,Object)} or {@link 
#accept(String)}, or per-request via {@link RestRequest#header(String,Object)} 
or {@link RestRequest#accept(Object)}.
+*  by {@link #header(String,Object)} or {@link 
#accept(String)}, or per-request via {@link RestRequest#header(String,Object)} 
or {@link RestRequest#accept(String)}.
 * 
 *  Content-Type request header will be set to 
"application/json+simple" unless overridden
-*  by {@link #header(String,Object)} or {@link 
#contentType(String)}, or per-request via {@link 
RestRequest#header(String,Object)} or {@link RestRequest#contentType(Object)}.
+*  by {@link #header(String,Object)} or {@link 
#contentType(String)}, or per-request via {@link 
RestRequest#header(String,Object)} or {@link RestRequest#contentType(String)}.
 * 
 *  Can be combined with other marshaller setters such as {@link 
#xml()} to provide support for multiple languages.
 *  
@@ -247,10 +247,10 @@ public class RestClientBuilder extends BeanContextBuilder 
{
 *  
 * 
 *  Accept request header will be set to "text/xml" 
unless overridden
-*  by {@link #header(String,Object)} or {@link 
#accept(String)}, or per-request via {@link RestRequest#header(String,Object)} 
or {@link RestRequest#accept(Object)}.
+*  by {@link #header(String,Object)} or {@link 
#accept(String)}, or per-request via {@link RestRequest#header(String,Object)} 
or {@link RestRequest#accept(String)}.
 * 
 *  Content-Type request header will be set to 
"text/xml" unless overridden
-*  by {@link #header(String,Object)} or {@link 
#contentType(String)}, or per-request via {@link 
RestRequest#header(String,Object)} or {@link RestRequest#contentType(Object)}.
+*  by {@link #header(String,Object)} or {@link 
#contentType(String)}, or per-request via {@link 
RestRequest#header(String,Object)} or {@link RestRequest#contentType(String)}.
 * 
 *  Can be combined with other ma

[juneau] branch master updated: RestClient API improvements.

2021-06-07 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 3fc6185  RestClient API improvements.
3fc6185 is described below

commit 3fc61859869cf4116e8944007270b9cf555e4f54
Author: JamesBognar 
AuthorDate: Mon Jun 7 12:36:53 2021 -0400

RestClient API improvements.
---
 .../src/main/java/org/apache/juneau/rest/client/RestRequest.java | 9 +
 .../main/java/org/apache/juneau/rest/mock/MockRestClient.java| 4 ++--
 .../java/org/apache/juneau/rest/mock/MockRestClientBuilder.java  | 2 +-
 .../java/org/apache/juneau/rest/mock/MockServletRequest.java | 4 ++--
 4 files changed, 14 insertions(+), 5 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
index 3b7c32a..c38902a 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
@@ -3583,6 +3583,15 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
return getPartSerializerSession(client.getPartSerializer());
}
 
+   /**
+* TEMP
+*
+* @return TEMP
+*/
+   public HttpRequest getHttpRequest() {
+   return this;
+   }
+

//-
// Other methods

//-
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java
index f178b70..80ca44c 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java
@@ -38,8 +38,8 @@ import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.client.*;
 import org.apache.juneau.rest.client.RestRequest;
-import org.apache.juneau.rest.logging.*;
 import org.apache.juneau.http.header.ContentType;
+import org.apache.juneau.rest.logging.*;
 
 /**
  * Mocked {@link RestClient}.
@@ -724,7 +724,7 @@ public class MockRestClient extends RestClient implements 
HttpClientConnection {
 */
private HttpRequest findRestRequest(HttpRequest req) {
if (req instanceof RestRequestCreated)
-   return ((RestRequestCreated)req).getRestRequest();
+   return 
((RestRequestCreated)req).getRestRequest().getHttpRequest();
if (req instanceof HttpRequestWrapper)
return findRestRequest(((HttpRequestWrapper) 
req).getOriginal());
return req;
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
index 34a00dc..4493513 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
@@ -212,7 +212,7 @@ public class MockRestClientBuilder extends 
RestClientBuilder {
 
@Override /* ContextBuilder */
public MockRestClientBuilder debug() {
-   header("Debug", true);
+   header("Debug", "true");
super.debug();
return this;
}
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
index 4d0ca3a..b56da69 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
@@ -958,7 +958,7 @@ public class MockServletRequest implements 
HttpServletRequest {
 */
protected MockServletRequest debug(boolean value) {
if (value)
-   header("Debug", true);
+   header("Debug", "true");
return this;
}
 
@@ -973,7 +973,7 @@ public class MockServletRequest implements 
HttpServletRequest {
 */
public MockServl

[juneau] branch master updated: RestClient API improvements.

2021-06-07 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 ee710a0  RestClient API improvements.
ee710a0 is described below

commit ee710a0d302b783b1b34d7febce24f17cf52149d
Author: JamesBognar 
AuthorDate: Mon Jun 7 10:12:57 2021 -0400

RestClient API improvements.
---
 .../33.RestLoggingAndDebugging.html|   2 +-
 .../org/apache/juneau/rest/client/RestClient.java  |  63 ++--
 .../juneau/rest/client/RestClientBuilder.java  | 368 -
 .../apache/juneau/rest/mock/MockRestClient.java|   2 +-
 .../juneau/rest/mock/MockRestClientBuilder.java|  93 +++---
 .../juneau/rest/mock/MockServletRequest.java   |   4 +-
 .../java/org/apache/juneau/rest/RestRequest.java   |  12 +-
 .../java/org/apache/juneau/rest/RestResponse.java  |  14 +-
 .../juneau/rest/logging/BasicTestRestLogger.java   |  18 +-
 .../rest/client/RestClient_Headers_Test.java   |  23 +-
 10 files changed, 335 insertions(+), 264 deletions(-)

diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/33.RestLoggingAndDebugging.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/33.RestLoggingAndDebugging.html
index 0d02030..f626d79 100644
--- 
a/juneau-doc/docs/Topics/06.juneau-rest-server/33.RestLoggingAndDebugging.html
+++ 
b/juneau-doc/docs/Topics/06.juneau-rest-server/33.RestLoggingAndDebugging.html
@@ -273,7 +273,7 @@ Logging / Debugging
 
"true" - Logging disabled.
"false" (default) - Logging not disabled.
-   "per-request" - Logging is disabled only on requests 
containing a X-NoTrace: true header.
+   "per-request" - Logging is disabled only on requests 
containing a No-Trace: true header.
 
 
Disabled logging is particularly useful when running testcases that are 
expected to throw exceptions or cause
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index e5551fe..f4e5ff0 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -33,6 +33,7 @@ import java.net.*;
 import java.net.URI;
 import java.nio.charset.*;
 import java.text.*;
+import java.time.*;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.function.*;
@@ -1289,37 +1290,37 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable, Re
 *  {@link 
org.apache.juneau.rest.client.RestClientBuilder#header(Header) header(Header)}
 *  {@link 
org.apache.juneau.rest.client.RestClientBuilder#headers(Object...) 
headers(Object...)}
 *  {@link 
org.apache.juneau.rest.client.RestClientBuilder#headerPairs(Object...) 
headerPairs(Object...)}
-*  {@link 
org.apache.juneau.rest.client.RestClientBuilder#accept(Object) accept(Object)}
-*  {@link 
org.apache.juneau.rest.client.RestClientBuilder#acceptCharset(Object) 
acceptCharset(Object)}
-*  {@link 
org.apache.juneau.rest.client.RestClientBuilder#acceptEncoding(Object) 
acceptEncoding(Object)}
-*  {@link 
org.apache.juneau.rest.client.RestClientBuilder#acceptLanguage(Object) 
acceptLanguage(Object)}
-*  {@link 
org.apache.juneau.rest.client.RestClientBuilder#authorization(Object) 
authorization(Object)}
-*  {@link 
org.apache.juneau.rest.client.RestClientBuilder#cacheControl(Object) 
cacheControl(Object)}
-*  {@link 
org.apache.juneau.rest.client.RestClientBuilder#clientVersion(Object) 
clientVersion(Object)}
-*  {@link 
org.apache.juneau.rest.client.RestClientBuilder#connection(Object) 
connection(Object)}
-*  {@link 
org.apache.juneau.rest.client.RestClientBuilder#contentLength(Object) 
contentLength(Object)}
-*  {@link 
org.apache.juneau.rest.client.RestClientBuilder#contentType(Object) 
contentType(Object)}
-*  {@link 
org.apache.juneau.rest.client.RestClientBuilder#date(Object) date(Object)}
-*  {@link 
org.apache.juneau.rest.client.RestClientBuilder#expect(Object) expect(Object)}
-*  {@link 
org.apache.juneau.rest.client.RestClientBuilder#forwarded(Object) 
forwarded(Object)}
- 

[juneau] branch master updated: Code cleanup.

2021-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 0ae7dba  Code cleanup.
0ae7dba is described below

commit 0ae7dba819945894ba0d225bd138cfb5190784cf
Author: JamesBognar 
AuthorDate: Sun Jun 6 17:59:13 2021 -0400

Code cleanup.
---
 .../src/main/java/org/apache/juneau/rest/client/RestRequest.java  | 2 +-
 .../src/main/java/org/apache/juneau/rest/mock/MockRestRequest.java| 4 ++--
 .../apache/juneau/rest/client/RestClient_Config_RestClient_Test.java  | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
index afae51a..3b7c32a 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
@@ -818,7 +818,7 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
 * @param scheme The new URI host.
 * @return This object (for method chaining).
 */
-   public RestRequest scheme(String scheme) {
+   public RestRequest uriScheme(String scheme) {
uriBuilder.setScheme(scheme);
return this;
}
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestRequest.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestRequest.java
index 3c2acc8..99c26de 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestRequest.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestRequest.java
@@ -221,8 +221,8 @@ public class MockRestRequest extends 
org.apache.juneau.rest.client.RestRequest {
 * @return This object (for method chaining).
 */
@Override
-   public MockRestRequest scheme(String value) {
-   super.scheme(value);
+   public MockRestRequest uriScheme(String value) {
+   super.uriScheme(value);
this.scheme = value;
return this;
}
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
index cb6316b..bd431f7 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
@@ -515,10 +515,10 @@ public class RestClient_Config_RestClient_Test {
 
@Test
public void a16_request_uriParts() throws Exception {
-   java.net.URI uri = 
client().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();
+   java.net.URI uri = 
client().build().get().uriScheme("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 = 
client().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();
+   uri = 
client().build().get().uriScheme("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 = 
client().build().get().uri("http://localhost;).uri("http://foo:bar@localhost:8080/bean?foo=bar#baz;).run().assertBody().is("{f:1}").getRequest().getURI();


[juneau] branch master updated: Code cleanup.

2021-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 fa7a3b8  Code cleanup.
fa7a3b8 is described below

commit fa7a3b8b9f8a724e89506ad5d9c4a86e63684223
Author: JamesBognar 
AuthorDate: Sun Jun 6 17:40:18 2021 -0400

Code cleanup.
---
 .../org/apache/juneau/http/header/ContentType.java |  1 +
 .../org/apache/juneau/rest/client/RestClient.java  | 56 --
 .../apache/juneau/rest/mock/MockRestClient.java|  7 +-
 .../juneau/rest/Header_ContentType_Test.java   | 39 +-
 .../rest/Rest_PredefinedStatusCodes_Test.java  | 21 +++---
 .../rest/annotation/BeanConfig_Swaps_Test.java |  9 ++-
 .../apache/juneau/rest/annotation/Body_Test.java   | 87 +++---
 .../rest/client/RestClient_BasicCalls_Test.java| 23 +++---
 8 files changed, 112 insertions(+), 131 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/ContentType.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/ContentType.java
index 95ab25e..1fb7611 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/ContentType.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/ContentType.java
@@ -77,6 +77,7 @@ public class ContentType extends BasicMediaTypeHeader {
IMAGE_WEBP = of("image/webp"),
MULTIPART_FORM_DATA = of("multipart/form-data"),
TEXT_HTML = of("text/html"),
+   TEXT_OPENAPI = of("text/openapi"),
TEXT_PLAIN = of("text/plain"),
TEXT_XML = of("text/xml"),
WILDCARD = of("*/*");
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index 502f013..e5551fe 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -332,7 +332,6 @@ import org.apache.juneau.http.HttpHeaders;
  * {@link RestClientBuilder}
  * 
  * {@link RestClientBuilder#header(String,Object) 
header(String,Object)}
- * {@link 
RestClientBuilder#header(String,Object,HttpPartSchema) 
header(String,Object,HttpPartSchema)}
  * {@link RestClientBuilder#header(String,Supplier) 
header(String,Supplier?)}
  * {@link 
RestClientBuilder#header(String,Supplier,HttpPartSchema) 
header(String,Supplier?,HttpPartSchema)}
  * {@link RestClientBuilder#header(Header) 
header(Header)}
@@ -342,32 +341,14 @@ import org.apache.juneau.http.HttpHeaders;
  * {@link RestRequest}
  * 
  * {@link RestRequest#header(String,Object) 
header(String,Object)}
- * {@link 
RestRequest#header(String,Object,HttpPartSchema) 
header(String,Object,HttpPartSchema)}
- * {@link 
RestRequest#header(ListOperation,String,Object) 
header(ListOperation,String,Object)}
- * {@link 
RestRequest#header(ListOperation,String,Object,HttpPartSchema) 
header(ListOperation,String,Object,HttpPartSchema)}
+ * {@link 
RestRequest#header(ListOperation,String,Object) header(AddFlag,String,Object)}
  * {@link RestRequest#header(Header) header(Header)}
  * {@link RestRequest#headers(Object...) 
headers(Object...)}
- * {@link 
RestRequest#headers(ListOperation,Object...) headers(ListOperation;Object...)}
+ * {@link 
RestRequest#headers(ListOperation,Object...) headers(AddFlag;Object...)}
  * {@link RestRequest#headerPairs(Object...) 
headers(Object...)}
  * 
  * 
  *
- * 
- * Additionally, methods are provided on the client builder and per request 
for all standard HTTP headers
- * such as {@link RestClientBuilder#authorization(Object) 
authorization(Object)}.
- *
- * Example:
- * 
- * // Create a client that adds an Authorization header to every 
request.
- * RestClient client = 
RestClient.create().authorization("Foo").build();
- *
- * // Or do it per-request.
- * String response = 
client.get(URI).authorization("Foo").run().getBody().asString();
- *
- * // Or use an HttpHeader.
- * response = 
client.get(URI).headers(Authorization.of("Foo")).run().getBody().asString();
- * 
- *
  * 
  * The supplier methods are particularly useful for header values whose values 
may change over time (such as Authorization headers
  * which may need to change every few minutes).
@@ -408,18 +389,15 @@ import org.apache.juneau.http.HttpHeaders;
  * {@link RestClient

[juneau] branch master updated: Code cleanup.

2021-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 3828830  Code cleanup.
3828830 is described below

commit 3828830f06b76cbc608bd541e8b69389132b4278
Author: JamesBognar 
AuthorDate: Sun Jun 6 16:41:55 2021 -0400

Code cleanup.
---
 .../src/main/java/org/apache/juneau/rest/RestContext.java | 4 ++--
 .../src/main/java/org/apache/juneau/rest/RestOperationContext.java| 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 5059360..30bb3a1 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -1181,7 +1181,7 @@ public class RestContext extends BeanContext {
 *  
 *  Methods:
 *  
-*  {@link 
org.apache.juneau.rest.RestContextBuilder#defaultRequestHeader(String,Object)}
+*  {@link 
org.apache.juneau.rest.RestContextBuilder#defaultRequestHeader(String,String)}
 *  {@link 
org.apache.juneau.rest.RestContextBuilder#defaultRequestHeader(String,Supplier)}
 *  {@link 
org.apache.juneau.rest.RestContextBuilder#defaultRequestHeaders(org.apache.http.Header...)}
 *  
@@ -1252,7 +1252,7 @@ public class RestContext extends BeanContext {
 *  
 *  Methods:
 *  
-*  {@link 
org.apache.juneau.rest.RestContextBuilder#defaultResponseHeader(String,Object)}
+*  {@link 
org.apache.juneau.rest.RestContextBuilder#defaultResponseHeader(String,String)}
 *  {@link 
org.apache.juneau.rest.RestContextBuilder#defaultResponseHeader(String,Supplier)}
 *  {@link 
org.apache.juneau.rest.RestContextBuilder#defaultResponseHeaders(org.apache.http.Header...)}
 *  
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
index 91ba4d8..07a372f 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
@@ -415,7 +415,7 @@ public class RestOperationContext extends BeanContext 
implements Comparable
 *  Methods:
 *  
-*  {@link 
org.apache.juneau.rest.RestOperationContextBuilder#defaultRequestHeader(String,Object)}
+*  {@link 
org.apache.juneau.rest.RestOperationContextBuilder#defaultRequestHeader(String,String)}
 *  {@link 
org.apache.juneau.rest.RestOperationContextBuilder#defaultRequestHeader(String,Supplier)}
 *  {@link 
org.apache.juneau.rest.RestOperationContextBuilder#defaultRequestHeaders(org.apache.http.Header...)}
 *  
@@ -460,7 +460,7 @@ public class RestOperationContext extends BeanContext 
implements Comparable
 *  Methods:
 *  
-*  {@link 
org.apache.juneau.rest.RestOperationContextBuilder#defaultResponseHeader(String,Object)}
+*  {@link 
org.apache.juneau.rest.RestOperationContextBuilder#defaultResponseHeader(String,String)}
 *  {@link 
org.apache.juneau.rest.RestOperationContextBuilder#defaultResponseHeader(String,Supplier)}
 *  {@link 
org.apache.juneau.rest.RestOperationContextBuilder#defaultResponseHeaders(org.apache.http.Header...)}
 *  


[juneau] branch master updated: Code cleanup.

2021-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 60d138d  Code cleanup.
60d138d is described below

commit 60d138d854671defc27b928833cc98d39f8dc322
Author: JamesBognar 
AuthorDate: Sun Jun 6 16:40:12 2021 -0400

Code cleanup.
---
 .../java/org/apache/juneau/rest/RestContextBuilder.java  | 16 
 .../apache/juneau/rest/RestOperationContextBuilder.java  | 16 
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index 566f19e..feafa5e 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
@@ -1022,8 +1022,8 @@ public class RestContextBuilder extends 
BeanContextBuilder implements ServletCon
 * @return This object (for method chaining).
 */
@FluentSetter
-   public RestContextBuilder defaultRequestHeader(String name, Object 
value) {
-   return defaultRequestHeaders(basicHeader(name, value));
+   public RestContextBuilder defaultRequestHeader(String name, String 
value) {
+   return defaultRequestHeaders(stringHeader(name, value));
}
 
/**
@@ -1041,8 +1041,8 @@ public class RestContextBuilder extends 
BeanContextBuilder implements ServletCon
 * @return This object (for method chaining).
 */
@FluentSetter
-   public RestContextBuilder defaultRequestHeader(String name, Supplier 
value) {
-   return defaultRequestHeaders(basicHeader(name, value));
+   public RestContextBuilder defaultRequestHeader(String name, 
Supplier value) {
+   return defaultRequestHeaders(stringHeader(name, value));
}
 
/**
@@ -1079,8 +1079,8 @@ public class RestContextBuilder extends 
BeanContextBuilder implements ServletCon
 * @return This object (for method chaining).
 */
@FluentSetter
-   public RestContextBuilder defaultResponseHeader(String name, Object 
value) {
-   return defaultResponseHeaders(basicHeader(name, value));
+   public RestContextBuilder defaultResponseHeader(String name, String 
value) {
+   return defaultResponseHeaders(stringHeader(name, value));
}
 
/**
@@ -1098,8 +1098,8 @@ public class RestContextBuilder extends 
BeanContextBuilder implements ServletCon
 * @return This object (for method chaining).
 */
@FluentSetter
-   public RestContextBuilder defaultResponseHeader(String name, 
Supplier value) {
-   return defaultResponseHeaders(basicHeader(name, value));
+   public RestContextBuilder defaultResponseHeader(String name, 
Supplier value) {
+   return defaultResponseHeaders(stringHeader(name, value));
}
 
/**
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java
index 357e59b..af5741c 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java
@@ -377,8 +377,8 @@ public class RestOperationContextBuilder extends 
BeanContextBuilder {
 * @return This object (for method chaining).
 */
@FluentSetter
-   public RestOperationContextBuilder defaultRequestHeader(String name, 
Object value) {
-   return defaultRequestHeaders(basicHeader(name, value));
+   public RestOperationContextBuilder defaultRequestHeader(String name, 
String value) {
+   return defaultRequestHeaders(stringHeader(name, value));
}
 
/**
@@ -396,8 +396,8 @@ public class RestOperationContextBuilder extends 
BeanContextBuilder {
 * @return This object (for method chaining).
 */
@FluentSetter
-   public RestOperationContextBuilder defaultRequestHeader(String name, 
Supplier value) {
-   return defaultRequestHeaders(basicHeader(name, value));
+   public RestOperationContextBuilder defaultRequestHeader(String name, 
Supplier value) {
+   return defaultRequestHeaders(stringHeader(name, value));
}
 
/**
@@ -434,8 +434,8 @@ public class RestOperationContextBuilder extends 
BeanContextBuilder {
 * @return This object (for method chaining).
 */
@FluentSetter
-   public RestOperationContextBuilder

[juneau] branch master updated: Code cleanup.

2021-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 e59c7e8  Code cleanup.
e59c7e8 is described below

commit e59c7e8e190c95e237c5f0cbc17bd70943886e21
Author: JamesBognar 
AuthorDate: Sun Jun 6 16:01:21 2021 -0400

Code cleanup.
---
 .../httppart/bean/RequestBeanPropertyMeta.java |  11 ++-
 .../juneau/httppart/bean/ResponseBeanMeta.java |  13 +--
 .../httppart/bean/ResponseBeanPropertyMeta.java|  21 +++--
 .../org/apache/juneau/rest/client/RestClient.java  |  92 ---
 .../org/apache/juneau/rest/client/RestRequest.java | 101 ++---
 .../apache/juneau/rest/client/RestResponse.java|  43 +++--
 .../rest/client/remote/RemoteOperationArg.java |  12 ++-
 .../java/org/apache/juneau/rest/RestRequest.java   |  38 +---
 .../rest/processors/ResponseBeanProcessor.java |  21 +
 9 files changed, 242 insertions(+), 110 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
index 204e826..f5e98ed 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
@@ -13,9 +13,11 @@
 package org.apache.juneau.httppart.bean;
 
 import static org.apache.juneau.internal.ClassUtils.*;
+import static java.util.Optional.*;
 
 import java.lang.annotation.*;
 import java.lang.reflect.*;
+import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.http.annotation.*;
@@ -40,7 +42,7 @@ public class RequestBeanPropertyMeta {
 
private final Method getter;
private final HttpPartType partType;
-   private final HttpPartSerializer serializer;
+   private final Optional serializer;
private final HttpPartParser parser;
private final HttpPartSchema schema;
 
@@ -48,7 +50,7 @@ public class RequestBeanPropertyMeta {
this.partType = b.partType;
this.schema = b.schema;
this.getter = b.getter;
-   this.serializer = schema.getSerializer() == null ? serializer : 
castOrCreate(HttpPartSerializer.class, schema.getSerializer(), true, b.cp);
+   this.serializer = ofNullable(schema.getSerializer() == null ? 
serializer : castOrCreate(HttpPartSerializer.class, schema.getSerializer(), 
true, b.cp));
this.parser = schema.getParser() == null ? parser : 
castOrCreate(HttpPartParser.class, schema.getParser(), true, b.cp);
}
 
@@ -112,11 +114,10 @@ public class RequestBeanPropertyMeta {
/**
 * Returns the serializer to use for serializing the bean property 
value.
 *
-* @param _default The default serializer to use if not defined on the 
annotation.
 * @return The serializer to use for serializing the bean property 
value.
 */
-   public HttpPartSerializerSession 
getSerializer(HttpPartSerializerSession _default) {
-   return serializer == null ? _default : 
serializer.createPartSession(null);
+   public Optional getSerializer() {
+   return serializer;
}
 
/**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
index d4d865d..b4ada18 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
@@ -16,6 +16,7 @@ import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.httppart.bean.Utils.*;
 import static org.apache.juneau.httppart.HttpPartType.*;
 import static org.apache.juneau.annotation.InvalidAnnotationException.*;
+import static java.util.Optional.*;
 
 import java.io.*;
 import java.lang.reflect.*;
@@ -104,15 +105,15 @@ public class ResponseBeanMeta {
private final int code;
private final Map headerMethods;
private final ResponseBeanPropertyMeta statusMethod, bodyMethod;
-   private final HttpPartSerializer partSerializer;
-   private final HttpPartParser partParser;
+   private final Optional partSerializer;
+   private final Optional partParser;
private final HttpPartSchema schema;
 
ResponseBeanMeta(Builder b) {
this.cm = b.cm;
this.code = b.code;
-   this.partSerializer = castOrCreate(HttpPartSerializer.class, 
b.partSerializer, true, b.cp

[juneau] branch master updated: Code cleanup.

2021-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 a7d0740  Code cleanup.
a7d0740 is described below

commit a7d07401d3d64266789faaf04088188ec24a330a
Author: JamesBognar 
AuthorDate: Sun Jun 6 14:08:11 2021 -0400

Code cleanup.
---
 .../main/java/org/apache/juneau/BeanSession.java   | 21 ++
 .../main/java/org/apache/juneau/ListOperation.java |  9 ++---
 .../org/apache/juneau/httppart/HttpPartSchema.java | 46 --
 3 files changed, 25 insertions(+), 51 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
index 32a7116..98ff9b6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
@@ -782,6 +782,27 @@ public class BeanSession extends Session {
}
 
/**
+* Wraps an object inside a {@link BeanMap} object (a modifiable {@link 
Map}).
+*
+* 
+* Same as {@link #toBeanMap(Object)} but allows you to specify a 
property namer instance.
+*
+* Example:
+* 
+*  // Construct a bean map around a bean instance
+*  BeanMapPerson bm = 
BeanContext.DEFAULT.toBeanMap(new Person(), 
PropertyNamerDLC.INSTANCE);
+* 
+*
+* @param  The class of the object being wrapped.
+* @param o The object to wrap in a map interface.  Must not be null.
+* @param propertyNamer The property namer to use.
+* @return The wrapped object.
+*/
+   public final  BeanMap toBeanMap(T o, PropertyNamer propertyNamer) 
{
+   return this.toBeanMap(o, (Class)o.getClass());
+   }
+
+   /**
 * Determines whether the specified object matches the requirements on 
this context of being a bean.
 *
 * @param o The object being tested.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java
index aaf0157..3ccfebc 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java
@@ -43,29 +43,28 @@ public enum ListOperation {
/**
 * Don't add the value if it's null or an empty string.
 */
+   @Deprecated
SKIP_IF_EMPTY;
 
-   public static final boolean NEEDS_CLEANUP = true;
-
/**
 * Default flags.
-* Needs to be removed.
 */
+   @Deprecated
public static final EnumSet DEFAULT_FLAGS = 
EnumSet.of(APPEND);
 
/**
 * Default skip-if-empty flags.
-* Needs to be removed.
 */
+   @Deprecated
public static final EnumSet SKIP_IF_EMPTY_FLAGS = 
EnumSet.of(APPEND, SKIP_IF_EMPTY);
 
/**
 * Returns {@link #DEFAULT_FLAGS} if the enum set is null or 
empty.
-* Needs to be removed.
 *
 * @param s The set to check.
 * @return Either the same set or {@link #DEFAULT_FLAGS}.  Never 
null.
 */
+   @Deprecated
public static EnumSet orDefault(EnumSet 
s) {
return s == null || s.isEmpty() ? DEFAULT_FLAGS : s;
}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
index f4410d5..2cbfa30 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
@@ -147,7 +147,6 @@ public class HttpPartSchema {
 
 
final String name;
-   final Set codes;
final String _default;
final Set _enum;
final Map properties;
@@ -643,7 +642,6 @@ public class HttpPartSchema {
 
HttpPartSchema(HttpPartSchemaBuilder b) {
this.name = b.name;
-   this.codes = copy(b.codes);
this._default = b._default;
this._enum = copy(b._enum);
this.properties = build(b.properties, b.noValidate);
@@ -873,49 +871,6 @@ public class HttpPartSchema {
}
 
/**
-* Returns the HTTP status code or codes defined on a schema.
-*
-* @return
-*  The list of HTTP status codes.
-*  Never null.
-* @see HttpPartSchemaBuilder#code(int)
-* @see HttpPartSchemaBuilder#codes(int[])
-*/
-   public Set getCodes() {
-   return codes

[juneau] branch master updated: Cleanup.

2021-05-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 4ff8362  Cleanup.
4ff8362 is described below

commit 4ff836265265feb383beafd0a4d3fa35771dfc8b
Author: JamesBognar 
AuthorDate: Mon May 10 08:36:47 2021 -0400

Cleanup.
---
 .../test/java/org/apache/juneau/rest/test/TestMicroservice.java   | 2 +-
 .../java/org/apache/juneau/rest/client/RestClientBuilder.java | 2 +-
 .../src/main/java/org/apache/juneau/rest/mock/MockRestClient.java | 8 
 .../java/org/apache/juneau/rest/mock/MockRestClientBuilder.java   | 4 ++--
 .../apache/juneau/http/remote/Remote_CommonInterfaces_Test.java   | 6 +++---
 .../src/test/java/org/apache/juneau/http/remote/Remote_Test.java  | 4 ++--
 .../java/org/apache/juneau/http/remote/RrpcInterfaceTest.java | 2 +-
 .../java/org/apache/juneau/http/response/BadRequest_Test.java | 2 +-
 .../test/java/org/apache/juneau/http/response/Conflict_Test.java  | 2 +-
 .../org/apache/juneau/http/response/ExpectationFailed_Test.java   | 2 +-
 .../org/apache/juneau/http/response/FailedDependency_Test.java| 2 +-
 .../test/java/org/apache/juneau/http/response/Forbidden_Test.java | 2 +-
 .../src/test/java/org/apache/juneau/http/response/Gone_Test.java  | 2 +-
 .../apache/juneau/http/response/HttpVersionNotSupported_Test.java | 2 +-
 .../org/apache/juneau/http/response/InsufficentStorage_Test.java  | 2 +-
 .../org/apache/juneau/http/response/InternalServerError_Test.java | 2 +-
 .../java/org/apache/juneau/http/response/LengthRequired_Test.java | 2 +-
 .../test/java/org/apache/juneau/http/response/Locked_Test.java| 2 +-
 .../java/org/apache/juneau/http/response/LoopDetected_Test.java   | 2 +-
 .../org/apache/juneau/http/response/MethodNotAllowed_Test.java| 2 +-
 .../org/apache/juneau/http/response/MisdirectedRequest_Test.java  | 2 +-
 .../juneau/http/response/NetworkAuthenticationRequired_Test.java  | 2 +-
 .../java/org/apache/juneau/http/response/NotAcceptable_Test.java  | 2 +-
 .../java/org/apache/juneau/http/response/NotExtended_Test.java| 2 +-
 .../test/java/org/apache/juneau/http/response/NotFound_Test.java  | 2 +-
 .../java/org/apache/juneau/http/response/NotImplemented_Test.java | 2 +-
 .../org/apache/juneau/http/response/PayloadTooLarge_Test.java | 2 +-
 .../org/apache/juneau/http/response/PreconditionFailed_Test.java  | 2 +-
 .../apache/juneau/http/response/PreconditionRequired_Test.java| 2 +-
 .../org/apache/juneau/http/response/RangeNotSatisfiable_Test.java | 2 +-
 .../juneau/http/response/RequestHeaderFieldsTooLarge_Test.java| 2 +-
 .../org/apache/juneau/http/response/ServiceUnavailable_Test.java  | 2 +-
 .../org/apache/juneau/http/response/TooManyRequests_Test.java | 2 +-
 .../java/org/apache/juneau/http/response/Unauthorized_Test.java   | 2 +-
 .../juneau/http/response/UnavailableForLegalReasons_Test.java | 2 +-
 .../org/apache/juneau/http/response/UnprocessableEntity_Test.java | 2 +-
 .../apache/juneau/http/response/UnsupportedMediaType_Test.java| 2 +-
 .../org/apache/juneau/http/response/UpgradeRequired_Test.java | 2 +-
 .../java/org/apache/juneau/http/response/UriTooLong_Test.java | 2 +-
 .../apache/juneau/http/response/VariantAlsoNegotiates_Test.java   | 2 +-
 .../org/apache/juneau/rest/client/RestCallException_Test.java | 2 +-
 .../org/apache/juneau/rest/client/RestClient_Headers_Test.java| 4 ++--
 .../apache/juneau/rest/client/RestClient_Response_Body_Test.java  | 4 ++--
 .../test/java/org/apache/juneau/rest/client/RestClient_Test.java  | 2 +-
 44 files changed, 53 insertions(+), 53 deletions(-)

diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
index 55bae24..f42786a 100644
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
+++ 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
@@ -103,7 +103,7 @@ public class TestMicroservice {
RestClientBuilder rc = RestClient.create()
.json()
.rootUri(microserviceURI)
-   .noLog();
+   .noTrace();
rc.retryHandler(
new HttpRequestRetryHandler() {
@Override
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
index 67f62b4..3e20ccf 100644
--- 
a/juneau-rest

[juneau] branch master updated: Cleanup.

2021-05-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 c6b127f  Cleanup.
c6b127f is described below

commit c6b127fee8379f3e2d0045352f1af3d2308a8a2e
Author: JamesBognar 
AuthorDate: Sun May 9 12:28:52 2021 -0400

Cleanup.
---
 .../java/org/apache/juneau/PropertyNamerDLC.java   |  19 +-
 ...ropertyNamerDLC.java => PropertyNamerDUCS.java} |  46 ++--
 .../java/org/apache/juneau/PropertyNamerULC.java   |  19 +-
 .../java/org/apache/juneau/http/HttpParts.java |  42 
 .../http/entity/SerializedEntityBuilder.java   |  54 +++-
 .../apache/juneau/http/part/PartListBuilder.java   | 280 +++--
 .../org/apache/juneau/http/response/Accepted.java  |   2 -
 .../juneau/http/response/AlreadyReported.java  |   2 -
 .../org/apache/juneau/http/response/Continue.java  |   2 -
 .../org/apache/juneau/http/response/Created.java   |   2 -
 .../apache/juneau/http/response/EarlyHints.java|   2 -
 .../org/apache/juneau/http/response/Found.java |   2 -
 .../org/apache/juneau/http/response/IMUsed.java|   2 -
 .../juneau/http/response/MovedPermanently.java |   2 -
 .../apache/juneau/http/response/MultiStatus.java   |   2 -
 .../juneau/http/response/MultipleChoices.java  |   2 -
 .../org/apache/juneau/http/response/NoContent.java |   2 -
 .../http/response/NonAuthoritiveInformation.java   |   2 -
 .../apache/juneau/http/response/NotModified.java   |   2 -
 .../java/org/apache/juneau/http/response/Ok.java   |   2 -
 .../juneau/http/response/PartialContent.java   |   2 -
 .../juneau/http/response/PermanentRedirect.java|   2 -
 .../apache/juneau/http/response/Processing.java|   2 -
 .../apache/juneau/http/response/ResetContent.java  |   2 -
 .../org/apache/juneau/http/response/SeeOther.java  |   2 -
 .../juneau/http/response/SwitchingProtocols.java   |   2 -
 .../juneau/http/response/TemporaryRedirect.java|   2 -
 .../org/apache/juneau/http/response/UseProxy.java  |   2 -
 28 files changed, 404 insertions(+), 100 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDLC.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDLC.java
index 43d0e5f..97b6c2c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDLC.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDLC.java
@@ -12,6 +12,9 @@
 // 
***
 package org.apache.juneau;
 
+import static java.lang.Character.*;
+import static org.apache.juneau.internal.StringUtils.*;
+
 /**
  * Converts property names to dashed-lower-case format.
  *
@@ -24,16 +27,19 @@ package org.apache.juneau;
  */
 public final class PropertyNamerDLC implements PropertyNamer {
 
+   /** Reusable instance. */
+   public static final PropertyNamer INSTANCE = new PropertyNamerDLC();
+
@Override /* PropertyNamer */
public String getPropertyName(String name) {
-   if (name == null || name.isEmpty())
+   if (isEmpty(name))
return name;
 
int numUCs = 0;
-   boolean isPrevUC = Character.isUpperCase(name.charAt(0));
+   boolean isPrevUC = isUpperCase(name.charAt(0));
for (int i = 1; i < name.length(); i++) {
char c = name.charAt(i);
-   if (Character.isUpperCase(c)) {
+   if (isUpperCase(c)) {
if (! isPrevUC)
numUCs++;
isPrevUC = true;
@@ -43,16 +49,15 @@ public final class PropertyNamerDLC implements 
PropertyNamer {
}
 
char[] name2 = new char[name.length() + numUCs];
-   isPrevUC = Character.isUpperCase(name.charAt(0));
-   name2[0] = Character.toLowerCase(name.charAt(0));
+   isPrevUC = isUpperCase(name.charAt(0));
int ni = 0;
for (int i = 0; i < name.length(); i++) {
char c = name.charAt(i);
-   if (Character.isUpperCase(c)) {
+   if (isUpperCase(c)) {
if (! isPrevUC)
name2[ni++] = '-';
isPrevUC = true;
-   name2[ni++] = Character.toLowerCase(c);
+   name2[ni++] = toLowerCase(c);
} else {
isPrevUC = false;
name2[ni++] = c;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apac

[juneau] branch master updated: MessagePack improvements.

2021-05-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 8ed6644  MessagePack improvements.
8ed6644 is described below

commit 8ed6644bb0420b1f3db910e410d9abdd23b9431e
Author: JamesBognar 
AuthorDate: Sun May 9 11:13:14 2021 -0400

MessagePack improvements.

1) Byte array serialized to bin entries.
2) Strings serialized without intermediate byte array allocations.
---
 .../apache/juneau/msgpack/MsgPackOutputStream.java | 113 +++--
 .../juneau/msgpack/MsgPackParserSession.java   |   2 +-
 .../juneau/msgpack/MsgPackSerializerSession.java   |   3 +
 3 files changed, 109 insertions(+), 9 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java
index 4ded995..8436050 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java
@@ -12,12 +12,15 @@
 // 
***
 package org.apache.juneau.msgpack;
 
+import static org.apache.juneau.internal.ExceptionUtils.*;
 import static org.apache.juneau.msgpack.DataType.*;
 
 import java.io.*;
 import java.math.*;
 import java.util.concurrent.atomic.*;
 
+import org.apache.juneau.internal.*;
+
 /**
  * Specialized output stream for serializing MessagePack streams.
  *
@@ -214,14 +217,22 @@ public final class MsgPackOutputStream extends 
OutputStream {
// * ___ is a 32-bit big-endian 
unsigned integer which represents N
// * N is the length of data
 
-   byte[] b = cs.toString().getBytes("UTF-8");
-   if (b.length < 32)
-   return append1(0xA0 + b.length).append(b);
-   if (b.length < (1<<8))
-   return append1(STR8).append1(b.length).append(b);
-   if (b.length < (1<<16))
-   return append1(STR16).append2(b.length).append(b);
-   return append1(STR32).append4(b.length).append(b);
+   int length = getUtf8ByteLength(cs);
+   if (length < 32)
+   append1(0xA0 + length);
+   else if (length < (1<<8))
+   append1(STR8).append1(length);
+   else if (length < (1<<16))
+   append1(STR16).append2(length);
+   else
+   append1(STR32).append4(length);
+
+   int length2 = writeUtf8To(cs, os);
+
+   if (length != length2)
+   throw ioException("Unexpected length.  Expected={0}, 
Actual={1}", length, length2);
+
+   return this;
}
 
/**
@@ -257,6 +268,44 @@ public final class MsgPackOutputStream extends 
OutputStream {
}
 
/**
+* Appends a binary field to the stream.
+*/
+   final MsgPackOutputStream appendBinary(InputStream is) throws 
IOException {
+
+   ByteArrayOutputStream baos = new ByteArrayOutputStream();
+   IOUtils.pipe(is, baos);
+
+   byte[] b = baos.toByteArray();
+
+   // bin 8 stores a byte array whose length is up to (2^8)-1 
bytes:
+   // ++++
+   // | 0xc4   ||  data  |
+   // ++++
+   //
+   // bin 16 stores a byte array whose length is up to (2^16)-1 
bytes:
+   // +++++
+   // | 0xc5   |||  data  |
+   // +++++
+   //
+   // bin 32 stores a byte array whose length is up to (2^32)-1 
bytes:
+   // +++++++
+   // | 0xc6   |||||  data  |
+   // +++++++
+   //
+   // where
+   // *  is a 8-bit unsigned integer which represents N
+   // * _ is a 16-bit big-endian unsigned integer 
which represents N
+   // * ___ is a 32-bit big-endian 
unsigned integer which represents N
+   // * N is the length of data
+
+   if (b.length < (1<<8))
+   return append1(BIN8).append1(b.length).append(b);
+   if (b.length &l

[juneau] branch master updated: Remove deprecated AddFlag references.

2021-04-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 3c495f6  Remove deprecated AddFlag references.
3c495f6 is described below

commit 3c495f6ee6614721af22de590382c0462c96573b
Author: JamesBognar 
AuthorDate: Fri Apr 23 09:25:11 2021 -0400

Remove deprecated AddFlag references.
---
 .../src/main/java/org/apache/juneau/AddFlag.java   |  61 --
 .../main/java/org/apache/juneau/ListOperation.java |   9 +-
 .../org/apache/juneau/rest/client/RestClient.java  |  32 +++---
 .../org/apache/juneau/rest/client/RestRequest.java | 128 ++---
 .../client/RestClient_Config_RestClient_Test.java  |   2 +-
 .../rest/client/RestClient_FormData_Test.java  |   8 +-
 .../rest/client/RestClient_Headers_Test.java   |   8 +-
 .../juneau/rest/client/RestClient_Query_Test.java  |  10 +-
 .../apache/juneau/rest/client/RestClient_Test.java |   2 +-
 9 files changed, 100 insertions(+), 160 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AddFlag.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AddFlag.java
deleted file mode 100644
index cbc..000
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AddFlag.java
+++ /dev/null
@@ -1,61 +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;
-
-import java.util.*;
-
-/**
- * Identifies how to add elements to a list.
- */
-public enum AddFlag {
-
-   /**
-* Any previous value(s) should be overwritten/replaced.
-*/
-   APPEND,
-
-   /**
-* Any previous value(s) should be overwritten/replaced.
-*/
-   PREPEND,
-
-   /**
-* Any previous value(s) should be overwritten/replaced.
-*/
-   REPLACE,
-
-   /**
-* Don't add the value if it's null or an empty string.
-*/
-   SKIP_IF_EMPTY;
-
-   /**
-* Default flags.
-*/
-   public static final EnumSet DEFAULT_FLAGS = EnumSet.of(APPEND);
-
-   /**
-* Default skip-if-empty flags.
-*/
-   public static final EnumSet SKIP_IF_EMPTY_FLAGS = 
EnumSet.of(APPEND, SKIP_IF_EMPTY);
-
-   /**
-* Returns {@link #DEFAULT_FLAGS} if the enum set is null or 
empty.
-*
-* @param s The set to check.
-* @return Either the same set or {@link #DEFAULT_FLAGS}.  Never 
null.
-*/
-   public static EnumSet orDefault(EnumSet s) {
-   return s == null || s.isEmpty() ? DEFAULT_FLAGS : s;
-   }
-}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java
index 3ccfebc..aaf0157 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java
@@ -43,28 +43,29 @@ public enum ListOperation {
/**
 * Don't add the value if it's null or an empty string.
 */
-   @Deprecated
SKIP_IF_EMPTY;
 
+   public static final boolean NEEDS_CLEANUP = true;
+
/**
 * Default flags.
+* Needs to be removed.
 */
-   @Deprecated
public static final EnumSet DEFAULT

[juneau] branch master updated: Remove non-fluent classes from ConfigurablePropertyCodeGenerator.

2021-04-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 6d2f3d3  Remove non-fluent classes from 
ConfigurablePropertyCodeGenerator.
6d2f3d3 is described below

commit 6d2f3d354091c3d75dd335a5c96f24092eb94f74
Author: JamesBognar 
AuthorDate: Thu Apr 22 09:34:45 2021 -0400

Remove non-fluent classes from ConfigurablePropertyCodeGenerator.
---
 .../main/ConfigurablePropertyCodeGenerator.java| 23 ++
 1 file changed, 2 insertions(+), 21 deletions(-)

diff --git a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java 
b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
index 86ce143..b02302f 100644
--- a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++ b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
@@ -59,13 +59,10 @@ import org.apache.juneau.xml.*;
 public class ConfigurablePropertyCodeGenerator {
 
static Class[] classes = new Class[]{
-   Accepted.class,
-   AlreadyReported.class,
AnnotationBuilder.class,
ArrayAssertion.class,
Assertion.class,
BasicHeader.class,
-   BasicHttpResponse.class,
BasicRuntimeExceptionBuilder.class,
BasicStatusLineBuilder.class,
BeanAssertion.class,
@@ -84,12 +81,9 @@ public class ConfigurablePropertyCodeGenerator {
ConfigStoreBuilder.class,
ConstructorInfo.class,
ContextBuilder.class,
-   Continue.class,
-   Created.class,
CsvParserBuilder.class,
CsvSerializerBuilder.class,
DateAssertion.class,
-   EarlyHints.class,
ExecutableInfo.class,
FileFinderBuilder.class,
FluentArrayAssertion.class,
@@ -116,8 +110,8 @@ public class ConfigurablePropertyCodeGenerator {
FluentResponseHeaderAssertion.class,
FluentStringAssertion.class,
FluentThrowableAssertion.class,
+   FluentVersionAssertion.class,
FluentZonedDateTimeAssertion.class,
-   Found.class,
HeaderListBuilder.class,
HtmlDocSerializerBuilder.class,
HtmlParserBuilder.class,
@@ -128,7 +122,6 @@ public class ConfigurablePropertyCodeGenerator {
HttpExceptionBuilder.class,
HttpResourceBuilder.class,
HttpResponseBuilder.class,
-   IMUsed.class,
InputStreamParserBuilder.class,
IntegerAssertion.class,
JsonParserBuilder.class,
@@ -144,16 +137,9 @@ public class ConfigurablePropertyCodeGenerator {
MethodExecStoreBuilder.class,
MethodInfo.class,
MockRestClientBuilder.class,
-   MovedPermanently.class,
MsgPackParserBuilder.class,
MsgPackSerializerBuilder.class,
-   MultipleChoices.class,
-   MultiStatus.class,
-   NoContent.class,
-   NonAuthoritiveInformation.class,
-   NotModified.class,
ObjectAssertion.class,
-   Ok.class,
OpenApiParserBuilder.class,
OpenApiSerializerBuilder.class,
OutputStreamSerializerBuilder.class,
@@ -164,16 +150,13 @@ public class ConfigurablePropertyCodeGenerator {
PermanentRedirect.class,
PlainTextParserBuilder.class,
PlainTextSerializerBuilder.class,
-   Processing.class,
RdfParserBuilder.class,
RdfSerializerBuilder.class,
ReaderParserBuilder.class,
RequestHttpPart.class,
-   ResetContent.class,
RestClientBuilder.class,
RestContextBuilder.class,
RestOperationContextBuilder.class,
-   SeeOther.class,
SerializedEntity.class,
SerializedEntityBuilder.class,
SerializedHeader.class,
@@ -187,7 +170,6 @@ public class ConfigurablePropertyCodeGenerator {
SoapXmlSerializerBuilder.class,
StaticFilesBuilder.class,
StringAssertion.class,
-   SwitchingProtocols.class,
TargetedAnnotationBuilder.class,
TargetedAnnotationCBuilder.class,
TargetedAnnotationMBuilder.class,
@@ -197,7 +179,6 @@ public class ConfigurablePropertyCodeGenerator {
TargetedAnnotationTMBuilder.class,
TargetedAnnotationTMFBuilder.class,
TargetedAnnotationTMFCBuilder.class

[juneau] branch master updated: Clean up ExceptionUtils.

2021-04-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 e3c2bdf  Clean up ExceptionUtils.
e3c2bdf is described below

commit e3c2bdfbbd51586252f67fe592c556db993e1741
Author: JamesBognar 
AuthorDate: Wed Apr 21 17:06:50 2021 -0400

Clean up ExceptionUtils.
---
 .../java/org/apache/juneau/BasicException.java |  2 +-
 .../juneau/BasicIllegalArgumentException.java  | 72 --
 .../main/java/org/apache/juneau/BeanSession.java   |  5 +-
 .../org/apache/juneau/assertions/Assertions.java   | 21 +--
 .../org/apache/juneau/http/header/EntityTag.java   |  9 ++-
 .../org/apache/juneau/http/header/HeaderList.java  |  4 +-
 .../apache/juneau/http/part/BasicIntegerPart.java  |  4 +-
 .../org/apache/juneau/http/part/BasicLongPart.java |  4 +-
 .../java/org/apache/juneau/http/part/PartList.java |  4 +-
 .../org/apache/juneau/internal/ExceptionUtils.java | 21 +++
 .../java/org/apache/juneau/internal/SimpleMap.java | 13 ++--
 .../org/apache/juneau/internal/StringUtils.java|  5 +-
 .../org/apache/juneau/internal/ThrowableUtils.java | 15 -
 .../java/org/apache/juneau/reflect/ClassInfo.java  | 16 +++--
 .../main/java/org/apache/juneau/svl/MapVar.java|  6 +-
 .../src/main/java/org/apache/juneau/svl/Var.java   | 13 ++--
 .../java/org/apache/juneau/svl/vars/IfVar.java |  6 +-
 .../java/org/apache/juneau/svl/vars/LenVar.java|  6 +-
 .../apache/juneau/svl/vars/PatternExtractVar.java  |  6 +-
 .../apache/juneau/svl/vars/PatternMatchVar.java|  6 +-
 .../apache/juneau/svl/vars/PatternReplaceVar.java  |  6 +-
 .../org/apache/juneau/svl/vars/SubstringVar.java   |  7 +--
 .../java/org/apache/juneau/svl/vars/SwitchVar.java |  9 +--
 .../org/apache/juneau/http/EntityTag_Test.java |  2 +-
 .../apache/juneau/reflection/ClassInfoTest.java|  2 +-
 25 files changed, 87 insertions(+), 177 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 39343bc..b60f5d7 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
@@ -21,7 +21,7 @@ import org.apache.juneau.internal.*;
 /**
  * Subclass of non-runtime exceptions that take in a message and zero or more 
arguments.
  */
-public class BasicException extends Exception {
+public abstract class BasicException extends Exception {
 
private static final long serialVersionUID = 1L;
 
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
deleted file mode 100644
index 08b408d..000
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicIllegalArgumentException.java
+++ /dev/null
@@ -1,72 +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;
-
-import static org.apache.juneau.internal.StringUtils.*;
-
-import java.text.*;
-
-import org.apache.juneau.internal.*;
-import org.apache.juneau.reflect.*;
-
-/**
- * Subclass of illegal-argument exceptions that take in a message and zer

[juneau] branch master updated: REST refactoring.

2021-03-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 0f1b357  REST refactoring.
0f1b357 is described below

commit 0f1b35716961989733cf6da09a008d5f0d053e17
Author: JamesBognar 
AuthorDate: Fri Mar 12 14:49:38 2021 -0500

REST refactoring.
---
 .../apache/juneau/config/event/ConfigEvents.java   |   4 +-
 .../apache/juneau/config/internal/ConfigMap.java   |   4 +-
 .../juneau/config/store/ConfigClasspathStore.java  |   4 +-
 .../juneau/config/store/ConfigFileStore.java   |   6 +-
 .../juneau/config/store/ConfigMemoryStore.java |   4 +-
 .../java/org/apache/juneau/dto/html5/Select.java   |   5 +-
 .../org/apache/juneau/dto/swagger/Operation.java   |   4 +-
 .../apache/juneau/annotation/NotThreadSafe.java}   |  43 +---
 .../org/apache/juneau/annotation/ThreadSafe.java}  |  43 +---
 .../juneau/assertions/FluentBaseAssertion.java |   4 +-
 .../juneau/assertions/FluentStringAssertion.java   |  12 +-
 .../juneau/http/header/BasicCsvArrayHeader.java|   4 +-
 .../org/apache/juneau/http/header/BasicHeader.java |   2 +-
 .../org/apache/juneau/http/header/HeaderList.java  |  68 +--
 .../juneau/http/header/HeaderListBuilder.java  | 223 -
 .../juneau/http/header/SerializedHeader.java   |  21 ++
 .../apache/juneau/http/part/BasicCsvArrayPart.java |   4 +-
 .../juneau/http/resource/HttpResourceBuilder.java  |  18 +-
 .../juneau/http/response/BasicHttpException.java   |  10 +-
 .../juneau/http/response/BasicHttpResponse.java|  10 +-
 .../juneau/http/response/HttpExceptionBuilder.java |  18 +-
 .../juneau/http/response/HttpResponseBuilder.java  |  18 +-
 .../org/apache/juneau/internal/ArrayUtils.java |   2 +-
 .../org/apache/juneau/internal/StringUtils.java|  21 +-
 .../org/apache/juneau/utils/ReflectionMap.java |  12 +-
 .../apache/juneau/xml/XmlSerializerSession.java|   4 +-
 .../org/apache/juneau/rest/client/RestClient.java  |   4 +-
 .../apache/juneau/rest/client/RestResponse.java|   8 +-
 .../juneau/rest/client/remote/RemoteMeta.java  |   6 +-
 .../java/org/apache/juneau/rest/RestContext.java   |   4 +-
 .../apache/juneau/rest/RestOperationContext.java   |  10 +-
 .../apache/juneau/config/ConfigImportsTest.java|   4 +-
 .../org/apache/juneau/http/HeaderList_Test.java|  37 ++--
 .../org/apache/juneau/http/remote/Remote_Test.java |   4 +-
 .../juneau/transforms/OneWayStringSwapTest.java|   2 +-
 .../juneau/transforms/RoundTripStringSwapTest.java |   4 +-
 36 files changed, 350 insertions(+), 301 deletions(-)

diff --git 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java
 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java
index 2aea3d6..f671885 100644
--- 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java
+++ 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java
@@ -30,7 +30,7 @@ public class ConfigEvents extends ArrayList {
 */
public boolean isSectionModified(String name) {
for (ConfigEvent ce : this)
-   if (isEquals(name, ce.getSection()))
+   if (eq(name, ce.getSection()))
return true;
return false;
}
@@ -44,7 +44,7 @@ public class ConfigEvents extends ArrayList {
 */
public boolean isKeyModified(String section, String key) {
for (ConfigEvent ce : this)
-   if (isEquals(section, ce.getSection()) && isEquals(key, 
ce.getKey()))
+   if (eq(section, ce.getSection()) && eq(key, 
ce.getKey()))
return true;
return false;
}
diff --git 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
index 105fe3f..318e3bc 100644
--- 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
+++ 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
@@ -613,7 +613,7 @@ public class ConfigMap implements ConfigStoreListener {
ConfigEvents changes = null;
writeLock();
try {
-   if (! StringUtils.isEquals(contents, newContents)) {
+   if (ne(contents, newContents)) {
changes = findDiffs(newContents);
load(newContents);
 
@@ -831,7 +831,7 @@ public class ConfigMap implements ConfigStoreListener {
} else {
for

[juneau] branch master updated: REST refactoring.

2021-03-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 09d8ab4  REST refactoring.
09d8ab4 is described below

commit 09d8ab4bef2307e8108ee42498024381dd18333c
Author: JamesBognar 
AuthorDate: Fri Mar 12 12:53:17 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/rest/client/RestClient.java  |  4 +-
 .../org/apache/juneau/rest/client/RestRequest.java | 88 --
 .../org/apache/juneau/rest/RequestHeaders.java | 27 ---
 .../client/RestClient_Config_RestClient_Test.java  | 17 +++--
 .../rest/client/RestClient_Headers_Test.java   | 54 ++---
 .../apache/juneau/rest/client/RestClient_Test.java |  3 +-
 6 files changed, 135 insertions(+), 58 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index 868664e..0c9a1df 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -2900,7 +2900,7 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable, Re
RestRequest req = createRequest(toURI(op.getUri(), rootUri), 
op.getMethod(), op.hasBody());
 
for (Object o : headers)
-   req.header(BasicHeader.cast(o));
+   req.header(APPEND, BasicHeader.cast(o));
 
for (Object o : query)
req.query(BasicPart.cast(o));
@@ -3084,7 +3084,7 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable, Re
rc.parser(parser);
 
for (Header h : rm.getHeaders())
-   rc.header(h);
+   rc.header(APPEND, h);
 
for (RemoteOperationArg a : 
rom.getPathArgs())
rc.pathArg(a.getName(), 
args[a.getIndex()], a.getSchema(), a.getSerializer(s));
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
index 9442560..3ee14fd 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
@@ -2032,7 +2032,10 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
}
 
/**
-* Appends a header on the request.
+* Adds or replaces a header on the request.
+* 
+* 
+* Replaces the header if it already exists, or appends it to the end 
of the headers if it doesn't.
 *
 * Example:
 * 
@@ -2057,9 +2060,12 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
}
 
/**
-* Appends a header on the request.
+* Adds or replaces a header on the request.
 *
 * 
+* Replaces the header if it already exists, or appends it to the end 
of the headers if it doesn't.
+* 
+* 
 * The optional schema allows for specifying how part should be 
serialized (as a pipe-delimited list for example).
 *
 * Example:
@@ -2089,7 +2095,7 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
}
 
/**
-* Adds a header to the request.
+* Adds or replaces a header to the request.
 *
 * Example:
 * 
@@ -2123,8 +2129,11 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
}
 
/**
-* Appends a header on the request.
+* Adds or replaces a header on the request.
 *
+* 
+* Replaces the header if it already exists, or appends it to the end 
of the headers if it doesn't.
+* 
 * Example:
 * 
 *  // Adds header "Foo: bar".
@@ -2143,8 +2152,37 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
}
 
/**
-* Appends multiple headers to the request.
+* Adds or replaces a header on the request.
+*
+* Example:
+* 
+*  // Adds header "Foo: bar".
+*  client
+*  .get(URI)
+*  .header(APPEND, 
BasicHeader.of("Foo", "bar"))
+*  .run();
+

[juneau] branch master updated: REST refactoring.

2021-03-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 7843bba  REST refactoring.
7843bba is described below

commit 7843bba10aed3fc8f2179a9ea74984b0b0462d93
Author: JamesBognar 
AuthorDate: Thu Mar 11 18:17:23 2021 -0500

REST refactoring.
---
 .../juneau/http/header/HeaderListBuilder.java  | 12 ++
 .../apache/juneau/rest/client/RestResponse.java| 49 --
 .../rest/client/RestClient_Response_Test.java  |  2 +-
 3 files changed, 41 insertions(+), 22 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java
index 7609560..e1736b8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java
@@ -325,6 +325,18 @@ public class HeaderListBuilder {
/**
 * Replaces the first occurrence of the headers with the same name.
 *
+* @param name The header name.
+* @param value The header value.
+* @return This object (for method chaining).
+*/
+   public HeaderListBuilder update(String name, String value) {
+   Header x = isResolving() ? new BasicHeader(name, 
resolver(value)) : new BasicHeader(name, value);
+   return update(x);
+   }
+
+   /**
+* Replaces the first occurrence of the headers with the same name.
+*
 * 
 * If no header with the same name is found the given header is added 
to the end of the list.
 *
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
index 3b2328a..94f0d4c 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
@@ -54,6 +54,7 @@ public class RestResponse implements HttpResponse {
HttpPartParserSession partParser;
private ResponseBody responseBody;
private boolean isClosed;
+   private HeaderList headers;
 
/**
 * Constructor.
@@ -70,6 +71,7 @@ public class RestResponse implements HttpResponse {
this.response = response == null ? new BasicHttpResponse(null, 
0, null) : response;
this.responseBody = new ResponseBody(client, request, this, 
parser);
this.partParser = client.getPartParserSession();
+   this.headers = HeaderList.of(this.response.getAllHeaders());
}
 
/**
@@ -638,10 +640,10 @@ public class RestResponse implements HttpResponse {
 */
@Override /* HttpMessage */
public ResponseHeader[] getHeaders(String name) {
-   Header[] a = response.getHeaders(name);
-   ResponseHeader[] b = new ResponseHeader[a.length];
-   for (int i = 0; i < a.length; i++)
-   b[i] = new ResponseHeader(request, this, 
a[i]).parser(partParser);
+   List a = headers.get(name);
+   ResponseHeader[] b = new ResponseHeader[a.size()];
+   for (int i = 0; i < b.length; i++)
+   b[i] = new ResponseHeader(request, this, 
a.get(i)).parser(partParser);
return b;
}
 
@@ -658,7 +660,7 @@ public class RestResponse implements HttpResponse {
 */
@Override /* HttpMessage */
public ResponseHeader getFirstHeader(String name) {
-   return new ResponseHeader(request, this, 
response.getFirstHeader(name)).parser(partParser);
+   return new ResponseHeader(request, this, 
headers.getFirst(name)).parser(partParser);
}
 
/**
@@ -674,17 +676,22 @@ public class RestResponse implements HttpResponse {
 */
@Override /* HttpMessage */
public ResponseHeader getLastHeader(String name) {
-   return new ResponseHeader(request, this, 
response.getLastHeader(name)).parser(partParser);
+   return new ResponseHeader(request, this, 
headers.getLast(name)).parser(partParser);
}
 
/**
-* A synonym for {@link #getLastHeader(String)}.
+* Returns the response header with the specified name.
+*
+* 
+* If more than one header with the name exists, it is condensed into a 
comma-delimited list per
+* RFC2616
+* which governs multiple message header fields.
 *
 * @param name The name of the header to 

[juneau] branch master updated: REST refactoring.

2021-03-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 38b2fa1  REST refactoring.
38b2fa1 is described below

commit 38b2fa1d7984ae5709ce3954c9b662941eb3241a
Author: JamesBognar 
AuthorDate: Thu Mar 11 17:37:17 2021 -0500

REST refactoring.
---
 .../juneau/http/header/HeaderListBuilder.java  | 55 --
 .../java/org/apache/juneau/rest/RestContext.java   | 12 ++---
 .../apache/juneau/rest/RestOperationContext.java   | 10 ++--
 3 files changed, 11 insertions(+), 66 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java
index 7145c09..7609560 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java
@@ -370,61 +370,6 @@ public class HeaderListBuilder {
return this;
}
 
-   /**
-* Appends or replaces the header values in this list.
-*
-* 
-* If the header already exists in this list, it will be replaced with 
the new value.
-* Otherwise it will be appended to the end of this list.
-*
-* @param values The values to append or replace in this list.
-* @return This object (for method chaining).
-*/
-   public HeaderListBuilder appendUnique(Header...values) {
-   for (Header h : values) {
-   boolean replaced = false;
-   for (ListIterator li = headers.listIterator(); 
li.hasNext();) {
-   Header h2 = li.next();
-   if (h2.getName().equalsIgnoreCase(h.getName())) 
{
-   li.set(h);
-   replaced = true;
-   break;
-   }
-   }
-   if (! replaced)
-   add(h);
-   }
-   return this;
-   }
-
-
-   /**
-* Appends or replaces the header values in this list.
-*
-* 
-* If the header already exists in this list, it will be replaced with 
the new value.
-* Otherwise it will be appended to the end of this list.
-*
-* @param values The values to append or replace in this list.
-* @return This object (for method chaining).
-*/
-   public HeaderListBuilder appendUnique(Collection values) {
-   for (Header h : values) {
-   boolean replaced = false;
-   for (ListIterator li = headers.listIterator(); 
li.hasNext();) {
-   Header h2 = li.next();
-   if (h2.getName().equalsIgnoreCase(h.getName())) 
{
-   li.set(h);
-   replaced = true;
-   break;
-   }
-   }
-   if (! replaced)
-   add(h);
-   }
-   return this;
-   }
-
private boolean isResolving() {
return varResolver != null;
}
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 3f37ccc..8c57a94 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -2314,17 +2314,17 @@ public class RestContext extends BeanContext {
 *
 *  @Override
 *  public int process(RestCall call) 
throws IOException {
-* 
+*
 *  RestResponse res = 
call.getRestResponse();
 *  Foo foo = 
res.getOutput(Foo.class);
-* 
+*
 *  if (foo == 
null)
 *  return 
NEXT;  // Let the next processor handle it.
-* 
+*
 *  try (Writer w = 
res.getNegotiatedWriter()) {
 *  //Pipe it to the writer 
ourselves.
 *  }
-*  
+*
 *  return FINISHED;  
// We handled

[juneau] branch master updated: REST refactoring.

2021-03-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 04e6e0e  REST refactoring.
04e6e0e is described below

commit 04e6e0e7e722f8bcf65ebcf565e4c9046a46d57d
Author: JamesBognar 
AuthorDate: Thu Mar 11 15:53:49 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/http/header/Thrown.java | 119 +++--
 .../juneau/http/response/HttpExceptionBuilder.java |   2 +-
 .../org/apache/juneau/rest/client/RestRequest.java |   8 +-
 3 files changed, 66 insertions(+), 63 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java
index 354f161..a0545b9 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.http.header;
 
 import static org.apache.juneau.internal.StringUtils.*;
+import static java.util.Collections.*;
 
 import java.util.*;
 
@@ -26,15 +27,28 @@ import org.apache.juneau.http.annotation.*;
  *
  * Example
  * 
- * Thrown: org.apache.juneau.http.response.NotFound, Resource was not found
+ * Thrown: org.apache.juneau.http.response.NotFound;Resource was not found
  * 
  *
  * 
  * This header isn't part of the RFC2616 specification, but is provided to 
allow for Java exception information
  * to be delivered to remote REST Java interfaces.
+ * 
+ * 
+ * This header supports comma-delimited values for multiple thrown values.
+ * 
+ * Thrown: org.apache.juneau.http.response.NotFound;Resource was not 
found,java.lang.RuntimeException;foo
+ * 
+ * 
+ * 
+ * Note that this is equivalent to specifying multiple header values.
+ * 
+ * Thrown: org.apache.juneau.http.response.NotFound;Resource was not found
+ * Thrown: java.lang.RuntimeException;foo
+ * 
  */
 @Header("Thrown")
-public class Thrown extends BasicHeader {
+public class Thrown extends BasicCsvArrayHeader {
 
private static final long serialVersionUID = 1L;
 
@@ -43,19 +57,24 @@ public class Thrown extends BasicHeader {
 */
public static final Thrown EMPTY = new Thrown((String)null);
 
-   private final String className, message;
+   private final List parts;
 
/**
 * Convenience creator.
 *
-* @param value
+* @param values
 *  The header value.
 * @return A new {@link Exception} object.
 */
-   public static Thrown of(Throwable value) {
-   if (value == null)
-   return null;
-   return new Thrown(value);
+   public static Thrown of(Throwable...values) {
+   StringBuilder sb = new StringBuilder();
+   for (int i = 0; i < values.length; i++) {
+   if (i > 0)
+   sb.append(", ");
+   Throwable t = values[i];
+   
sb.append(urlEncode(t.getClass().getName())).append(";").append(urlEncode(t.getMessage()));
+   }
+   return new Thrown(sb.toString());
}
 
/**
@@ -77,40 +96,18 @@ public class Thrown extends BasicHeader {
 * @param value
 *  The header value.
 */
-   public Thrown(Throwable value) {
-   super("Thrown", value);
-   className = 
stripInvalidHttpHeaderChars(value.getClass().getName());
-   message = stripInvalidHttpHeaderChars(value.getMessage());
-   }
-
-   @Override /* Header */
-   public String getValue() {
-   if (message == null)
-   return className;
-   return className + ", " + message;
-   }
-
-   /**
-* Constructor.
-*
-* @param value
-*  The header value.
-*/
public Thrown(String value) {
super("Thrown", value);
-   if (value != null) {
-   int i = value.indexOf(',');
+   List l = new ArrayList<>();
+   for (String s : asList().orElse(emptyList())) {
+   int i = value.indexOf(';');
if (i != -1) {
-   className = value.substring(0, i).trim();
-   message = value.substring(i+1).trim();
+   l.add(new Part(urlDecode(s.substring(0, 
i).trim()), urlDecode(s.substring(i+1).trim(;
} else {
-   className = value;
-   message =

[juneau] branch master updated: REST refactoring.

2021-03-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 3fd6ba6  REST refactoring.
3fd6ba6 is described below

commit 3fd6ba6c7141a85b53f651dc263d16deeb7905e3
Author: JamesBognar 
AuthorDate: Thu Mar 11 15:19:11 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/http/HttpHeaders.java   | 63 ++
 .../org/apache/juneau/http/header/HeaderList.java  | 50 +
 2 files changed, 113 insertions(+)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
index 82a0aa5..6f4acfb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
@@ -12,13 +12,18 @@
 // 
***
 package org.apache.juneau.http;
 
+import static org.apache.juneau.internal.StringUtils.*;
+
+import java.lang.reflect.*;
 import java.time.*;
 import java.util.*;
+import java.util.concurrent.*;
 import java.util.function.*;
 
 import org.apache.http.*;
 import org.apache.juneau.http.header.*;
 import org.apache.juneau.http.header.Date;
+import org.apache.juneau.reflect.*;
 
 /**
  * Standard predefined HTTP headers.
@@ -3157,6 +3162,44 @@ public class HttpHeaders {
}
 
/**
+* Creates a new {@link Header} of the specified type.
+*
+* 
+* The implementation class must have a public constructor taking in 
one of the following argument lists:
+* 
+*  X(String value)
+*  X(Object value)
+*  X(String name, String value)
+*  X(String name, Object value)
+* 
+*
+* @param type The header implementation class.
+* @param name The header name.
+* @param value The header value.
+* @return A new unmodifiable instance, never null.
+*/
+   public static final  T header(Class type, String 
name, Object value) {
+   Constructor c = findConstructor(type);
+   if (c == null)
+   throw new UnsupportedOperationException("Constructor 
for type "+type.getClass().getName()+" could not be found.");
+
+   Class[] pt = c.getParameterTypes();
+   Object[] args = new Object[pt.length];
+   if (pt.length == 1) {
+   args[0] = pt[0] == String.class ? stringify(value) : 
value;
+   } else {
+   args[0] = name;
+   args[1] = pt[1] == String.class ? stringify(value) : 
value;
+   }
+
+   try {
+   return c.newInstance(args);
+   } catch (Exception e) {
+   throw new RuntimeException(e);
+   }
+   }
+
+   /**
 * Instantiates a new {@link HeaderListBuilder}.
 *
 * @return A new empty builder.
@@ -3197,4 +3240,24 @@ public class HttpHeaders {
public static HeaderList headerList(Object...pairs) {
return HeaderList.ofPairs(pairs);
}
+
+   private static final ConcurrentHashMap,Optional>> HEADER_CONSTRUCTORS = new 
ConcurrentHashMap<>();
+
+   @SuppressWarnings("unchecked")
+   private static final  Constructor 
findConstructor(Class c) {
+   Optional> o = 
HEADER_CONSTRUCTORS.get(c);
+   if (o == null) {
+   ClassInfo ci = ClassInfo.of(c);
+   ConstructorInfo cci = 
ci.getPublicConstructor(String.class);
+   if (cci == null)
+   cci = ci.getPublicConstructor(Object.class);
+   if (cci == null)
+   cci = ci.getPublicConstructor(String.class, 
String.class);
+   if (cci == null)
+   cci = ci.getPublicConstructor(String.class, 
Object.class);
+   o = Optional.ofNullable(cci == null ? null : 
cci.inner());
+   HEADER_CONSTRUCTORS.put(c, o);
+   }
+   return (Constructor)o.orElse(null);
+   }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
index 43db16a..a2f8a5a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/he

[juneau] branch master updated: REST refactoring.

2021-03-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 098e525  REST refactoring.
098e525 is described below

commit 098e525cab84f5fd5c14b78d44cb06f5bc527210
Author: JamesBognar 
AuthorDate: Thu Mar 11 11:29:18 2021 -0500

REST refactoring.
---
 .../apache/juneau/serializer/SerializerMatch.java  |   8 +-
 .../org/apache/juneau/rest/ResponseProcessor.java  |  60 ++---
 .../main/java/org/apache/juneau/rest/RestCall.java |  90 +--
 .../java/org/apache/juneau/rest/RestContext.java   |  33 ++-
 .../org/apache/juneau/rest/RestContextBuilder.java |   4 +-
 .../java/org/apache/juneau/rest/RestResponse.java  | 228 -
 .../juneau/rest/RrpcRestOperationContext.java  |   4 +-
 .../apache/juneau/rest/args/ResponseBeanArg.java   |   2 +-
 .../juneau/rest/processors/DefaultProcessor.java   | 276 -
 .../rest/processors/HttpEntityProcessor.java   |  14 +-
 .../rest/processors/HttpResourceProcessor.java |  18 +-
 .../rest/processors/HttpResponseProcessor.java |  22 +-
 .../rest/processors/InputStreamProcessor.java  |  15 +-
 ...oProcessor.java => PlainTextPojoProcessor.java} |  29 ++-
 .../juneau/rest/processors/ReaderProcessor.java|  14 +-
 .../rest/processors/ResponseBeanProcessor.java | 121 -
 .../rest/processors/SerializedPojoProcessor.java   | 110 
 .../juneau/rest/processors/ThrowableProcessor.java |  13 +-
 18 files changed, 550 insertions(+), 511 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerMatch.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerMatch.java
index f82c55b..eabfd20 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerMatch.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerMatch.java
@@ -22,7 +22,13 @@ public final class SerializerMatch {
private final MediaType mediaType;
private final Serializer serializer;
 
-   SerializerMatch(MediaType mediaType, Serializer serializer) {
+   /**
+* Constructor.
+*
+* @param mediaType The media type matched.
+* @param serializer The serializer matched.
+*/
+   public SerializerMatch(MediaType mediaType, Serializer serializer) {
this.mediaType = mediaType;
this.serializer = serializer;
}
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ResponseProcessor.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ResponseProcessor.java
index 0fa888e..ccf3011 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ResponseProcessor.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ResponseProcessor.java
@@ -18,7 +18,6 @@ import javax.servlet.http.*;
 
 import org.apache.juneau.http.response.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.processors.*;
 
 /**
  * Defines the interface for processors that convert POJOs to appropriate HTTP 
responses.
@@ -36,16 +35,6 @@ import org.apache.juneau.rest.processors.*;
  * 
  *
  * 
- * By default, REST resources are registered with the following response 
processors:
- * 
- * {@link ReaderProcessor}
- * {@link InputStreamProcessor}
- * {@link HttpResourceProcessor}
- * {@link HttpEntityProcessor}
- * {@link DefaultProcessor}
- * 
- *
- * 
  * Response processors can be used to process POJOs that cannot normally be 
handled through Juneau serializers, or
  * because it's simply easier to define response processors for special cases.
  *
@@ -55,7 +44,7 @@ import org.apache.juneau.rest.processors.*;
  * 
  * @Rest(
  * path="/example",
- * responseHandlers=FooHandler.class
+ * responseProcessors=FooProcessor.class
  * )
  * public class Example extends RestServlet {
  *
@@ -64,29 +53,44 @@ import org.apache.juneau.rest.processors.*;
  * return new Foo("123");
  * }
  *
- * public static class FooHandler implements 
ResponseHandler {
+ * public static class FooProcessor implements 
ResponseProcessor {
  * @Override
- * public boolean handle(RestRequest 
req, RestResponse res, Object output) 
throws IOException, RestException {
- * if (output 
instanceof Foo) {
- * Foo foo = (Foo)output;
- * // Set some headers and body 
content.
- * 
res.setHeader("Foo-ID", foo.getId());
- *  

[juneau] branch master updated: REST refactoring.

2021-03-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 374ad21  REST refactoring.
374ad21 is described below

commit 374ad21b0e5afa97785f1c442ffa40812b637d38
Author: JamesBognar 
AuthorDate: Wed Mar 10 18:41:36 2021 -0500

REST refactoring.
---
 .../apache/juneau/rest/processors/DefaultProcessor.java| 14 --
 1 file changed, 14 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processors/DefaultProcessor.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processors/DefaultProcessor.java
index 568ea3c..972118e 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processors/DefaultProcessor.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processors/DefaultProcessor.java
@@ -13,7 +13,6 @@
 package org.apache.juneau.rest.processors;
 
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.http.HttpHeaders.*;
 import static org.apache.juneau.httppart.HttpPartType.*;
 import static org.apache.juneau.internal.IOUtils.*;
 
@@ -170,19 +169,6 @@ public class DefaultProcessor implements ResponseProcessor 
{
schema = rm.getSchema();
}
 
-   if (o instanceof HttpEntity) {
-   HttpEntity e = (HttpEntity)o;
-   
res.header(e.getContentType()).header(e.getContentEncoding());
-   long contentLength = e.getContentLength();
-   if (contentLength >= 0)
-   res.header(contentLength(contentLength));
-   try (OutputStream os = res.getNegotiatedOutputStream()) 
{
-   e.writeTo(os);
-   os.flush();
-   }
-   return 1;
-   }
-
if (sm != null) {
Serializer s = sm.getSerializer();
MediaType mediaType = res.getMediaType();



[juneau] branch master updated: REST refactoring.

2021-03-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 156b044  REST refactoring.
156b044 is described below

commit 156b044efa6d6a258393b3e56dc1f57946ce1624
Author: JamesBognar 
AuthorDate: Wed Mar 10 18:37:55 2021 -0500

REST refactoring.
---
 .../juneau/http/entity/SerializedEntity.java   | 14 --
 .../juneau/http/header/SerializedHeader.java   | 30 ++--
 .../apache/juneau/http/part/SerializedPart.java| 32 ++
 .../org/apache/juneau/rest/client/RestClient.java  |  4 +--
 .../main/java/org/apache/juneau/rest/RestCall.java |  2 +-
 .../juneau/rest/processors/DefaultProcessor.java   | 11 
 .../apache/juneau/http/SerializedHeader_Test.java  |  4 +--
 .../apache/juneau/http/SerializedPart_Test.java|  4 +--
 8 files changed, 28 insertions(+), 73 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/SerializedEntity.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/SerializedEntity.java
index ef54591..28d0e3c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/SerializedEntity.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/SerializedEntity.java
@@ -47,20 +47,6 @@ public class SerializedEntity extends BasicHttpEntity {
schema = builder.schema;
}
 
-   /**
-* Sets the schema to use to serialize the content.
-*
-* 
-* Value is ignored if the serializer is not schema-aware.
-*
-* @param value The schema.
-* @return This object (for method chaining).
-*/
-   public SerializedEntity schema(HttpPartSchema value) {
-   this.schema = value;
-   return this;
-   }
-
@Override /* HttpEntity */
public void writeTo(OutputStream os) throws IOException {
try {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
index 8e7b9f3..d95c651 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
@@ -132,19 +132,6 @@ public class SerializedHeader extends BasicHeader {
}
 
/**
-* Copies this bean and sets the serializer on it.
-* 
-* @param value The new serializer for the bean.  Can be null.
-* @return Either a new bean with the serializer set, or this bean if
-*  the value is null or the serializer was already set.
-*/
-   public SerializedHeader copyWithSerializer(HttpPartSerializerSession 
value) {
-   if (serializer == null && value != null)
-   return copy().serializer(value);
-   return this;
-   }
-
-   /**
 * Sets the schema object that defines the format of the output.
 *
 * @param value The new value for this property.
@@ -156,27 +143,14 @@ public class SerializedHeader extends BasicHeader {
}
 
/**
-* Copies this bean and sets the schema on it.
-* 
-* @param value The new schema for the bean.  Can be null.
-* @return Either a new bean with the schema set, or this bean if
-*  the value is null or the schema was already set.
-*/
-   public SerializedHeader copyWithSchema(HttpPartSchema value) {
-   if (schema == null && value != null)
-   return copy().schema(value);
-   return this;
-   }
-
-   /**
 * Copies this bean and sets the serializer and schema on it.
-* 
+*
 * @param serializer The new serializer for the bean.  Can be 
null.
 * @param schema The new schema for the bean.  Can be null.
 * @return Either a new bean with the serializer set, or this bean if
 *  both values are null or the serializer and schema were 
already set.
 */
-   public SerializedHeader 
copyWithSerializerAndSchema(HttpPartSerializerSession serializer, 
HttpPartSchema schema) {
+   public SerializedHeader copyWith(HttpPartSerializerSession serializer, 
HttpPartSchema schema) {
if ((this.serializer == null && serializer != null) || 
(this.schema == null && schema != null)) {
SerializedHeader h = copy();
if (serializer != null)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/SerializedPart.java
 
b/juneau-co

[juneau] branch master updated: REST refactoring.

2021-03-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 ac088b2  REST refactoring.
ac088b2 is described below

commit ac088b2205fa2960b04bc2b36d37730463749c0f
Author: JamesBognar 
AuthorDate: Wed Mar 10 13:34:16 2021 -0500

REST refactoring.
---
 .../juneau/http/header/SerializedHeader.java   | 50 +-
 .../apache/juneau/http/resource/BasicResource.java |  4 +-
 .../apache/juneau/http/resource/HttpResource.java  |  9 ++--
 .../juneau/http/response/BasicHttpException.java   | 16 +-
 .../juneau/http/response/BasicHttpResponse.java| 16 +-
 .../org/apache/juneau/rest/client/RestClient.java  |  7 +--
 .../org/apache/juneau/rest/client/RestRequest.java |  4 +-
 .../main/java/org/apache/juneau/rest/RestCall.java | 61 ++
 .../java/org/apache/juneau/rest/RestContext.java   |  7 +--
 .../org/apache/juneau/rest/RestContextBuilder.java |  1 +
 .../apache/juneau/rest/RestOperationContext.java   | 10 ++--
 .../juneau/rest/processors/DefaultProcessor.java   |  7 ++-
 .../rest/processors/HttpEntityProcessor.java   |  7 ++-
 .../rest/processors/HttpResourceProcessor.java | 20 ---
 .../rest/processors/HttpResponseProcessor.java | 25 -
 ...ponseProcessor.java => ThrowableProcessor.java} | 15 --
 .../apache/juneau/http/BasicHttpResource_Test.java | 10 ++--
 .../apache/juneau/http/SerializedHeader_Test.java  |  4 +-
 18 files changed, 182 insertions(+), 91 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
index 2757434..8e7b9f3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
@@ -132,14 +132,15 @@ public class SerializedHeader extends BasicHeader {
}
 
/**
-* Sets the serializer to use for serializing the value to a string 
value if it's not already set on this object.
-*
-* @param value The new value for this property.
-* @return This object (for method chaining).
+* Copies this bean and sets the serializer on it.
+* 
+* @param value The new serializer for the bean.  Can be null.
+* @return Either a new bean with the serializer set, or this bean if
+*  the value is null or the serializer was already set.
 */
-   public SerializedHeader serializerIfNotSet(HttpPartSerializerSession 
value) {
-   if (serializer == null)
-   serializer = value;
+   public SerializedHeader copyWithSerializer(HttpPartSerializerSession 
value) {
+   if (serializer == null && value != null)
+   return copy().serializer(value);
return this;
}
 
@@ -155,14 +156,35 @@ public class SerializedHeader extends BasicHeader {
}
 
/**
-* Sets the schema object that defines the format of the output if it's 
not already set on this object.
-*
-* @param value The new value for this property.
-* @return This object (for method chaining).
+* Copies this bean and sets the schema on it.
+* 
+* @param value The new schema for the bean.  Can be null.
+* @return Either a new bean with the schema set, or this bean if
+*  the value is null or the schema was already set.
 */
-   public SerializedHeader schemaIfNotSet(HttpPartSchema value) {
-   if (schema == null)
-   schema = value;
+   public SerializedHeader copyWithSchema(HttpPartSchema value) {
+   if (schema == null && value != null)
+   return copy().schema(value);
+   return this;
+   }
+
+   /**
+* Copies this bean and sets the serializer and schema on it.
+* 
+* @param serializer The new serializer for the bean.  Can be 
null.
+* @param schema The new schema for the bean.  Can be null.
+* @return Either a new bean with the serializer set, or this bean if
+*  both values are null or the serializer and schema were 
already set.
+*/
+   public SerializedHeader 
copyWithSerializerAndSchema(HttpPartSerializerSession serializer, 
HttpPartSchema schema) {
+   if ((this.serializer == null && serializer != null) || 
(this.schema == null && schema != null)) {
+   SerializedHeader h = copy();
+   if (serializer != null)
+   h.serializer(serializer);
+  

[juneau] branch master updated: REST refactoring.

2021-03-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 395b0da  REST refactoring.
395b0da is described below

commit 395b0da60d3f506e55963b13aa0edf72e6711e48
Author: JamesBognar 
AuthorDate: Tue Mar 9 19:07:15 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/rest/ResponseProcessor.java  | 11 +--
 .../java/org/apache/juneau/rest/RestContext.java   | 13 ++--
 .../org/apache/juneau/rest/RestContextBuilder.java |  3 ++
 .../juneau/rest/processors/DefaultProcessor.java   | 12 
 .../rest/processors/HttpEntityProcessor.java   | 32 +--
 .../rest/processors/HttpResourceProcessor.java | 36 +++---
 ...erProcessor.java => HttpResponseProcessor.java} | 30 ++
 .../rest/processors/InputStreamProcessor.java  | 18 +--
 .../{ReaderProcessor.java => PojoProcessor.java}   | 25 +++
 .../juneau/rest/processors/ReaderProcessor.java| 18 +--
 ...erProcessor.java => ResponseBeanProcessor.java} | 30 ++
 11 files changed, 103 insertions(+), 125 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ResponseProcessor.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ResponseProcessor.java
index a6599de..0fa888e 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ResponseProcessor.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ResponseProcessor.java
@@ -88,10 +88,15 @@ public interface ResponseProcessor {
 
/**
 * Process this response if possible.
-* This method should return false if it wasn't able to 
process the response.
 *
 * @param call The HTTP call.
-* @return true If this processor handled the response.
+* @return One of the following codes:
+*  
+*  0 - The processor could not handle the 
request.
+*  1 - The processor was able to fully handle 
the request.
+*  2 - The processor was able to partially 
handle the request by replacing the output.
+*  The response processors should start over.
+*  
 * @throws IOException
 *  If low-level exception occurred on output stream.
 *  Results in a {@link 
HttpServletResponse#SC_INTERNAL_SERVER_ERROR} error.
@@ -99,5 +104,5 @@ public interface ResponseProcessor {
 *  If some other exception occurred.
 *  Can be used to provide an appropriate HTTP response code and 
message.
 */
-   boolean process(RestCall call) throws IOException, BasicHttpException;
+   int process(RestCall call) throws IOException, BasicHttpException;
 }
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index a62c935..fae65ff 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -6781,9 +6781,18 @@ public class RestContext extends BeanContext {
public void processResponse(RestCall call) throws IOException, 
BasicHttpException, NotImplemented {
 
// Loop until we find the correct processor for the POJO.
-   for (ResponseProcessor x : getResponseProcessors())
-   if (x.process(call))
+   List l = getResponseProcessors();
+   int loops = 5;
+   for (int i = 0; i < l.size(); i++) {
+   int j = l.get(i).process(call);
+   if (j == 1)
return;
+   if (j == 2) {
+   if (loops-- < 0)
+   throw new InternalServerError("Too many 
processing loops.");
+   i = -1;  // Start over.
+   }
+   }
 
Object output = 
call.getRestResponse().getOutput().get().orElse(null);
throw new NotImplemented("No response processors found to 
process output of type '"+(output == null ? null : 
output.getClass().getName())+"'");
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index 45df3e6..5d4b7c3 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
+++ 
b/juneau-rest/juneau-res

[juneau] branch master updated: REST refactoring.

2021-03-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 1333ff1  REST refactoring.
1333ff1 is described below

commit 1333ff1681a18c4839e01cb5fdcfaed51671f891
Author: JamesBognar 
AuthorDate: Tue Mar 9 18:41:02 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/reflect/ClassInfo.java  |   3 +
 ...ResponseHandler.java => ResponseProcessor.java} |  41 -
 ...HandlerList.java => ResponseProcessorList.java} |  16 ++--
 .../main/java/org/apache/juneau/rest/RestCall.java |  11 ++-
 .../java/org/apache/juneau/rest/RestContext.java   | 102 +++--
 .../org/apache/juneau/rest/RestContextBuilder.java |  32 ---
 .../java/org/apache/juneau/rest/RestResponse.java  |  34 +++
 .../org/apache/juneau/rest/annotation/Rest.java|   8 +-
 .../juneau/rest/annotation/RestAnnotation.java |  18 ++--
 .../DefaultProcessor.java} |   8 +-
 .../HttpEntityProcessor.java}  |  35 +++
 .../HttpResourceProcessor.java}|  38 
 .../InputStreamProcessor.java} |  17 ++--
 .../ReaderProcessor.java}  |  14 +--
 .../{reshandlers => processors}/package-info.java  |   4 +-
 .../rest/annotation/RestAnnotation_Test.java   |  10 +-
 16 files changed, 199 insertions(+), 192 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java
index 0d46965..6f220b6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java
@@ -55,6 +55,9 @@ import org.apache.juneau.internal.*;
  */
 public final class ClassInfo {
 
+   /** Reusable ClassInfo for Object class. */
+   public static final ClassInfo OBJECT = ClassInfo.of(Object.class);
+
private final Type t;
final Class c;
private final boolean isParameterizedType;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ResponseHandler.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ResponseProcessor.java
similarity index 70%
rename from 
juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ResponseHandler.java
rename to 
juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ResponseProcessor.java
index bac7865..a6599de 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ResponseHandler.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ResponseProcessor.java
@@ -18,42 +18,39 @@ import javax.servlet.http.*;
 
 import org.apache.juneau.http.response.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.reshandlers.*;
+import org.apache.juneau.rest.processors.*;
 
 /**
- * Defines the interface for handlers that convert POJOs to appropriate HTTP 
responses.
+ * Defines the interface for processors that convert POJOs to appropriate HTTP 
responses.
  *
  * 
- * The REST Server API uses the concept of registered response handlers for 
converting objects returned by REST
+ * The REST Server API uses the concept of registered response processors for 
converting objects returned by REST
  * methods or set through {@link RestResponse#setOutput(Object)} into 
appropriate HTTP responses.
  *
  * 
- * Response handlers can be associated with REST resources via the following:
+ * Response processors can be associated with REST resources via the following:
  * 
- * {@link Rest#responseHandlers}
- * {@link RestContextBuilder#responseHandlers(Class...)}
- * {@link 
RestContextBuilder#responseHandlers(ResponseHandler...)}
+ * {@link Rest#responseProcessors}
+ * {@link RestContextBuilder#responseProcessors(Class...)}
+ * {@link 
RestContextBuilder#responseProcessors(ResponseProcessor...)}
  * 
  *
  * 
- * By default, REST resources are registered with the following response 
handlers:
+ * By default, REST resources are registered with the following response 
processors:
  * 
- * 
- * {@link DefaultHandler} - Serializes POJOs using the Juneau 
serializer API.
- * 
- * {@link ReaderHandler} - Pipes the output of {@link Reader 
Readers} to the response writer
- * ({@link RestResponse#getWriter()}).
- * 
- * {@link InputStreamHandler} - Pipes the output of {@link 
InputStream InputStreams} to the response output
- * stream ({@link RestResponse#getOutputStream()}).
+ * {@link ReaderProcessor}
+ * {@link InputStreamProcessor}
+ * {@link HttpResourceProcessor}
+ * {@link HttpEntity

[juneau] branch master updated: New Thrown header bean.

2021-03-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 9b049e4  New Thrown header bean.
9b049e4 is described below

commit 9b049e47091a099c0b1581d2ca97e1ea0f3eb027
Author: JamesBognar 
AuthorDate: Tue Mar 9 11:26:23 2021 -0500

New Thrown header bean.
---
 .../java/org/apache/juneau/http/HttpHeaders.java   |  22 +++
 .../java/org/apache/juneau/http/header/Thrown.java | 151 +
 .../juneau/http/response/HttpExceptionBuilder.java |   5 +-
 .../apache/juneau/rest/client/ResponseBody.java|   4 +-
 .../juneau/rest/client/RestCallException.java  |  22 ++-
 .../org/apache/juneau/rest/client/RestClient.java  |   6 +-
 .../org/apache/juneau/rest/client/RestRequest.java |  11 +-
 .../apache/juneau/rest/client/RestResponse.java|  38 +++---
 .../java/org/apache/juneau/rest/RestContext.java   |   4 +-
 .../juneau/rest/reshandlers/DefaultHandler.java|   3 +-
 .../juneau/rest/client/RestCallException_Test.java |   4 +-
 .../client/RestClient_Config_BeanContext_Test.java |  28 ++--
 .../client/RestClient_Config_RestClient_Test.java  |   6 +-
 .../client/RestClient_Response_Headers_Test.java   |  90 ++--
 .../rest/client/RestClient_Response_Test.java  |   6 +-
 15 files changed, 280 insertions(+), 120 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
index f847d5d..82a0aa5 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
@@ -2036,6 +2036,28 @@ public class HttpHeaders {
}
 
/**
+* Creates a new {@link Thrown} header.
+*
+* @param value
+*  The header value.
+* @return A new header bean, or null if the value was 
null.
+*/
+   public static final Thrown thrown(Throwable value) {
+   return Thrown.of(value);
+   }
+
+   /**
+* Creates a new {@link Thrown} header.
+*
+* @param value
+*  The header value.
+* @return A new header bean, or null if the value was 
null.
+*/
+   public static final Thrown thrown(String value) {
+   return Thrown.of(value);
+   }
+
+   /**
 * Creates a new {@link Trailer} header.
 *
 * @param value The header value.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java
new file mode 100644
index 000..354f161
--- /dev/null
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java
@@ -0,0 +1,151 @@
+// 
***
+// * 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.apache.juneau.internal.StringUtils.*;
+
+import java.util.*;
+
+import org.apache.juneau.http.annotation.*;
+
+/**
+ * Represents a parsed Thrown HTTP request header.
+ *
+ * 
+ * Contains exception information including name and optionally a message.
+ *
+ * Example
+ * 
+ * Thrown: org.apache.juneau.http.response.NotFound, Re

[juneau] branch master updated: Remove duplicate methods in ThrowableUtils.

2021-03-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 7087776  Remove duplicate methods in ThrowableUtils.
7087776 is described below

commit 7087776ca66fbca1cb574228737f229a9b7c15d5
Author: JamesBognar 
AuthorDate: Mon Mar 8 14:15:45 2021 -0500

Remove duplicate methods in ThrowableUtils.
---
 .../main/java/org/apache/juneau/config/Config.java |  24 ++---
 .../main/java/org/apache/juneau/BeanSession.java   |   7 +-
 .../org/apache/juneau/internal/ArrayUtils.java |   9 +-
 .../java/org/apache/juneau/internal/FileUtils.java |   6 +-
 .../org/apache/juneau/internal/FilteredMap.java|   7 +-
 .../org/apache/juneau/internal/MultiIterable.java  |   5 +-
 .../java/org/apache/juneau/internal/MultiSet.java  |   5 +-
 .../java/org/apache/juneau/internal/SimpleMap.java |   5 +-
 .../org/apache/juneau/internal/StringUtils.java|   5 +-
 .../org/apache/juneau/internal/ThrowableUtils.java | 100 -
 .../java/org/apache/juneau/ComboRoundTripTest.java |  18 ++--
 .../java/org/apache/juneau/ComboSerializeTest.java |   5 +-
 .../java/org/apache/juneau/config/ConfigTest.java  |  18 ++--
 13 files changed, 55 insertions(+), 159 deletions(-)

diff --git 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
index 5664d42..b206060 100644
--- 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
+++ 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
@@ -12,9 +12,9 @@
 // 
***
 package org.apache.juneau.config;
 
+import static org.apache.juneau.assertions.Assertions.*;
 import static org.apache.juneau.config.ConfigMod.*;
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ThrowableUtils.*;
 import static org.apache.juneau.internal.IOUtils.*;
 
 import java.beans.*;
@@ -572,7 +572,7 @@ public final class Config extends Context implements 
ConfigEventListener, Writab
 */
public Config set(String key, String value) {
checkWrite();
-   assertFieldNotNull(key, "key");
+   assertArgNotNull("key", key);
String sname = sname(key);
String skey = skey(key);
 
@@ -679,7 +679,7 @@ public final class Config extends Context implements 
ConfigEventListener, Writab
 */
public Config set(String key, Object value, Serializer serializer, 
ConfigMod[] modifiers, String comment, List preLines) throws 
SerializeException {
checkWrite();
-   assertFieldNotNull(key, "key");
+   assertArgNotNull("key", key);
String sname = sname(key);
String skey = skey(key);
 
@@ -1117,7 +1117,7 @@ public final class Config extends Context implements 
ConfigEventListener, Writab
 * @return The value, or null if the section or key does not 
exist.
 */
public  T getObject(String key, Parser parser, Type type, 
Type...args) throws ParseException {
-   assertFieldNotNull(type, "type");
+   assertArgNotNull("type", type);
return parse(getString(key), parser, type, args);
}
 
@@ -1172,7 +1172,7 @@ public final class Config extends Context implements 
ConfigEventListener, Writab
 * @see BeanSession#getClassMeta(Type,Type...) for argument syntax for 
maps and collections.
 */
public  T getObject(String key, Parser parser, Class type) throws 
ParseException {
-   assertFieldNotNull(type, "c");
+   assertArgNotNull("c", type);
return parse(getString(key), parser, type);
}
 
@@ -1206,7 +1206,7 @@ public final class Config extends Context implements 
ConfigEventListener, Writab
 * @return The value, or null if the section or key does not 
exist.
 */
public  T getObjectWithDefault(String key, Parser parser, T def, 
Class type) throws ParseException {
-   assertFieldNotNull(type, "c");
+   assertArgNotNull("type", type);
T t = parse(getString(key), parser, type);
return (t == null ? def : t);
}
@@ -1253,7 +1253,7 @@ public final class Config extends Context implements 
ConfigEventListener, Writab
 * @return The value, or null if the section or key does not 
exist.
 */
public  T getObjectWithDefault(String key, Parser parser, T def, 
Type type, Type...args) throws ParseException {
-   assertFie

[juneau] branch master updated: Add byte buffer reuse to IOUtils.

2021-03-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 7625cfb  Add byte buffer reuse to IOUtils.
7625cfb is described below

commit 7625cfbe85fbe5ca2886fb274eb26077eead2bb2
Author: JamesBognar 
AuthorDate: Mon Mar 8 13:55:31 2021 -0500

Add byte buffer reuse to IOUtils.
---
 .../src/main/java/org/apache/juneau/internal/IOUtils.java  | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
index c95ac5f..1f099db 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
@@ -33,6 +33,7 @@ public final class IOUtils {
}
};
 
+   private static final int BUFF_SIZE = 1024;
private static final ThreadLocal BYTE_BUFFER_CACHE = 
(Boolean.getBoolean("juneau.disableIoBufferReuse") ? null : new 
ThreadLocal<>());
private static final ThreadLocal CHAR_BUFFER_CACHE = 
(Boolean.getBoolean("juneau.disableIoBufferReuse") ? null : new 
ThreadLocal<>());
 
@@ -61,8 +62,6 @@ public final class IOUtils {
public void close() throws IOException {}
};
 
-   private static final int BUFF_SIZE = 1024;
-

//-
// Piping utilities.

//-



[juneau] branch master updated: Add byte buffer reuse to IOUtils.

2021-03-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 182dcdb  Add byte buffer reuse to IOUtils.
182dcdb is described below

commit 182dcdbc0799797c9a66697b4708832e18c80730
Author: JamesBognar 
AuthorDate: Mon Mar 8 13:53:29 2021 -0500

Add byte buffer reuse to IOUtils.
---
 .../apache/juneau/internal/FileWriterBuilder.java  | 17 -
 .../java/org/apache/juneau/internal/IOUtils.java   | 88 --
 2 files changed, 64 insertions(+), 41 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FileWriterBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FileWriterBuilder.java
index 1e63f8f..0c3e5af 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FileWriterBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FileWriterBuilder.java
@@ -22,7 +22,7 @@ public final class FileWriterBuilder {
 
private File file;
private Charset cs = Charset.defaultCharset();
-   private boolean append;
+   private boolean append, buffered;
 
/**
 * Creates a new builder.
@@ -112,12 +112,25 @@ public final class FileWriterBuilder {
}
 
/**
+* Sets the buffer mode on the writer to true.
+*
+* @return This object (for method chaining).
+*/
+   public FileWriterBuilder buffered() {
+   this.buffered = true;
+   return this;
+   }
+
+   /**
 * Creates a new File writer.
 *
 * @return A new File writer.
 * @throws FileNotFoundException If file could not be found.
 */
public Writer build() throws FileNotFoundException {
-   return new OutputStreamWriter(new FileOutputStream(file, 
append), cs);
+   OutputStream os = new FileOutputStream(file, append);
+   if (buffered)
+   os = new BufferedOutputStream(os);
+   return new OutputStreamWriter(os, cs);
}
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
index 11760d0..c95ac5f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java
@@ -15,6 +15,7 @@ package org.apache.juneau.internal;
 import java.io.*;
 import java.nio.charset.*;
 import java.util.*;
+import java.util.concurrent.atomic.*;
 
 /**
  * Various I/O related utility methods.
@@ -32,6 +33,20 @@ public final class IOUtils {
}
};
 
+   private static final ThreadLocal BYTE_BUFFER_CACHE = 
(Boolean.getBoolean("juneau.disableIoBufferReuse") ? null : new 
ThreadLocal<>());
+   private static final ThreadLocal CHAR_BUFFER_CACHE = 
(Boolean.getBoolean("juneau.disableIoBufferReuse") ? null : new 
ThreadLocal<>());
+
+   static final AtomicInteger cacheHits = new AtomicInteger();
+
+   static {
+   Runtime.getRuntime().addShutdownHook(new Thread() {
+   @Override
+   public void run() {
+   System.out.println("I/O buffer cache hits: " + 
cacheHits.get());
+   }
+   });
+   }
+
/** Reusable empty reader. */
public static final Reader EMPTY_READER = new Reader() {
@Override
@@ -69,7 +84,7 @@ public final class IOUtils {
public static long pipe(Reader in, File out) throws IOException {
if (out == null || in == null)
return 0;
-   try (Writer w = FileWriterBuilder.create(out).build()) {
+   try (Writer w = 
FileWriterBuilder.create(out).buffered().build()) {
return pipe(in, w);
}
}
@@ -94,7 +109,7 @@ public final class IOUtils {
return 0;
long total = 0;
try (Reader in2 = in) {
-   char[] buffer = new char[buffSize(-1)];
+   char[] buffer = charBuffer(-1);
int readLen;
while ((readLen = in.read(buffer)) != -1) {
out.write(buffer, 0, readLen);
@@ -209,7 +224,7 @@ public final class IOUtils {
public static long pipe(InputStream in, OutputStream out, long 
maxBytes) throws IOException {
if (in == null || out == null)
return 0;
-   byte[] buffer = new byte[buffSize(maxBytes)];
+ 

[juneau] branch master updated: REST refactoring.

2021-03-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 a89ad5b  REST refactoring.
a89ad5b is described below

commit a89ad5b2ad21f7ec5df16034e31ff0179c8dde57
Author: JamesBognar 
AuthorDate: Mon Mar 8 13:22:33 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/http/HttpHeaders.java   |   2 +-
 .../juneau/http/resource/HttpResourceBuilder.java  |   2 +-
 .../juneau/http/response/BasicHttpException.java   |  54 ++---
 .../juneau/http/response/BasicHttpResponse.java|  56 ++---
 .../juneau/http/response/HttpExceptionBuilder.java |  58 ++---
 .../juneau/http/response/HttpResponseBuilder.java  |  58 ++---
 .../java/org/apache/juneau/internal/IOUtils.java   |  19 --
 .../main/java/org/apache/juneau/utils/IOPipe.java  | 250 -
 .../juneau/rest/client/remote/RemoteMeta.java  |  14 +-
 9 files changed, 122 insertions(+), 391 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
index 2c3cc5a..f847d5d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
@@ -3139,7 +3139,7 @@ public class HttpHeaders {
 *
 * @return A new empty builder.
 */
-   public static final HeaderListBuilder headerListBuilder() {
+   public static final HeaderListBuilder headerList() {
return HeaderList.create();
}
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/resource/HttpResourceBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/resource/HttpResourceBuilder.java
index a3f565e..04582c6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/resource/HttpResourceBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/resource/HttpResourceBuilder.java
@@ -267,7 +267,7 @@ public class HttpResourceBuilder {
 * @return This object (for method chaining).
 */
@FluentSetter
-   public HttpResourceBuilder headerList(HeaderList value) {
+   public HttpResourceBuilder headers(HeaderList value) {
headers = value;
headersBuilder = null;
return this;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BasicHttpException.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BasicHttpException.java
index f271cde..9155db0 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BasicHttpException.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BasicHttpException.java
@@ -49,9 +49,9 @@ public class BasicHttpException extends BasicRuntimeException 
implements HttpRes
private static final long serialVersionUID = 1L;
private static final Header[] EMPTY_HEADERS = new Header[0];
 
-   HeaderList headerList;
+   HeaderList headers;
BasicStatusLine statusLine;
-   HeaderListBuilder headerListBuilder;
+   HeaderListBuilder headersBuilder;
BasicStatusLineBuilder statusLineBuilder;
HttpEntity body;
 
@@ -72,7 +72,7 @@ public class BasicHttpException extends BasicRuntimeException 
implements HttpRes
 */
public BasicHttpException(HttpExceptionBuilder builder) {
super(builder);
-   headerList = builder.headerList();
+   headers = builder.headers();
statusLine = builder.statusLine();
body = builder.body;
}
@@ -253,75 +253,75 @@ public class BasicHttpException extends 
BasicRuntimeException implements HttpRes
 
@Override /* HttpMessage */
public boolean containsHeader(String name) {
-   return headerList().contains(name);
+   return headers().contains(name);
}
 
@Override /* HttpMessage */
public Header[] getHeaders(String name) {
-   List l = headerList().get(name);
+   List l = headers().get(name);
return l.isEmpty() ? EMPTY_HEADERS : l.toArray(new 
Header[l.size()]);
}
 
@Override /* HttpMessage */
public Header getFirstHeader(String name) {
-   return headerList().getFirst(name);
+   return headers().getFirst(name);
}
 
@Override /* HttpMessage */
public Header getLastHeader(String name) {
-   return headerList().getLast(name);
+   return headers().getLast(name);
}
 
@Override /* HttpMessage */
@ResponseHeader

[juneau] branch master updated: REST refactoring.

2021-03-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 8fa646e  REST refactoring.
8fa646e is described below

commit 8fa646e2c1771e0306393b6b4a77381d34f08ad5
Author: JamesBognar 
AuthorDate: Mon Mar 8 10:07:38 2021 -0500

REST refactoring.
---
 .../main/ConfigurablePropertyCodeGenerator.java|  15 +-
 .../java/org/apache/juneau/http/HttpResources.java | 253 +++
 .../apache/juneau/http/entity/BasicHttpEntity.java | 395 +
 .../juneau/http/entity/BasicHttpEntity2.java   | 205 -
 .../juneau/http/entity/BasicHttpResource.java  | 290 -
 .../apache/juneau/http/entity/ByteArrayEntity.java |  12 +-
 .../org/apache/juneau/http/entity/FileEntity.java  |  12 +-
 .../juneau/http/entity/HttpEntityBuilder.java  |   4 +-
 .../juneau/http/entity/InputStreamEntity.java  |  12 +-
 .../apache/juneau/http/entity/ReaderEntity.java|  12 +-
 .../juneau/http/entity/SerializedEntity.java   |   2 +-
 .../apache/juneau/http/entity/StringEntity.java|  18 +-
 .../org/apache/juneau/http/header/HeaderList.java  |   8 +-
 .../apache/juneau/http/resource/BasicResource.java | 254 +++
 .../juneau/http/resource/ByteArrayResource.java|  37 +-
 .../apache/juneau/http/resource/FileResource.java  |  38 +-
 .../http/{entity => resource}/HttpResource.java|  24 +-
 .../juneau/http/resource/HttpResourceBuilder.java  | 477 +
 .../juneau/http/resource/InputStreamResource.java  |  38 +-
 .../juneau/http/resource/ReaderResource.java   |  38 +-
 .../juneau/http/resource/StringResource.java   |  38 +-
 .../apache/juneau/rest/client/ResponseBody.java|  27 +-
 .../org/apache/juneau/rest/client/RestClient.java  |   1 +
 .../org/apache/juneau/rest/client/RestRequest.java |   8 +-
 .../rest/springboot/BasicSpringRestServlet.java|   2 +-
 .../org/apache/juneau/rest/BasicRestObject.java|   2 +-
 .../apache/juneau/rest/BasicRestOperations.java|   2 +-
 .../org/apache/juneau/rest/BasicRestServlet.java   |   2 +-
 .../org/apache/juneau/rest/BasicStaticFiles.java   |  11 +-
 .../java/org/apache/juneau/rest/StaticFiles.java   |   4 +-
 .../apache/juneau/http/BasicHttpResource_Test.java | 106 ++---
 .../http/remote/Remote_CommonInterfaces_Test.java  |  18 +-
 .../apache/juneau/rest/RestOp_Returns_Test.java|  34 +-
 .../rest/client/RestClient_BasicCalls_Test.java|  18 +-
 .../juneau/rest/client/RestClient_Body_Test.java   |  26 +-
 35 files changed, 1403 insertions(+), 1040 deletions(-)

diff --git a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java 
b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
index 40e2be1..2daecca 100644
--- a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++ b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
@@ -32,6 +32,7 @@ import org.apache.juneau.http.*;
 import org.apache.juneau.http.entity.*;
 import org.apache.juneau.http.header.*;
 import org.apache.juneau.http.part.*;
+import org.apache.juneau.http.resource.*;
 import org.apache.juneau.http.response.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.jena.*;
@@ -64,15 +65,13 @@ public class ConfigurablePropertyCodeGenerator {
ArrayAssertion.class,
Assertion.class,
BasicHeader.class,
-   BasicHttpResource.class,
-   HttpResponseBuilder.class,
-   Part.class,
+   BasicHttpResponse.class,
BasicRuntimeExceptionBuilder.class,
BasicStatusLineBuilder.class,
BeanAssertion.class,
BeanContextBuilder.class,
-   BeanStoreBuilder.class,
BeanSessionArgs.class,
+   BeanStoreBuilder.class,
BeanTraverseBuilder.class,
BooleanAssertion.class,
ByteArrayAssertion.class,
@@ -125,8 +124,10 @@ public class ConfigurablePropertyCodeGenerator {
HtmlSchemaSerializerBuilder.class,
HtmlSerializerBuilder.class,
HtmlStrippedDocSerializerBuilder.class,
+   HttpEntityBuilder.class,
HttpExceptionBuilder.class,
-   BasicHttpResponse.class,
+   HttpResourceBuilder.class,
+   HttpResponseBuilder.class,
IMUsed.class,
InputStreamParserBuilder.class,
IntegerAssertion.class,
@@ -159,6 +160,7 @@ public class ConfigurablePropertyCodeGenerator {
ParserBuilder.class,
ParserGroupBuilder.class,
ParserSessionArgs.class,
+   Part.class,
PartialContent.class,
PermanentRedirect.cl

[juneau] branch master updated: REST refactoring.

2021-03-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 d3cb07c  REST refactoring.
d3cb07c is described below

commit d3cb07c42e71507cab3d303cca340f4706d9e3c0
Author: JamesBognar 
AuthorDate: Sat Mar 6 18:17:18 2021 -0500

REST refactoring.
---
 .../juneau/http/entity/AbstractHttpEntity.java | 195 -
 .../apache/juneau/rest/client/ResponseBody.java|   4 +-
 2 files changed, 2 insertions(+), 197 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/AbstractHttpEntity.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/AbstractHttpEntity.java
deleted file mode 100644
index 1e5bae9..000
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/AbstractHttpEntity.java
+++ /dev/null
@@ -1,195 +0,0 @@
-// 
***
-// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file*
-// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance*
-// * with the License.  You may obtain a copy of the License at
  *
-// *   
  *
-// *  http://www.apache.org/licenses/LICENSE-2.0   
  *
-// *   
  *
-// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the*
-// * specific language governing permissions and limitations under the 
License.  *
-// 
***
-package org.apache.juneau.http.entity;
-
-import static org.apache.juneau.internal.IOUtils.*;
-
-import java.io.*;
-
-import org.apache.http.*;
-import org.apache.juneau.annotation.*;
-import org.apache.juneau.assertions.*;
-import org.apache.juneau.http.header.*;
-import org.apache.juneau.http.header.ContentType;
-import org.apache.juneau.internal.*;
-
-/**
- * An extension of {@link org.apache.http.entity.AbstractHttpEntity} with 
additional features.
- *
- * Provides the following features:
- * 
- * 
- * Caching.
- * 
- * Fluent setters.
- * 
- * Fluent assertions.
- * 
- */
-@FluentSetters
-@BeanIgnore
-public abstract class AbstractHttpEntity extends 
org.apache.http.entity.AbstractHttpEntity {
-
-   private long length = -1;
-
-   /**
-* Shortcut for calling {@link #setContentType(String)}.
-*
-* @param value The new Content-Typenull to 
unset.
-* @return This object (for method chaining).
-*/
-   @FluentSetter
-   public AbstractHttpEntity contentType(String value) {
-   return contentType(ContentType.of(value));
-   }
-
-   /**
-* Shortcut for calling {@link #setContentType(Header)}.
-*
-* @param value The new Content-Typenull to 
unset.
-* @return This object (for method chaining).
-*/
-   @FluentSetter
-   public AbstractHttpEntity contentType(Header value) {
-   super.setContentType(value);
-   return this;
-   }
-
-   /**
-* Sets the content length of this entity.
-*
-* @param value The new Content-Length header value.
-* @return This object (for method chaining).
-*/
-   @FluentSetter
-   public AbstractHttpEntity contentLength(long value) {
-   length = value;
-   return this;
-   }
-
-   /**
-* Shortcut for calling {@link #setContentEncoding(String)}.
-*
-* @param value The new Content-Encodingnull 
to unset.
-* @return This object (for method chaining).
-*/
-   @FluentSetter
-   public AbstractHttpEntity contentEncoding(String value) {
-   return contentEncoding(ContentEncoding.of(value));
-   }
-
-   /**
-* Shortcut for calling {@link #setContentEncoding(Header)}.
-*
-  

[juneau] branch master updated: REST refactoring.

2021-03-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 55f7473  REST refactoring.
55f7473 is described below

commit 55f74733a98dd23d457200c911f49e450a518ec7
Author: JamesBognar 
AuthorDate: Sat Mar 6 18:13:46 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/http/HttpEntities.java  | 108 +++---
 .../juneau/http/entity/BasicHttpEntity2.java   |  60 --
 .../apache/juneau/http/entity/ByteArrayEntity.java |  38 ++-
 .../org/apache/juneau/http/entity/FileEntity.java  |  24 +---
 .../juneau/http/entity/HttpEntityBuilder.java  |  47 +---
 .../juneau/http/entity/InputStreamEntity.java  |  36 ++
 .../apache/juneau/http/entity/ReaderEntity.java|  34 ++
 .../juneau/http/entity/SerializedEntity.java   | 122 +++--
 .../http/entity/SerializedEntityBuilder.java   | 118 
 .../apache/juneau/http/entity/StringEntity.java|  50 -
 .../org/apache/juneau/rest/client/RestClient.java  |   3 +-
 .../org/apache/juneau/rest/client/RestRequest.java |   2 +-
 .../juneau/http/SerializedHttpEntity_Test.java |  40 +++
 .../juneau/rest/client/RestClient_Body_Test.java   |  16 +--
 14 files changed, 391 insertions(+), 307 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
index 3f80e18..d923360 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
@@ -17,6 +17,7 @@ import java.util.function.*;
 
 import org.apache.juneau.http.entity.*;
 import org.apache.juneau.http.header.*;
+import org.apache.juneau.httppart.*;
 import org.apache.juneau.serializer.*;
 
 /**
@@ -34,7 +35,7 @@ public class HttpEntities {
 * @return A new {@link ByteArrayEntity} builder.
 */
public static final HttpEntityBuilder 
byteArrayEntity(byte[] content) {
-   return ByteArrayEntity.of(content);
+   return ByteArrayEntity.create().content(content);
}
 
/**
@@ -45,7 +46,31 @@ public class HttpEntities {
 * @return A new {@link ByteArrayEntity} builder.
 */
public static final HttpEntityBuilder 
byteArrayEntity(byte[] content, ContentType contentType) {
-   return ByteArrayEntity.of(content, contentType);
+   return 
ByteArrayEntity.create().content(content).contentType(contentType);
+   }
+
+   /**
+* Creates a new {@link ByteArrayEntity} builder.
+*
+* 
+* Assumes no content type.
+*
+* @param content The entity content supplier.  Can be null.
+* @return A new {@link ByteArrayEntity} builder.
+*/
+   public static final HttpEntityBuilder 
byteArrayEntity(Supplier content) {
+   return ByteArrayEntity.create().contentSupplier(content);
+   }
+
+   /**
+* Creates a new {@link ByteArrayEntity} builder.
+*
+* @param content The entity content supplier.  Can be null.
+* @param contentType The entity content type, or null if not 
specified.
+* @return A new {@link ByteArrayEntity} builder.
+*/
+   public static final HttpEntityBuilder 
byteArrayEntity(Supplier content, ContentType contentType) {
+   return 
ByteArrayEntity.create().contentSupplier(content).contentType(contentType);
}
 
/**
@@ -58,7 +83,7 @@ public class HttpEntities {
 * @return A new {@link FileEntity} builder.
 */
public static final HttpEntityBuilder fileEntity(File 
content) {
-   return FileEntity.of(content);
+   return FileEntity.create().content(content);
}
 
/**
@@ -69,7 +94,7 @@ public class HttpEntities {
 * @return A new {@link FileEntity} builder.
 */
public static final HttpEntityBuilder fileEntity(File 
content, ContentType contentType) {
-   return FileEntity.of(content, contentType);
+   return 
FileEntity.create().content(content).contentType(contentType);
}
 
/**
@@ -79,7 +104,7 @@ public class HttpEntities {
 * @return A new {@link ReaderEntity} builder.
 */
public static final HttpEntityBuilder readerEntity(Reader 
content) {
-   return ReaderEntity.of(content);
+   return ReaderEntity.create().content(content);
}
 
/**
@@ -90,7 +115,7 @@ public class HttpEntities {
 * @return A new {@link ReaderEntity} builder.
 */
public static final HttpEntityBuilder readerEntity(Reader 
content

[juneau] branch master updated: REST refactoring.

2021-03-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 2e7ac7a  REST refactoring.
 new 3ba2ceb  Merge branch 'master' of 
https://gitbox.apache.org/repos/asf/juneau.git
2e7ac7a is described below

commit 2e7ac7a78d6313d3ccae2e90e1dc450051c2799f
Author: JamesBognar 
AuthorDate: Sat Mar 6 10:03:41 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/http/HttpEntities.java  |  60 +++
 .../juneau/http/entity/BasicHttpEntity2.java   | 159 +
 .../apache/juneau/http/entity/ByteArrayEntity.java |  40 ++---
 .../org/apache/juneau/http/entity/FileEntity.java  |  66 +++
 .../juneau/http/entity/HttpEntityBuilder.java  | 198 +
 .../juneau/http/entity/InputStreamEntity.java  |  62 +++
 .../apache/juneau/http/entity/ReaderEntity.java|  89 -
 .../apache/juneau/http/entity/StringEntity.java| 101 ---
 .../juneau/http/response/BasicHttpException.java   |   2 +-
 .../juneau/http/response/BasicHttpResponse.java|   2 +-
 .../juneau/http/response/HttpExceptionBuilder.java |   2 +-
 .../juneau/http/response/HttpResponseBuilder.java  |   2 +-
 .../org/apache/juneau/rest/client/RestRequest.java |   6 +-
 .../rest/client/RestClient_BasicCalls_Test.java|  12 +-
 .../juneau/rest/client/RestClient_Body_Test.java   |  16 +-
 15 files changed, 532 insertions(+), 285 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
index d3b27d2..3f80e18 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
@@ -25,71 +25,71 @@ import org.apache.juneau.serializer.*;
 public class HttpEntities {
 
/**
-* Creates a new {@link ByteArrayEntity} object.
+* Creates a new {@link ByteArrayEntity} builder.
 *
 * 
 * Assumes no content type.
 *
 * @param content The entity content.  Can be null.
-* @return A new {@link ByteArrayEntity} object.
+* @return A new {@link ByteArrayEntity} builder.
 */
-   public static final ByteArrayEntity byteArrayEntity(byte[] content) {
+   public static final HttpEntityBuilder 
byteArrayEntity(byte[] content) {
return ByteArrayEntity.of(content);
}
 
/**
-* Creates a new {@link ByteArrayEntity} object.
+* Creates a new {@link ByteArrayEntity} builder.
 *
 * @param content The entity content.  Can be null.
 * @param contentType The entity content type, or null if not 
specified.
-* @return A new {@link ByteArrayEntity} object.
+* @return A new {@link ByteArrayEntity} builder.
 */
-   public static final ByteArrayEntity byteArrayEntity(byte[] content, 
ContentType contentType) {
+   public static final HttpEntityBuilder 
byteArrayEntity(byte[] content, ContentType contentType) {
return ByteArrayEntity.of(content, contentType);
}
 
/**
-* Creates a new {@link FileEntity} object.
+* Creates a new {@link FileEntity} builder.
 *
 * 
 * Assumes no content type.
 *
 * @param content The entity content.  Can be null.
-* @return A new {@link FileEntity} object.
+* @return A new {@link FileEntity} builder.
 */
-   public static final FileEntity fileEntity(File content) {
+   public static final HttpEntityBuilder fileEntity(File 
content) {
return FileEntity.of(content);
}
 
/**
-* Creates a new {@link FileEntity} object.
+* Creates a new {@link FileEntity} builder.
 *
 * @param content The entity content.  Can be null.
 * @param contentType The entity content type, or null if not 
specified.
-* @return A new {@link FileEntity} object.
+* @return A new {@link FileEntity} builder.
 */
-   public static final FileEntity fileEntity(File content, ContentType 
contentType) {
+   public static final HttpEntityBuilder fileEntity(File 
content, ContentType contentType) {
return FileEntity.of(content, contentType);
}
 
/**
-* Creates a new {@link ReaderEntity} object.
+* Creates a new {@link ReaderEntity} builder.
 *
 * @param content The entity content.  Can be null.
-* @return A new {@link ReaderEntity} object.
+* @return A new {@link ReaderEntity} builder.
 */
-   public static final ReaderEntity readerEntity(Reader content) {
+   public static final

[juneau] branch master updated: Fix NPE seen at LogParser$Entry.getText() line: 173.

2021-03-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 f6ece51  Fix NPE seen at LogParser$Entry.getText() line: 173.
 new 65f6bd4  Merge pull request #56 from 
garydgregory/npe_LogParser_Entry.getText
f6ece51 is described below

commit f6ece510a518c09785cef00dba3876dd09c62017
Author: Gary Gregory 
AuthorDate: Fri Mar 5 12:31:27 2021 -0500

Fix NPE seen at LogParser$Entry.getText() line: 173.
---
 .../main/java/org/apache/juneau/microservice/resources/LogParser.java   | 2 ++
 1 file changed, 2 insertions(+)

diff --git 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogParser.java
 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogParser.java
index 170917a..84916d2 100644
--- 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogParser.java
+++ 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogParser.java
@@ -170,6 +170,8 @@ public final class LogParser implements 
Iterable, Iterator

[juneau] branch master updated: REST refactoring.

2021-03-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 d063c8d  REST refactoring.
d063c8d is described below

commit d063c8d02b8006bb239d02090cd9c45e50e2286d
Author: JamesBognar 
AuthorDate: Fri Mar 5 15:05:02 2021 -0500

REST refactoring.
---
 .../main/ConfigurablePropertyCodeGenerator.java|   3 +-
 .../java/org/apache/juneau/http/HttpEntities.java  | 120 ++--
 .../apache/juneau/http/entity/BasicHttpEntity.java |   3 +-
 .../juneau/http/entity/BasicHttpResource.java  |   1 +
 .../apache/juneau/http/entity/ByteArrayEntity.java |  14 +-
 .../org/apache/juneau/http/entity/FileEntity.java  |  12 +-
 .../juneau/http/entity/InputStreamEntity.java  |  19 +-
 .../{InputStreamEntity.java => ReaderEntity.java}  |  83 
 ...alizedHttpEntity.java => SerializedEntity.java} | 140 +++---
 .../apache/juneau/http/entity/StringEntity.java|  58 +++---
 .../java/org/apache/juneau/internal/IOUtils.java   |  14 ++
 .../org/apache/juneau/rest/client/RestClient.java  |  20 +-
 .../org/apache/juneau/rest/client/RestRequest.java |   6 +-
 .../apache/juneau/http/BasicHttpEntity_Test.java   | 212 -
 .../apache/juneau/http/BasicHttpResource_Test.java |   1 +
 .../juneau/http/SerializedHttpEntity_Test.java |  17 +-
 .../http/remote/Remote_CommonInterfaces_Test.java  |   1 +
 .../rest/client/RestClient_BasicCalls_Test.java|   4 +-
 .../juneau/rest/client/RestClient_Body_Test.java   |  88 ++---
 19 files changed, 335 insertions(+), 481 deletions(-)

diff --git a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java 
b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
index f79f317..40e2be1 100644
--- a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++ b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
@@ -64,7 +64,6 @@ public class ConfigurablePropertyCodeGenerator {
ArrayAssertion.class,
Assertion.class,
BasicHeader.class,
-   BasicHttpEntity.class,
BasicHttpResource.class,
HttpResponseBuilder.class,
Part.class,
@@ -175,7 +174,7 @@ public class ConfigurablePropertyCodeGenerator {
RestOperationContextBuilder.class,
SeeOther.class,
SerializedHeader.class,
-   SerializedHttpEntity.class,
+   SerializedEntity.class,
SerializedPart.class,
SerializerBuilder.class,
SerializerGroupBuilder.class,
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
index 21c588b..d3b27d2 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
@@ -13,10 +13,11 @@
 package org.apache.juneau.http;
 
 import java.io.*;
-import java.nio.charset.*;
+import java.util.function.*;
 
 import org.apache.juneau.http.entity.*;
 import org.apache.juneau.http.header.*;
+import org.apache.juneau.serializer.*;
 
 /**
  * Standard predefined HTTP entities.
@@ -24,28 +25,102 @@ import org.apache.juneau.http.header.*;
 public class HttpEntities {
 
/**
-* Creates a new {@link StringEntity} object.
+* Creates a new {@link ByteArrayEntity} object.
 *
 * 
-* Assumes {@link ContentType#TEXT_PLAIN TEXT/PLAIN} content type and 
"UTF-8" encoding.
+* Assumes no content type.
+*
+* @param content The entity content.  Can be null.
+* @return A new {@link ByteArrayEntity} object.
+*/
+   public static final ByteArrayEntity byteArrayEntity(byte[] content) {
+   return ByteArrayEntity.of(content);
+   }
+
+   /**
+* Creates a new {@link ByteArrayEntity} object.
+*
+* @param content The entity content.  Can be null.
+* @param contentType The entity content type, or null if not 
specified.
+* @return A new {@link ByteArrayEntity} object.
+*/
+   public static final ByteArrayEntity byteArrayEntity(byte[] content, 
ContentType contentType) {
+   return ByteArrayEntity.of(content, contentType);
+   }
+
+   /**
+* Creates a new {@link FileEntity} object.
+*
+* 
+* Assumes no content type.
+*
+* @param content The entity content.  Can be null.
+* @return A new {@link FileEntity} object.
+*/
+   public static final FileEntity fileEntity(File content) {
+   return FileEntity.of(content);
+   }
+
+   /**
+   

[juneau] branch master updated: REST refactoring.

2021-03-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 acf5994  REST refactoring.
acf5994 is described below

commit acf59946f90ebf9c4b0bfa45258b9f6277a948c1
Author: JamesBognar 
AuthorDate: Fri Mar 5 13:45:28 2021 -0500

REST refactoring.
---
 TODO.txt   |   1 +
 .../main/ConfigurablePropertyCodeGenerator.java|   6 +-
 .../main/java/org/apache/juneau/config/Config.java |   4 +-
 .../juneau/config/store/ConfigClasspathStore.java  |   2 +-
 .../apache/juneau/jena/RdfSerializerSession.java   |   9 +-
 .../main/java/org/apache/juneau/BeanSession.java   |  11 +-
 .../org/apache/juneau/assertions/Assertions.java   |  74 ++-
 .../java/org/apache/juneau/cp/BasicFileFinder.java |   9 +-
 .../main/java/org/apache/juneau/cp/LocalFile.java  |   5 +-
 .../apache/juneau/html/HtmlSerializerSession.java  |   7 +-
 .../juneau/http/entity/AbstractHttpEntity.java |   8 +-
 .../apache/juneau/http/entity/BasicHttpEntity.java |   2 +
 ...InputStreamEntity.java => ByteArrayEntity.java} | 100 ++-
 .../{InputStreamEntity.java => FileEntity.java}|  83 ++-
 .../juneau/http/entity/InputStreamEntity.java  |  47 +-
 .../apache/juneau/http/entity/StringEntity.java|   8 +-
 .../java/org/apache/juneau/internal/IOUtils.java   | 714 +++--
 .../apache/juneau/json/JsonSerializerSession.java  |   9 +-
 .../juneau/msgpack/MsgPackSerializerSession.java   |  12 +-
 .../java/org/apache/juneau/parser/ParserPipe.java  |   6 +-
 .../apache/juneau/transforms/InputStreamSwap.java  |   9 +-
 .../org/apache/juneau/transforms/ReaderSwap.java   |   5 +-
 .../apache/juneau/uon/UonSerializerSession.java|   9 +-
 .../urlencoding/UrlEncodingSerializerSession.java  |  10 +-
 .../java/org/apache/juneau/utils/ManifestFile.java |   3 +-
 .../apache/juneau/xml/XmlSerializerSession.java|   9 +-
 .../microservice/resources/DirectoryResource.java  |   4 +-
 .../apache/juneau/rest/test/TestMicroservice.java  |   8 +-
 .../jetty/JettyMicroserviceBuilder.java|  11 +-
 .../jetty/resources/DebugResource.java |   3 +-
 .../apache/juneau/rest/client/ResponseBody.java|  17 +-
 .../org/apache/juneau/rest/client/RestRequest.java |   8 +-
 .../juneau/rest/mock/MockServletRequest.java   |  14 +-
 .../java/org/apache/juneau/rest/RequestBody.java   |   2 +-
 .../juneau/rest/reshandlers/DefaultHandler.java|   8 +-
 .../rest/reshandlers/InputStreamHandler.java   |   7 +-
 .../juneau/rest/reshandlers/ReaderHandler.java |   7 +-
 .../rest/util/CachingHttpServletRequest.java   |   6 +-
 .../apache/juneau/rest/widget/MenuItemWidget.java  |   3 +-
 .../juneau/config/store/ConfigFileStoreTest.java   |   9 +-
 .../http/remote/Remote_BodyAnnotation_Test.java|  11 +-
 .../http/remote/Remote_CommonInterfaces_Test.java  |   8 +-
 .../remote/Remote_RemoteOpAnnotation_Test.java |  56 +-
 .../http/remote/Remote_RequestAnnotation_Test.java |  12 +-
 .../remote/Remote_ResponseAnnotation_Test.java |   6 +-
 .../juneau/httppart/OpenApiPartParser_Test.java|  14 +-
 .../apache/juneau/rest/annotation/Body_Test.java   |  22 +-
 .../rest/client/RestClient_Response_Body_Test.java |  10 +-
 .../transforms/InputStreamBase64SwapTest.java  |   2 +-
 .../juneau/utils/ByteArrayInOutStreamTest.java |   2 +-
 .../java/org/apache/juneau/utils/IOPipeTest.java   | 285 
 .../java/org/apache/juneau/utils/IOUtilsTest.java  |   2 +-
 52 files changed, 740 insertions(+), 959 deletions(-)

diff --git a/TODO.txt b/TODO.txt
index 5d3bc3b..b47edb0 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -16,3 +16,4 @@ HttpRuntimeException?
 Add ExceptionHeader
 REST query/formdata/path parts should extend from PartGroup class.
 Eliminate PartSupplier and HeaderSupplier?
+Replace ThrowableUtils.assertFieldNotNull() and other methods.
diff --git a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java 
b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
index 7d69922..f79f317 100644
--- a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++ b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
@@ -11,6 +11,8 @@
 // * specific language governing permissions and limitations under the 
License.  *
 // 
***
 
+import static org.apache.juneau.internal.IOUtils.*;
+
 import java.io.*;
 import java.lang.reflect.*;
 import java.lang.reflect.Method;
@@ -251,7 +253,7 @@ public class ConfigurablePropertyCodeGenerator {
System.err.println("@FluentSetters not present 
on class " + c.getName());
 
System.out.pri

[juneau] branch master updated: REST refactoring.

2021-03-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 c22d4ea  REST refactoring.
c22d4ea is described below

commit c22d4ea8b3301af4a2a90f7e7302a532188c3772
Author: JamesBognar 
AuthorDate: Thu Mar 4 19:54:28 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/http/HttpEntities.java  |  58 +-
 .../juneau/http/entity/AbstractHttpEntity.java | 195 +
 .../juneau/http/entity/InputStreamEntity.java  | 135 ++
 .../apache/juneau/http/entity/StringEntity.java| 131 ++
 .../org/apache/juneau/http/header/MediaType.java   |  59 ++-
 .../juneau/http/response/BasicHttpException.java   |  12 +-
 .../juneau/http/response/BasicHttpResponse.java|  12 +-
 .../juneau/http/response/HttpExceptionBuilder.java |   8 +-
 .../juneau/http/response/HttpResponseBuilder.java  |  11 +-
 .../java/org/apache/juneau/internal/IOUtils.java   |   8 +
 .../org/apache/juneau/rest/client/RestClient.java  |   2 -
 .../org/apache/juneau/rest/client/RestRequest.java |  13 +-
 .../rest/client/RestClient_BasicCalls_Test.java|  15 +-
 13 files changed, 604 insertions(+), 55 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
index 43d30f6..21c588b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java
@@ -12,8 +12,64 @@
 // 
***
 package org.apache.juneau.http;
 
+import java.io.*;
+import java.nio.charset.*;
+
+import org.apache.juneau.http.entity.*;
+import org.apache.juneau.http.header.*;
+
 /**
- * Standard predefined HTTP headers.
+ * Standard predefined HTTP entities.
  */
 public class HttpEntities {
+
+   /**
+* Creates a new {@link StringEntity} object.
+*
+* 
+* Assumes {@link ContentType#TEXT_PLAIN TEXT/PLAIN} content type and 
"UTF-8" encoding.
+*
+* @param content The entity content.  Can be null.
+* @return A new {@link StringEntity} object.
+*/
+   public static final StringEntity stringEntity(String content) {
+   return StringEntity.of(content);
+   }
+
+   /**
+* Creates a new {@link StringEntity} object.
+*
+* @param content The entity content.  Can be null.
+* @param contentType The entity content type, or {@link 
ContentType#TEXT_PLAIN} if not specified.
+* @param charset The content character encoding, or "UTF-8" 
if not specified.
+* @return A new {@link StringEntity} object.
+*/
+   public static final StringEntity stringEntity(String content, 
ContentType contentType, Charset charset) {
+   return StringEntity.of(content, contentType, charset);
+   }
+
+   /**
+* Creates a new {@link InputStreamEntity} object.
+*
+* 
+* Assumes no content type.
+*
+* @param content The entity content.  Can be null.
+* @return A new {@link InputStreamEntity} object.
+*/
+   public static final InputStreamEntity streamEntity(InputStream content) 
{
+   return InputStreamEntity.of(content);
+   }
+
+   /**
+* Creates a new {@link InputStreamEntity} object.
+*
+* @param content The entity content.  Can be null.
+* @param contentType The entity content type, or null if not 
specified.
+* @param length The content length, or -1 if not known.
+* @return A new {@link InputStreamEntity} object.
+*/
+   public static final InputStreamEntity streamEntity(InputStream content, 
long length, ContentType contentType) {
+   return InputStreamEntity.of(content, length, contentType);
+   }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/AbstractHttpEntity.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/AbstractHttpEntity.java
new file mode 100644
index 000..e11ec9c
--- /dev/null
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/AbstractHttpEntity.java
@@ -0,0 +1,195 @@
+// 
***
+// * 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 AS

[juneau] branch master updated: REST refactoring.

2021-03-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 6d9bc19  REST refactoring.
6d9bc19 is described below

commit 6d9bc1997fccc7fee6f6c4d8faecee7bfbaf6d04
Author: JamesBognar 
AuthorDate: Thu Mar 4 14:54:38 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/http/{ => entity}/BasicHttpResource.java   | 3 +--
 .../main/java/org/apache/juneau/http/{ => entity}/HttpResource.java   | 2 +-
 .../src/main/java/org/apache/juneau/http/header/Accept.java   | 2 +-
 .../src/main/java/org/apache/juneau/http/header/AcceptCharset.java| 2 +-
 .../src/main/java/org/apache/juneau/http/header/AcceptEncoding.java   | 2 +-
 .../src/main/java/org/apache/juneau/http/header/AcceptLanguage.java   | 2 +-
 .../src/main/java/org/apache/juneau/http/header/ClientVersion.java| 2 +-
 .../src/main/java/org/apache/juneau/http/header/Connection.java   | 2 +-
 .../src/main/java/org/apache/juneau/http/{ => header}/Constants.java  | 4 ++--
 .../main/java/org/apache/juneau/http/header/ContentDisposition.java   | 2 +-
 .../src/main/java/org/apache/juneau/http/header/ContentType.java  | 2 +-
 .../src/main/java/org/apache/juneau/http/header/MediaRanges.java  | 2 +-
 .../src/main/java/org/apache/juneau/http/header/MediaType.java| 2 +-
 .../src/main/java/org/apache/juneau/http/header/StringRanges.java | 2 +-
 .../src/main/java/org/apache/juneau/http/header/TE.java   | 2 +-
 .../src/main/java/org/apache/juneau/rest/client/ResponseBody.java | 2 +-
 .../src/main/java/org/apache/juneau/rest/client/RestClient.java   | 1 -
 .../src/main/java/org/apache/juneau/rest/client/RestRequest.java  | 1 -
 .../org/apache/juneau/rest/springboot/BasicSpringRestServlet.java | 2 +-
 .../src/main/java/org/apache/juneau/rest}/BasicNamedAttribute.java| 2 +-
 .../src/main/java/org/apache/juneau/rest/BasicRestObject.java | 2 +-
 .../src/main/java/org/apache/juneau/rest/BasicRestOperations.java | 2 +-
 .../src/main/java/org/apache/juneau/rest/BasicRestServlet.java| 2 +-
 .../src/main/java/org/apache/juneau/rest/BasicStaticFiles.java| 2 +-
 .../src/main/java/org/apache/juneau/rest}/NamedAttribute.java | 2 +-
 .../src/main/java/org/apache/juneau/rest}/NamedAttributeList.java | 2 +-
 .../src/main/java/org/apache/juneau/rest/RequestAttribute.java| 1 -
 .../src/main/java/org/apache/juneau/rest/RequestAttributes.java   | 1 -
 .../src/main/java/org/apache/juneau/rest/RestContext.java | 1 -
 .../src/main/java/org/apache/juneau/rest/RestContextBuilder.java  | 1 -
 .../src/main/java/org/apache/juneau/rest/RestOperationContext.java| 1 -
 .../main/java/org/apache/juneau/rest/RestOperationContextBuilder.java | 1 -
 .../src/main/java/org/apache/juneau/rest/StaticFiles.java | 2 +-
 .../main/java/org/apache/juneau/rest/annotation/RestAnnotation.java   | 1 -
 .../java/org/apache/juneau/rest/annotation/RestDeleteAnnotation.java  | 1 -
 .../java/org/apache/juneau/rest/annotation/RestGetAnnotation.java | 1 -
 .../main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java | 1 -
 .../java/org/apache/juneau/rest/annotation/RestPostAnnotation.java| 1 -
 .../java/org/apache/juneau/rest/annotation/RestPutAnnotation.java | 1 -
 .../src/test/java/org/apache/juneau/http/BasicHttpResource_Test.java  | 3 ++-
 .../test/java/org/apache/juneau/http/{ => header}/Constants_Test.java | 2 +-
 .../org/apache/juneau/http/remote/Remote_CommonInterfaces_Test.java   | 2 +-
 .../src/test/java/org/apache/juneau/rest/RestOp_Returns_Test.java | 2 +-
 .../org/apache/juneau/rest/client/RestClient_BasicCalls_Test.java | 2 +-
 .../test/java/org/apache/juneau/rest/client/RestClient_Body_Test.java | 1 -
 45 files changed, 32 insertions(+), 47 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHttpResource.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/BasicHttpResource.java
similarity index 99%
rename from 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHttpResource.java
rename to 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/BasicHttpResource.java
index 0bd98ef..33ee3c6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHttpResource.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/BasicHttpResource.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 limitati

[juneau] branch master updated: REST refactoring.

2021-03-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 e68fae5  REST refactoring.
e68fae5 is described below

commit e68fae5500ca5acc9356b3f37fb27a019b589671
Author: JamesBognar 
AuthorDate: Thu Mar 4 14:38:43 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/http/HttpParts.java | 42 ++
 .../rest/test/client/ThirdPartyProxyTest.java  |  5 +--
 .../org/apache/juneau/rest/client/RestClient.java  |  3 +-
 .../java/org/apache/juneau/http/PartList_Test.java |  8 ++---
 .../http/remote/Remote_BodyAnnotation_Test.java|  7 ++--
 .../remote/Remote_FormDataAnnotation_Test.java |  2 +-
 .../http/remote/Remote_PathAnnotation_Test.java|  2 +-
 .../http/remote/Remote_QueryAnnotation_Test.java   |  2 +-
 .../rest/client/RestClient_BasicCalls_Test.java|  2 +-
 .../rest/client/RestClient_FormData_Test.java  |  2 +-
 .../juneau/rest/client/RestClient_Paths_Test.java  |  2 +-
 .../juneau/rest/client/RestClient_Query_Test.java  |  2 +-
 12 files changed, 62 insertions(+), 17 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpParts.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpParts.java
index 09cd078..d9e61a6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpParts.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpParts.java
@@ -358,4 +358,46 @@ public class HttpParts {
public static final SerializedPart serializedPart(String name, 
Supplier value) {
return SerializedPart.of(name, value);
}
+
+   /**
+* Instantiates a new {@link PartListBuilder}.
+*
+* @return A new empty builder.
+*/
+   public static final PartListBuilder partListBuilder() {
+   return PartList.create();
+   }
+
+   /**
+* Creates a new {@link PartList} initialized with the specified parts.
+*
+* @param parts The parts to add to the list.  Can be null.  
null entries are ignored.
+* @return A new unmodifiable instance, never null.
+*/
+   public static final PartList partList(List parts) {
+   return PartList.of(parts);
+   }
+
+   /**
+* Creates a new {@link PartList} initialized with the specified parts.
+*
+* @param parts The parts to add to the list.  null entries 
are ignored.
+* @return A new unmodifiable instance, never null.
+*/
+   public static final PartList partList(Part...parts) {
+   return PartList.of(parts);
+   }
+
+   /**
+* Creates a new {@link PartList} initialized with the specified 
name/value pairs.
+*
+* @param pairs
+*  Initial list of pairs.
+*  Must be an even number of parameters representing key/value 
pairs.
+* @throws RuntimeException If odd number of parameters were specified.
+* @return A new instance.
+*/
+   public static PartList partList(Object...pairs) {
+   return PartList.ofPairs(pairs);
+   }
 }
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 9cd8096..f412d33 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
@@ -18,6 +18,7 @@ import static org.junit.Assert.*;
 import static org.junit.Assert.assertEquals;
 import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.http.HttpHeaders.*;
+import static org.apache.juneau.http.HttpParts.*;
 
 import java.util.*;
 import java.util.concurrent.atomic.*;
@@ -376,7 +377,7 @@ public class ThirdPartyProxyTest extends RestTestcase {
@Test
public void b12_partListQuery() throws Exception {
String r = proxy.partListQuery(
-   PartList.ofPairs("a","foo","b","","c",null)
+   partList("a","foo","b","","c",null)
);
assertEquals("OK", r);
}
@@ -505,7 +506,7 @@ public class ThirdPartyProxyTest extends RestTestcase {
@Test
public void c10_partListFormData() throws Exception {
String r = proxy.partListFormData(
-   PartList.ofPairs("a","foo",&q

[juneau] branch master updated: REST refactoring.

2021-03-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 e8018c0  REST refactoring.
e8018c0 is described below

commit e8018c071b26da45686e0f087f0fda8831015814
Author: JamesBognar 
AuthorDate: Thu Mar 4 14:30:27 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/http/part/PartList.java |  98 ++-
 .../apache/juneau/http/part/PartListBuilder.java   | 209 +++---
 .../org/apache/juneau/http/part/PartSupplier.java  | 305 -
 .../rest/test/client/ThirdPartyProxyResource.java  |   8 +-
 .../rest/test/client/ThirdPartyProxyTest.java  |  24 +-
 .../org/apache/juneau/rest/client/RestClient.java  |  34 +--
 .../juneau/rest/client/RestClientBuilder.java  |   8 +-
 .../org/apache/juneau/rest/client/RestRequest.java |  56 ++--
 .../{PartSupplier_Test.java => PartList_Test.java} |  62 ++---
 .../http/remote/Remote_BodyAnnotation_Test.java|  12 +-
 .../remote/Remote_FormDataAnnotation_Test.java |  20 +-
 .../http/remote/Remote_PathAnnotation_Test.java|  20 +-
 .../http/remote/Remote_QueryAnnotation_Test.java   |  24 +-
 .../rest/client/RestClient_BasicCalls_Test.java|  12 +-
 .../rest/client/RestClient_FormData_Test.java  |   4 +-
 .../juneau/rest/client/RestClient_Paths_Test.java  |   4 +-
 .../juneau/rest/client/RestClient_Query_Test.java  |   4 +-
 17 files changed, 402 insertions(+), 502 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/PartList.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/PartList.java
index fc8a473..342d4e6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/PartList.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/PartList.java
@@ -13,14 +13,21 @@
 package org.apache.juneau.http.part;
 
 import static java.util.Collections.*;
+import static org.apache.juneau.internal.StringUtils.*;
+import static java.util.Arrays.*;
 
 import java.util.*;
 
+import org.apache.juneau.*;
+
 /**
  * An unmodifiable list of HTTP parts.
  */
 public class PartList implements Iterable {
 
+   /** Represents no part supplier in annotations. */
+   public static final class Null extends PartList {}
+
/** Predefined instance. */
public static final PartList EMPTY = create().build();
 
@@ -36,6 +43,46 @@ public class PartList implements Iterable {
}
 
/**
+* Creates a new {@link PartList} initialized with the specified parts.
+*
+* @param parts The parts to add to the list.  Can be null.  
null entries are ignored.
+* @return A new unmodifiable instance, never null.
+*/
+   public static PartList of(List parts) {
+   return parts == null || parts.isEmpty() ? EMPTY : new 
PartList(parts);
+   }
+
+   /**
+* Creates a new {@link PartList} initialized with the specified parts.
+*
+* @param parts The parts to add to the list.  null entries 
are ignored.
+* @return A new unmodifiable instance, never null.
+*/
+   public static PartList of(Part...parts) {
+   return parts == null || parts.length == 0 ? EMPTY : new 
PartList(asList(parts));
+   }
+
+   /**
+* Creates a new {@link PartList} initialized with the specified 
name/value pairs.
+*
+* @param pairs
+*  Initial list of pairs.
+*  Must be an even number of parameters representing key/value 
pairs.
+* @throws RuntimeException If odd number of parameters were specified.
+* @return A new instance.
+*/
+   public static PartList ofPairs(Object...pairs) {
+   if (pairs.length == 0)
+   return EMPTY;
+   if (pairs.length % 2 != 0)
+   throw new BasicRuntimeException("Odd number of 
parameters passed into PartList.ofPairs()");
+   PartListBuilder b = create();
+   for (int i = 0; i < pairs.length; i+=2)
+   b.add(stringify(pairs[i]), pairs[i+1]);
+   return new PartList(b);
+   }
+
+   /**
 * Constructor.
 *
 * @param builder The builder containing the settings for this bean.
@@ -45,6 +92,32 @@ public class PartList implements Iterable {
}
 
/**
+* Constructor.
+*
+* @param parts The initial list of parts.  null entries are 
ignored.
+*/
+   protected PartList(List parts) {
+   if (parts == null || parts.isEmpty())
+   this.parts = emptyList();
+   else {
+   List l = new ArrayList<>();
+   for (int i = 

[juneau] branch master updated: REST refactoring.

2021-03-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 85d641c  REST refactoring.
85d641c is described below

commit 85d641c3fc5ad992f07844affc4d128a3d01c270
Author: JamesBognar 
AuthorDate: Thu Mar 4 13:46:41 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/http/header/HeaderList.java  |   2 +-
 .../rest/test/client/ThirdPartyProxyResource.java  | 313 ++---
 .../rest/test/client/ThirdPartyProxyTest.java  |  11 +-
 .../org/apache/juneau/http/HeaderList_Test.java|  10 +-
 .../http/remote/Remote_HeaderAnnotation_Test.java  |   2 +-
 5 files changed, 169 insertions(+), 169 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
index 153e0a8..c05d086 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
@@ -103,7 +103,7 @@ public class HeaderList implements Iterable {
 *
 * @param headers The initial list of headers.  null entries 
are ignored.
 */
-   public HeaderList(List headers) {
+   protected HeaderList(List headers) {
if (headers == null || headers.isEmpty())
this.headers = emptyList();
else {
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyResource.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyResource.java
index 4f437d3..28ee2ae 100644
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyResource.java
+++ 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyResource.java
@@ -15,7 +15,6 @@ package org.apache.juneau.rest.test.client;
 import static java.util.Arrays.*;
 import static org.junit.Assert.*;
 import static org.apache.juneau.assertions.Assertions.*;
-import static org.apache.juneau.http.HttpMethod.*;
 import static org.apache.juneau.testutils.Constants.*;
 
 import java.io.*;
@@ -101,7 +100,7 @@ public class ThirdPartyProxyResource extends 
BasicRestServletJena {
// Header tests

//-
 
-   @RestOp(method=GET, path="/primitiveHeaders")
+   @RestGet(path="/primitiveHeaders")
public String primitiveHeaders(
@Header("a") String a,
@Header("an") String an,
@@ -124,7 +123,7 @@ public class ThirdPartyProxyResource extends 
BasicRestServletJena {
return "OK";
}
 
-   @RestOp(method=GET, path="/primitiveCollectionHeaders")
+   @RestGet(path="/primitiveCollectionHeaders")
public String primitiveCollectionHeaders(
@Header("a") int[][][] a,
@Header("b") Integer[][][] b,
@@ -153,7 +152,7 @@ public class ThirdPartyProxyResource extends 
BasicRestServletJena {
return "OK";
}
 
-   @RestOp(method=GET, path="/beanHeaders")
+   @RestGet(path="/beanHeaders")
public String beanHeaders(
@Header(name="a",cf="uon") ABean a,
@Header(name="an",cf="uon") ABean an,
@@ -186,7 +185,7 @@ public class ThirdPartyProxyResource extends 
BasicRestServletJena {
return "OK";
}
 
-   @RestOp(method=GET, path="/typedBeanHeaders")
+   @RestGet(path="/typedBeanHeaders")
public String typedBeanHeaders(
@Header(n="a",cf="uon") TypedBean a,
@Header(n="an",cf="uon") TypedBean an,
@@ -222,7 +221,7 @@ public class ThirdPartyProxyResource extends 
BasicRestServletJena {
return "OK";
}
 
-   @RestOp(method=GET, path="/swappedPojoHeaders")
+   @RestGet(path="/swappedPojoHeaders")
public String swappedPojoHeaders(
@Header(n="a",cf="uon") SwappedPojo a,
@Header(n="b",cf="uon") SwappedPojo[][][] b,
@@ -245,7 +244,7 @@ public class ThirdPartyProxyResource extends 
BasicRestServletJena {
return "OK";
}
 
-  

[juneau] branch master updated: REST refactoring.

2021-03-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 852a97c  REST refactoring.
852a97c is described below

commit 852a97c7d611b24c2ba52ca036f99dbae71fe738
Author: JamesBognar 
AuthorDate: Thu Mar 4 13:36:32 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/http/HttpHeaders.java   |  42 +++
 .../org/apache/juneau/http/header/HeaderList.java  |  79 +-
 .../juneau/http/header/HeaderListBuilder.java  | 134 +-
 .../apache/juneau/http/header/HeaderSupplier.java  | 292 -
 .../java/org/apache/juneau/http/remote/Remote.java |   6 +-
 .../rest/test/client/ThirdPartyProxyTest.java  |   4 +-
 .../org/apache/juneau/rest/client/RestClient.java  |   9 +-
 .../juneau/rest/client/RestClientBuilder.java  |   4 +-
 .../org/apache/juneau/rest/client/RestRequest.java |  16 +-
 .../juneau/rest/client/remote/RemoteMeta.java  |  17 +-
 ...aderSupplier_Test.java => HeaderList_Test.java} |  59 ++---
 .../http/remote/Remote_HeaderAnnotation_Test.java  |  20 +-
 .../org/apache/juneau/http/remote/Remote_Test.java |  15 +-
 .../rest/client/RestClient_Headers_Test.java   |   2 +-
 14 files changed, 326 insertions(+), 373 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
index 289a2bf..2c3cc5a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
@@ -3133,4 +3133,46 @@ public class HttpHeaders {
public static final BasicUriHeader uriHeader(String name, Supplier 
value) {
return BasicUriHeader.of(name, value);
}
+
+   /**
+* Instantiates a new {@link HeaderListBuilder}.
+*
+* @return A new empty builder.
+*/
+   public static final HeaderListBuilder headerListBuilder() {
+   return HeaderList.create();
+   }
+
+   /**
+* Creates a new {@link HeaderList} initialized with the specified 
headers.
+*
+* @param headers The headers to add to the list.  Can be 
null.  null entries are ignored.
+* @return A new unmodifiable instance, never null.
+*/
+   public static final HeaderList headerList(List headers) {
+   return HeaderList.of(headers);
+   }
+
+   /**
+* Creates a new {@link HeaderList} initialized with the specified 
headers.
+*
+* @param headers The headers to add to the list.  null 
entries are ignored.
+* @return A new unmodifiable instance, never null.
+*/
+   public static final HeaderList headerList(Header...headers) {
+   return HeaderList.of(headers);
+   }
+
+   /**
+* Creates a new {@link HeaderList} initialized with the specified 
name/value pairs.
+*
+* @param pairs
+*  Initial list of pairs.
+*  Must be an even number of parameters representing key/value 
pairs.
+* @throws RuntimeException If odd number of parameters were specified.
+* @return A new instance.
+*/
+   public static HeaderList headerList(Object...pairs) {
+   return HeaderList.ofPairs(pairs);
+   }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
index 97b6d81..153e0a8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
@@ -13,12 +13,16 @@
 package org.apache.juneau.http.header;
 
 import static java.util.Collections.*;
+import static org.apache.juneau.internal.StringUtils.*;
+import static java.util.Arrays.*;
+
 import java.util.*;
 
 import org.apache.http.*;
 import org.apache.http.message.*;
 import org.apache.http.message.BasicHeader;
 import org.apache.http.util.*;
+import org.apache.juneau.*;
 
 /**
  * An unmodifiable list of HTTP headers.
@@ -28,8 +32,11 @@ import org.apache.http.util.*;
  */
 public class HeaderList implements Iterable {
 
+   /** Represents no header supplier in annotations. */
+   public static final class Null extends HeaderList {}
+
/** Predefined instance. */
-   public static final HeaderList EMPTY = create().build();
+   public static final HeaderList EMPTY = new HeaderList();
 
private final List headers;
 
@@ -43,12 +50,78 @@ public class HeaderList implements Iterable {
}
 
/**
+* Creates a new {@link HeaderList} initiali

[juneau] branch master updated: REST refactoring.

2021-03-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 88ced6a  REST refactoring.
88ced6a is described below

commit 88ced6a390c491c8fff2748bef864702f2fa263a
Author: JamesBognar 
AuthorDate: Thu Mar 4 11:51:08 2021 -0500

REST refactoring.
---
 .../main/ConfigurablePropertyCodeGenerator.java|   2 +-
 .../header/{HeaderGroup.java => HeaderList.java}   | 101 ++---
 ...derGroupBuilder.java => HeaderListBuilder.java} |  50 +-
 .../http/part/{PartGroup.java => PartList.java}|  60 ++--
 ...{PartGroupBuilder.java => PartListBuilder.java} |  50 +-
 .../juneau/http/response/BasicHttpException.java   |  57 ++--
 .../juneau/http/response/BasicHttpResponse.java|  60 ++--
 .../juneau/http/response/HttpExceptionBuilder.java |  60 ++--
 .../juneau/http/response/HttpResponseBuilder.java  |  60 ++--
 .../java/org/apache/juneau/rest/RestContext.java   |  22 ++---
 .../apache/juneau/rest/RestOperationContext.java   |  48 +-
 .../java/org/apache/juneau/rest/RestRequest.java   |   8 +-
 .../java/org/apache/juneau/rest/RestResponse.java  |   4 +-
 13 files changed, 289 insertions(+), 293 deletions(-)

diff --git a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java 
b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
index c281f0e..7d69922 100644
--- a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++ b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
@@ -118,7 +118,7 @@ public class ConfigurablePropertyCodeGenerator {
FluentThrowableAssertion.class,
FluentZonedDateTimeAssertion.class,
Found.class,
-   HeaderGroupBuilder.class,
+   HeaderListBuilder.class,
HtmlDocSerializerBuilder.class,
HtmlParserBuilder.class,
HtmlSchemaSerializerBuilder.class,
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderGroup.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
similarity index 66%
rename from 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderGroup.java
rename to 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
index 619afae..97b6d81 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderGroup.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
@@ -12,8 +12,7 @@
 // 
***
 package org.apache.juneau.http.header;
 
-import static java.util.Optional.*;
-
+import static java.util.Collections.*;
 import java.util.*;
 
 import org.apache.http.*;
@@ -22,17 +21,15 @@ import org.apache.http.message.BasicHeader;
 import org.apache.http.util.*;
 
 /**
- * An unmodifiable group of HTTP headers.
+ * An unmodifiable list of HTTP headers.
  *
  * 
- * Similar to {@link HeaderGroup} but uses a builder-based approach for 
building header groups.
+ * Similar to {@link HeaderGroup} but uses a builder-based approach for 
building header lists.
  */
-public class HeaderGroup {
+public class HeaderList implements Iterable {
 
/** Predefined instance. */
-   public static final HeaderGroup INSTANCE = create().build();
-
-   private static final Header[] EMPTY = new Header[] {};
+   public static final HeaderList EMPTY = create().build();
 
private final List headers;
 
@@ -41,8 +38,8 @@ public class HeaderGroup {
 *
 * @return A new builder.
 */
-   public static HeaderGroupBuilder create() {
-   return new HeaderGroupBuilder();
+   public static HeaderListBuilder create() {
+   return new HeaderListBuilder();
}
 
/**
@@ -50,7 +47,7 @@ public class HeaderGroup {
 *
 * @param builder The builder containing the settings for this bean.
 */
-   public HeaderGroup(HeaderGroupBuilder builder) {
+   public HeaderList(HeaderListBuilder builder) {
this.headers = new ArrayList<>(builder.headers);
}
 
@@ -59,7 +56,7 @@ public class HeaderGroup {
 *
 * @return A new builder object.
 */
-   public HeaderGroupBuilder builder() {
+   public HeaderListBuilder builder() {
return create().add(headers);
}
 
@@ -75,23 +72,23 @@ public class HeaderGroup {
 * @param name The header name.
 * @return A header with a condensed value or null if no 
headers by the given name are present
 */
-   public Optional 

[juneau] branch master updated: REST refactoring.

2021-03-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 67c624e  REST refactoring.
67c624e is described below

commit 67c624e851316e75a4d0e16d08639838b8c46a47
Author: JamesBognar 
AuthorDate: Thu Mar 4 09:32:03 2021 -0500

REST refactoring.
---
 TODO.txt| 2 ++
 .../src/main/java/org/apache/juneau/encoders/EncoderGroup.java  | 2 +-
 .../juneau/http/{part/StandardHttpParts.java => HttpEntities.java}  | 4 ++--
 .../http/{header/StandardHttpHeaders.java => HttpHeaders.java}  | 6 --
 .../juneau/http/{part/StandardHttpParts.java => HttpParts.java} | 4 ++--
 .../{response/StandardHttpResponses.java => HttpResponses.java} | 6 --
 .../src/main/java/org/apache/juneau/parser/ParserGroup.java | 2 +-
 .../src/main/java/org/apache/juneau/serializer/SerializerGroup.java | 2 +-
 .../src/main/java/org/apache/juneau/rest/client/RestClient.java | 2 +-
 .../main/java/org/apache/juneau/rest/client/remote/RemoteMeta.java  | 2 +-
 .../main/java/org/apache/juneau/rest/mock/MockServletRequest.java   | 2 +-
 .../src/main/java/org/apache/juneau/rest/BasicStaticFiles.java  | 2 +-
 .../src/main/java/org/apache/juneau/rest/RestContext.java   | 2 +-
 .../src/main/java/org/apache/juneau/rest/RestContextBuilder.java| 2 +-
 .../src/main/java/org/apache/juneau/rest/RestOperationContext.java  | 2 +-
 .../java/org/apache/juneau/rest/RestOperationContextBuilder.java| 2 +-
 .../src/main/java/org/apache/juneau/rest/RestResponse.java  | 2 +-
 .../main/java/org/apache/juneau/rest/annotation/RestAnnotation.java | 2 +-
 .../org/apache/juneau/rest/annotation/RestDeleteAnnotation.java | 2 +-
 .../java/org/apache/juneau/rest/annotation/RestGetAnnotation.java   | 2 +-
 .../java/org/apache/juneau/rest/annotation/RestOpAnnotation.java| 2 +-
 .../java/org/apache/juneau/rest/annotation/RestPostAnnotation.java  | 2 +-
 .../java/org/apache/juneau/rest/annotation/RestPutAnnotation.java   | 2 +-
 .../java/org/apache/juneau/rest/reshandlers/DefaultHandler.java | 2 +-
 .../src/test/java/org/apache/juneau/http/BasicHeader_Test.java  | 2 +-
 .../test/java/org/apache/juneau/http/BasicHttpResource_Test.java| 2 +-
 .../src/test/java/org/apache/juneau/http/BasicPart_Test.java| 2 +-
 .../src/test/java/org/apache/juneau/http/HeaderSupplier_Test.java   | 2 +-
 .../java/org/apache/juneau/http/MediaRanges_FindMatch_Test.java | 2 +-
 .../src/test/java/org/apache/juneau/http/SerializedHeader_Test.java | 2 +-
 .../test/java/org/apache/juneau/http/header/AcceptCharset_Test.java | 3 +--
 .../java/org/apache/juneau/http/header/AcceptEncoding_Test.java | 3 +--
 .../java/org/apache/juneau/http/header/AcceptLanguage_Test.java | 3 +--
 .../test/java/org/apache/juneau/http/header/AcceptRanges_Test.java  | 3 +--
 .../src/test/java/org/apache/juneau/http/header/Accept_Test.java| 2 +-
 .../src/test/java/org/apache/juneau/http/header/Age_Test.java   | 3 +--
 .../src/test/java/org/apache/juneau/http/header/Allow_Test.java | 3 +--
 .../test/java/org/apache/juneau/http/header/Authorization_Test.java | 3 +--
 .../org/apache/juneau/http/header/BasicCsvArrayHeader_Test.java | 2 +-
 .../java/org/apache/juneau/http/header/BasicDateHeader_Test.java| 2 +-
 .../apache/juneau/http/header/BasicEntityTagArrayHeader_Test.java   | 4 +---
 .../org/apache/juneau/http/header/BasicEntityTagHeader_Test.java| 2 +-
 .../java/org/apache/juneau/http/header/BasicIntegerHeader_Test.java | 2 +-
 .../java/org/apache/juneau/http/header/BasicLongHeader_Test.java| 2 +-
 .../apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java  | 2 +-
 .../org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java| 2 +-
 .../java/org/apache/juneau/http/header/BasicStringHeader_Test.java  | 4 +---
 .../apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java | 2 +-
 .../java/org/apache/juneau/http/header/BasicUriHeader_Test.java | 2 +-
 .../test/java/org/apache/juneau/http/header/CacheControl_Test.java  | 3 +--
 .../test/java/org/apache/juneau/http/header/ClientVersion_Test.java | 3 +--
 .../test/java/org/apache/juneau/http/header/Connection_Test.java| 3 +--
 .../java/org/apache/juneau/http/header/ContentDisposition_Test.java | 3 +--
 .../java/org/apache/juneau/http/header/ContentEncoding_Test.java| 3 +--
 .../java/org/apache/juneau/http/header/ContentLanguage_Test.java| 3 +--
 .../test/java/org/apache/juneau/http/header/ContentLength_Test.java | 3 +--
 .../java/org/apache/juneau/http/header/ContentLocation_Test.java| 3 +--
 .../test/java/org/apache/juneau/http/header/ContentRange_Test.java  | 3 +--
 .../java/org/apache/juneau/http/header/ContentType_Match_Test.java  | 2 +-
 .../java/org/apache

[juneau] branch master updated: REST refactoring.

2021-03-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 eb1adbc  REST refactoring.
eb1adbc is described below

commit eb1adbc53355eef4234404a1f83795b0002570f5
Author: JamesBognar 
AuthorDate: Wed Mar 3 12:24:33 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/http/{pair => nvp}/BasicNamedBoolean.java  | 2 +-
 .../java/org/apache/juneau/http/{pair => nvp}/BasicNamedCsvArray.java | 2 +-
 .../java/org/apache/juneau/http/{pair => nvp}/BasicNamedDate.java | 2 +-
 .../java/org/apache/juneau/http/{pair => nvp}/BasicNamedInteger.java  | 2 +-
 .../java/org/apache/juneau/http/{pair => nvp}/BasicNamedLong.java | 2 +-
 .../java/org/apache/juneau/http/{pair => nvp}/BasicNamedString.java   | 2 +-
 .../main/java/org/apache/juneau/http/{pair => nvp}/BasicNamedUri.java | 2 +-
 .../http/response/{StandardResponses.java => HttpResponses.java}  | 2 +-
 .../src/main/java/org/apache/juneau/rest/RequestFormParam.java| 2 +-
 .../src/main/java/org/apache/juneau/rest/RequestPathParam.java| 2 +-
 .../src/main/java/org/apache/juneau/rest/RequestQueryParam.java   | 2 +-
 .../src/main/java/org/apache/juneau/rest/annotation/HookEvent.java| 4 ++--
 .../org/apache/juneau/http/remote/Remote_CommonInterfaces_Test.java   | 2 +-
 .../src/test/java/org/apache/juneau/http/response/Accepted_Test.java  | 2 +-
 .../java/org/apache/juneau/http/response/AlreadyReported_Test.java| 2 +-
 .../test/java/org/apache/juneau/http/response/BadRequest_Test.java| 2 +-
 .../src/test/java/org/apache/juneau/http/response/Conflict_Test.java  | 2 +-
 .../src/test/java/org/apache/juneau/http/response/Continue_Test.java  | 2 +-
 .../src/test/java/org/apache/juneau/http/response/Created_Test.java   | 2 +-
 .../test/java/org/apache/juneau/http/response/EarlyHints_Test.java| 2 +-
 .../java/org/apache/juneau/http/response/ExpectationFailed_Test.java  | 2 +-
 .../java/org/apache/juneau/http/response/FailedDependency_Test.java   | 2 +-
 .../src/test/java/org/apache/juneau/http/response/Forbidden_Test.java | 2 +-
 .../src/test/java/org/apache/juneau/http/response/Found_Test.java | 2 +-
 .../src/test/java/org/apache/juneau/http/response/Gone_Test.java  | 2 +-
 .../test/java/org/apache/juneau/http/response/HttpException_Test.java | 2 +-
 .../org/apache/juneau/http/response/HttpVersionNotSupported_Test.java | 2 +-
 .../src/test/java/org/apache/juneau/http/response/IMUsed_Test.java| 2 +-
 .../java/org/apache/juneau/http/response/InsufficentStorage_Test.java | 2 +-
 .../org/apache/juneau/http/response/InternalServerError_Test.java | 2 +-
 .../java/org/apache/juneau/http/response/LengthRequired_Test.java | 2 +-
 .../src/test/java/org/apache/juneau/http/response/Locked_Test.java| 2 +-
 .../test/java/org/apache/juneau/http/response/LoopDetected_Test.java  | 2 +-
 .../java/org/apache/juneau/http/response/MethodNotAllowed_Test.java   | 2 +-
 .../java/org/apache/juneau/http/response/MisdirectedRequest_Test.java | 2 +-
 .../java/org/apache/juneau/http/response/MovedPermanently_Test.java   | 2 +-
 .../test/java/org/apache/juneau/http/response/MultiStatus_Test.java   | 2 +-
 .../java/org/apache/juneau/http/response/MultipleChoices_Test.java| 2 +-
 .../juneau/http/response/NetworkAuthenticationRequired_Test.java  | 2 +-
 .../src/test/java/org/apache/juneau/http/response/NoContent_Test.java | 2 +-
 .../apache/juneau/http/response/NonAuthoritativeInformation_Test.java | 2 +-
 .../test/java/org/apache/juneau/http/response/NotAcceptable_Test.java | 2 +-
 .../test/java/org/apache/juneau/http/response/NotExtended_Test.java   | 2 +-
 .../src/test/java/org/apache/juneau/http/response/NotFound_Test.java  | 2 +-
 .../java/org/apache/juneau/http/response/NotImplemented_Test.java | 2 +-
 .../test/java/org/apache/juneau/http/response/NotModified_Test.java   | 2 +-
 .../src/test/java/org/apache/juneau/http/response/Ok_Test.java| 2 +-
 .../java/org/apache/juneau/http/response/PartialContent_Test.java | 2 +-
 .../java/org/apache/juneau/http/response/PayloadTooLarge_Test.java| 2 +-
 .../java/org/apache/juneau/http/response/PermanentRedirect_Test.java  | 2 +-
 .../java/org/apache/juneau/http/response/PreconditionFailed_Test.java | 2 +-
 .../org/apache/juneau/http/response/PreconditionRequired_Test.java| 2 +-
 .../test/java/org/apache/juneau/http/response/Processing_Test.java| 2 +-
 .../org/apache/juneau/http/response/RangeNotSatisfiable_Test.java | 2 +-
 .../apache/juneau/http/response/RequestHeaderFieldsTooLarge_Test.java | 2 +-
 .../test/java/org/apache/juneau/http/response/ResetContent_Test.java  | 2 +-
 .../src/test/java/org/apache/juneau/http/response/SeeOther_Test.java  | 2 +-
 .../java/org/apache/juneau/http/response/ServiceUnavailable_Test.java | 2

[juneau] branch master updated: REST refactoring.

2021-03-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 fd74616  REST refactoring.
fd74616 is described below

commit fd74616d34813422e0dac80631a4ad4a041e0d13
Author: JamesBognar 
AuthorDate: Wed Mar 3 12:13:10 2021 -0500

REST refactoring.
---
 .../apache/juneau/http/response/BadRequest.java|  2 +-
 ...{HttpException.java => BasicHttpException.java} | 22 ++---
 .../org/apache/juneau/http/response/Conflict.java  |  2 +-
 .../juneau/http/response/ExpectationFailed.java|  2 +-
 .../juneau/http/response/FailedDependency.java |  2 +-
 .../org/apache/juneau/http/response/Forbidden.java |  2 +-
 .../java/org/apache/juneau/http/response/Gone.java |  2 +-
 .../juneau/http/response/HttpExceptionBuilder.java | 12 
 .../http/response/HttpVersionNotSupported.java |  2 +-
 .../juneau/http/response/InsufficientStorage.java  |  2 +-
 .../juneau/http/response/InternalServerError.java  |  2 +-
 .../juneau/http/response/LengthRequired.java   |  2 +-
 .../org/apache/juneau/http/response/Locked.java|  2 +-
 .../apache/juneau/http/response/LoopDetected.java  |  2 +-
 .../juneau/http/response/MethodNotAllowed.java |  2 +-
 .../juneau/http/response/MisdirectedRequest.java   |  2 +-
 .../response/NetworkAuthenticationRequired.java|  2 +-
 .../apache/juneau/http/response/NotAcceptable.java |  2 +-
 .../apache/juneau/http/response/NotExtended.java   |  2 +-
 .../org/apache/juneau/http/response/NotFound.java  |  2 +-
 .../juneau/http/response/NotImplemented.java   |  2 +-
 .../juneau/http/response/PayloadTooLarge.java  |  2 +-
 .../juneau/http/response/PreconditionFailed.java   |  2 +-
 .../juneau/http/response/PreconditionRequired.java |  2 +-
 .../juneau/http/response/RangeNotSatisfiable.java  |  2 +-
 .../http/response/RequestHeaderFieldsTooLarge.java |  2 +-
 .../juneau/http/response/ServiceUnavailable.java   |  2 +-
 .../juneau/http/response/StandardResponses.java|  6 ++--
 .../juneau/http/response/TooManyRequests.java  |  2 +-
 .../apache/juneau/http/response/Unauthorized.java  |  2 +-
 .../http/response/UnavailableForLegalReasons.java  |  2 +-
 .../juneau/http/response/UnprocessableEntity.java  |  2 +-
 .../juneau/http/response/UnsupportedMediaType.java |  2 +-
 .../juneau/http/response/UpgradeRequired.java  |  2 +-
 .../apache/juneau/http/response/UriTooLong.java|  2 +-
 .../http/response/VariantAlsoNegotiates.java   |  2 +-
 .../org/apache/juneau/rest/RequestAttribute.java   |  2 +-
 .../java/org/apache/juneau/rest/RequestHeader.java |  6 ++--
 .../org/apache/juneau/rest/RequestHttpPart.java| 24 +++
 .../org/apache/juneau/rest/ResponseHandler.java|  4 +--
 .../java/org/apache/juneau/rest/RestContext.java   | 24 +++
 .../java/org/apache/juneau/rest/RestConverter.java |  4 +--
 .../java/org/apache/juneau/rest/RestGuard.java |  8 ++---
 .../java/org/apache/juneau/rest/RestObject.java|  4 +--
 .../apache/juneau/rest/RestOperationInvoker.java   |  4 +--
 .../java/org/apache/juneau/rest/RestRequest.java   |  4 +--
 .../java/org/apache/juneau/rest/RestServlet.java   |  4 +--
 .../apache/juneau/rest/converters/Traversable.java |  4 +--
 .../rest/reshandlers/InputStreamHandler.java   |  2 +-
 .../juneau/rest/reshandlers/ReaderHandler.java |  2 +-
 .../apache/juneau/rest/vars/RequestSwaggerVar.java |  2 +-
 .../juneau/http/response/HttpException_Test.java   | 36 +++---
 .../client/BasicHttpRequestRetryHandler_Test.java  |  4 +--
 53 files changed, 122 insertions(+), 122 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BadRequest.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BadRequest.java
index 5ec6e93..bb935ef 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BadRequest.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BadRequest.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The server cannot or will not process the request due to an apparent client 
error (e.g., malformed request syntax, size too large, invalid request message 
framing, or deceptive request routing).
  */
 @Response(code=STATUS_CODE, description=REASON_PHRASE)
-public class BadRequest extends HttpException {
+public class BadRequest extends BasicHttpException {
private static final long serialVersionUID = 1L;
 
/** HTTP status code */
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpException.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BasicHttpException.java
similarity index 90%
rename from 
juneau-core/juneau-marshall/src/main/java/org/apa

[juneau] branch master updated: Look for createConfig() method on REST classes.

2021-02-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 a5f0224  Look for createConfig() method on REST classes.
a5f0224 is described below

commit a5f0224381de30c98bef940f0dd532c897a777f9
Author: JamesBognar 
AuthorDate: Tue Feb 23 11:53:58 2021 -0500

Look for createConfig() method on REST classes.
---
 TODO.txt  |  5 -
 .../main/java/org/apache/juneau/rest/RestContextBuilder.java  | 11 ++-
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/TODO.txt b/TODO.txt
index a07a6b4..bc99b12 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,12 +1,7 @@
-Replace @Rest(paths) with just @Rest(path)
 ClassInfo improvements to getMethod (e.g. getMethodExact vs getMethod).Re-add 
@PathRemainder annotation.
-Add a createConfig() method on RestContext.
 Thrown NotFound causes - javax.servlet.ServletException: Invalid method 
response: 200
 
-Instead of PropertyStores, builders should produce settings which are passed 
to contexts.
-
 Replace @Bean(findFluentSetters) with @FluentSetters.
-Remove @BeanIgnore annotations from classes.
 HttpResponse should use list of Headers and have a headers(Header...) method.
 HttpResponse should allow you to set code.
 HttpException subclasses can set status, but does it use code?
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index da5f92d..58baa52 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
@@ -238,6 +238,15 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
Object o = resource == null ? null : resource.get();
if (o instanceof Config)
x = (Config)o;
+
+   if (x == null) {
+   x = BeanStore
+   .of(beanStore)
+   .beanCreateMethodFinder(Config.class, 
resourceClass)
+   .find("createConfig")
+   .run();
+   }
+
if (x == null)
x = beanStore.getBean(Config.class).orElse(null);
 
@@ -249,7 +258,7 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
VarResolver vr = 
beanStore.getBean(VarResolver.class).orElseThrow(()->new 
RuntimeException("VarResolver not found."));
String cf = vr.resolve(configPath);
 
-   if ("SYSTEM_DEFAULT".equals(cf))
+   if (x == null && "SYSTEM_DEFAULT".equals(cf))
x = Config.getSystemDefault();
 
if (x == null) {



[juneau] branch master updated: Assertions should display to stderr by default.

2021-02-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 afde3b9  Assertions should display to stderr by default.
afde3b9 is described below

commit afde3b9fafa5f8c97ad23c6e8ed67e74303b4fc8
Author: JamesBognar 
AuthorDate: Tue Feb 23 10:09:19 2021 -0500

Assertions should display to stderr by default.
---
 TODO.txt   |  2 +-
 .../apache/juneau/assertions/ArrayAssertion.java   | 12 ++--
 .../org/apache/juneau/assertions/Assertion.java| 33 ++
 .../apache/juneau/assertions/BeanAssertion.java| 12 ++--
 .../apache/juneau/assertions/BooleanAssertion.java | 12 ++--
 .../juneau/assertions/ByteArrayAssertion.java  | 12 ++--
 .../juneau/assertions/CollectionAssertion.java | 11 ++--
 .../juneau/assertions/ComparableAssertion.java | 12 ++--
 .../apache/juneau/assertions/DateAssertion.java| 11 ++--
 .../juneau/assertions/FluentArrayAssertion.java| 11 ++--
 .../apache/juneau/assertions/FluentAssertion.java  | 12 ++--
 .../juneau/assertions/FluentBaseAssertion.java | 11 ++--
 .../juneau/assertions/FluentBeanAssertion.java | 12 ++--
 .../juneau/assertions/FluentBooleanAssertion.java  | 12 ++--
 .../assertions/FluentByteArrayAssertion.java   | 11 ++--
 .../assertions/FluentCollectionAssertion.java  | 11 ++--
 .../assertions/FluentComparableAssertion.java  | 12 ++--
 .../juneau/assertions/FluentDateAssertion.java | 11 ++--
 .../juneau/assertions/FluentIntegerAssertion.java  | 12 ++--
 .../juneau/assertions/FluentListAssertion.java | 11 ++--
 .../juneau/assertions/FluentLongAssertion.java | 12 ++--
 .../juneau/assertions/FluentMapAssertion.java  | 11 ++--
 .../juneau/assertions/FluentObjectAssertion.java   | 11 ++--
 .../juneau/assertions/FluentStringAssertion.java   | 11 ++--
 .../assertions/FluentThrowableAssertion.java   | 12 ++--
 .../assertions/FluentZonedDateTimeAssertion.java   | 11 ++--
 .../apache/juneau/assertions/IntegerAssertion.java | 12 ++--
 .../apache/juneau/assertions/ListAssertion.java| 11 ++--
 .../apache/juneau/assertions/LongAssertion.java| 12 ++--
 .../org/apache/juneau/assertions/MapAssertion.java | 11 ++--
 .../apache/juneau/assertions/ObjectAssertion.java  | 12 ++--
 .../apache/juneau/assertions/StringAssertion.java  | 12 ++--
 .../juneau/assertions/ThrowableAssertion.java  | 12 ++--
 .../juneau/assertions/ZonedDateTimeAssertion.java  | 11 ++--
 .../assertion/FluentResponseBodyAssertion.java | 11 ++--
 .../assertion/FluentResponseHeaderAssertion.java   | 12 ++--
 .../assertions/FluentProtocolVersionAssertion.java | 12 ++--
 .../assertions/FluentRequestBodyAssertion.java | 10 +--
 .../FluentRequestFormParamAssertion.java   | 12 ++--
 .../assertions/FluentRequestHeaderAssertion.java   | 12 ++--
 .../assertions/FluentRequestLineAssertion.java | 12 ++--
 .../FluentRequestQueryParamAssertion.java  | 12 ++--
 .../java/org/apache/juneau/PojoExamplesTest.java   |  2 +-
 .../juneau/assertions/ArrayAssertion_Test.java |  2 +-
 .../apache/juneau/assertions/Assertions_Test.java  |  4 +--
 .../juneau/assertions/BeanAssertion_Test.java  |  2 +-
 .../juneau/assertions/BooleanAssertion_Test.java   |  2 +-
 .../juneau/assertions/ByteArrayAssertion_Test.java |  2 +-
 .../assertions/CollectionAssertion_Test.java   |  2 +-
 .../assertions/ComparableAssertion_Test.java   |  2 +-
 .../juneau/assertions/DateAssertion_Test.java  |  2 +-
 .../juneau/assertions/IntegerAssertion_Test.java   |  2 +-
 .../juneau/assertions/ListAssertion_Test.java  |  2 +-
 .../juneau/assertions/LongAssertion_Test.java  |  2 +-
 .../juneau/assertions/MapAssertion_Test.java   |  6 ++--
 .../juneau/assertions/ObjectAssertion_Test.java| 18 ++--
 .../juneau/assertions/StringAssertion_Test.java| 28 +-
 .../juneau/assertions/ThrowableAssertion_Test.java |  2 +-
 .../assertions/ZonedDateTimeAssertion_Test.java|  2 +-
 .../java/org/apache/juneau/cp/BeanStore_Test.java  | 24 
 .../apache/juneau/http/HeaderSupplier_Test.java|  2 +-
 .../juneau/http/NameValuePairSupplier_Test.java|  2 +-
 .../apache/juneau/http/header/RetryAfter_Test.java |  2 +-
 .../org/apache/juneau/mstat/ThrownStore_Test.java  |  8 +++---
 .../rest/annotation/RestAnnotation_Test.java   |  2 +-
 .../juneau/rest/annotation/Rest_Messages_Test.java |  4 +--
 .../rest/client/RestClient_Logging_Test.java   |  4 +--
 67 files changed, 469 insertions(+), 158 deletions(-)

diff --git a/TODO.txt b/TODO.txt
index 6dd1bce..a07a6b4 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -13,4

[juneau] branch master updated: Clean up unnecessary @BeanIgnore annotations.

2021-02-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 5b4ebb4  Clean up unnecessary @BeanIgnore annotations.
5b4ebb4 is described below

commit 5b4ebb47fcfb37d29a598d1439805fb0acf10db9
Author: JamesBognar 
AuthorDate: Tue Feb 23 09:39:41 2021 -0500

Clean up unnecessary @BeanIgnore annotations.
---
 TODO.txt   |  3 ++
 .../apache/juneau/config/event/ConfigEvent.java|  2 -
 .../apache/juneau/dto/jsonschema/JsonSchema.java   | 10 
 .../src/main/java/org/apache/juneau/BeanMeta.java  |  1 -
 .../java/org/apache/juneau/BeanPropertyMeta.java   |  1 -
 .../src/main/java/org/apache/juneau/ClassMeta.java |  4 +-
 .../src/main/java/org/apache/juneau/Context.java   |  1 -
 .../java/org/apache/juneau/http/BasicHeader.java   |  2 +-
 .../org/apache/juneau/http/BasicHttpEntity.java|  2 +
 .../org/apache/juneau/http/BasicNameValuePair.java |  2 +-
 .../apache/juneau/http/BasicNamedAttribute.java|  2 +
 .../java/org/apache/juneau/http/MediaRange.java|  2 -
 .../juneau/http/exception/HttpException.java   |  2 +-
 .../apache/juneau/http/header/BasicDateHeader.java |  2 -
 .../org/apache/juneau/http/header/ContentType.java |  2 -
 .../org/apache/juneau/http/response/Found.java |  2 -
 .../apache/juneau/http/response/HttpResponse.java  |  2 +-
 .../juneau/http/response/MovedPermanently.java |  2 -
 .../juneau/http/response/PermanentRedirect.java|  2 -
 .../org/apache/juneau/http/response/SeeOther.java  |  2 -
 .../juneau/http/response/TemporaryRedirect.java|  2 -
 .../java/org/apache/juneau/reflect/ClassInfo.java  |  1 -
 .../org/apache/juneau/reflect/ConstructorInfo.java |  2 -
 .../java/org/apache/juneau/reflect/FieldInfo.java  |  2 -
 .../java/org/apache/juneau/reflect/MethodInfo.java |  1 -
 .../java/org/apache/juneau/reflect/ParamInfo.java  |  3 +-
 .../java/org/apache/juneau/transform/PojoSwap.java |  1 -
 .../org/apache/juneau/rest/RequestPathParams.java  |  2 -
 .../java/org/apache/juneau/rest/RestContext.java   |  4 --
 .../apache/juneau/rest/util/UrlPathMatcher.java|  2 -
 .../java/org/apache/juneau/PojoExamplesTest.java   |  2 +-
 .../juneau/config/ConfigMapListenerTest.java   | 62 +++---
 32 files changed, 45 insertions(+), 87 deletions(-)

diff --git a/TODO.txt b/TODO.txt
index 5051df9..6dd1bce 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -11,3 +11,6 @@ HttpResponse should use list of Headers and have a 
headers(Header...) method.
 HttpResponse should allow you to set code.
 HttpException subclasses can set status, but does it use code?
 HttpException should use list of Headers and have a headers(Header...) method.
+
+JsonSchema should have fluent getters and setters.
+Assertions should display to stderr by default.
diff --git 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvent.java
 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvent.java
index 22ecee9..3acfc7b 100644
--- 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvent.java
+++ 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvent.java
@@ -17,13 +17,11 @@ import static 
org.apache.juneau.config.event.ConfigEventType.*;
 
 import java.util.*;
 
-import org.apache.juneau.annotation.*;
 import org.apache.juneau.internal.*;
 
 /**
  * Represents a change to a config.
  */
-@BeanIgnore
 public class ConfigEvent {
 
private final ConfigEventType type;
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/JsonSchema.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/JsonSchema.java
index 1fbf719..e323c9e 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/JsonSchema.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/JsonSchema.java
@@ -95,7 +95,6 @@ public class JsonSchema {
 *
 * @return The value of the name property on this 
bean, or null if it is not set.
 */
-   @BeanIgnore
public String getName() {
return name;
}
@@ -106,7 +105,6 @@ public class JsonSchema {
 * @param name The new value for the name property 
on this bean.
 * @return This object (for method chaining).
 */
-   @BeanIgnore
public JsonSchema setName(String name) {
this.name = name;
return this;
@@ -231,7 +229,6 @@ public class JsonSchema {
 * @return
 *  The currently set value, or null if the property is 
not set, or is set as a {@link JsonTypeArray}.
 */
-   @BeanIgnore
public JsonType getTypeAsJsonType() {
return typeJsonType;
}
@@ -244,7 +241,6

[juneau] branch master updated: Assertion.assertNotNull methods should be generic.

2021-02-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 786bf27  Assertion.assertNotNull methods should be generic.
786bf27 is described below

commit 786bf272666dac7afb8b1c941f1c54f3ae9098b3
Author: JamesBognar 
AuthorDate: Tue Feb 23 08:59:59 2021 -0500

Assertion.assertNotNull methods should be generic.
---
 TODO.txt| 13 +
 .../main/java/org/apache/juneau/assertions/Assertion.java   |  4 ++--
 2 files changed, 3 insertions(+), 14 deletions(-)

diff --git a/TODO.txt b/TODO.txt
index 1f4543a..5051df9 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,13 +1,5 @@
-RestCall.exception(...) should accumulate exceptions, not just one.
-Replace RestInfoProvider with Swagger.
-xxx Rework RestCallLogger.
-xxx @Rest(path) should allow you to match against file name (e.g. 
"favicon.ico")
 Replace @Rest(paths) with just @Rest(path)
-Auto-injection into REST interfaces (via providers?)
-ClassInfo improvements to getMethod (e.g. getMethodExact vs getMethod).
-Re-add @PathRemainder annotation.
-xxx Replace RestResourceResolver with ObjectFactory (or something already 
predefined?).
-xxx Remove @Rest(properties) and all that stuff.
+ClassInfo improvements to getMethod (e.g. getMethodExact vs getMethod).Re-add 
@PathRemainder annotation.
 Add a createConfig() method on RestContext.
 Thrown NotFound causes - javax.servlet.ServletException: Invalid method 
response: 200
 
@@ -17,8 +9,5 @@ Replace @Bean(findFluentSetters) with @FluentSetters.
 Remove @BeanIgnore annotations from classes.
 HttpResponse should use list of Headers and have a headers(Header...) method.
 HttpResponse should allow you to set code.
-Assertion.assertNotNull methods should be generic?
 HttpException subclasses can set status, but does it use code?
 HttpException should use list of Headers and have a headers(Header...) method.
-Add Named bean support by looking for @Named annotations.
-Rename BeanFactory to BeanStore.
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
index ae19473..f05aeb1 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
@@ -149,7 +149,7 @@ public class Assertion {
 * @param args The message arguments.
 * @return The value.
 */
-   protected Object assertNotNull(Object value, String msg, Object...args) 
{
+   protected  T assertNotNull(T value, String msg, Object...args) {
if (value == null)
throw new BasicAssertionError(format(msg, args));
return value;
@@ -162,7 +162,7 @@ public class Assertion {
 * @param value The value to check.
 * @return The value.
 */
-   protected Object assertNotNull(String parameter, Object value) {
+   protected  T assertNotNull(String parameter, T value) {
return assertNotNull(value, "Parameter ''{0}'' cannot be 
null.", parameter);
}
 



[juneau] branch master updated: Add support for named beans in BeanStore.

2021-02-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 d7cd102  Add support for named beans in BeanStore.
d7cd102 is described below

commit d7cd1024e967e23720ddf6b227ba9be3a7c92930
Author: JamesBognar 
AuthorDate: Mon Feb 22 19:43:01 2021 -0500

Add support for named beans in BeanStore.
---
 .../apache/juneau/cp/BeanCreateMethodFinder.java   |   4 +-
 .../main/java/org/apache/juneau/cp/BeanStore.java  | 124 ++---
 .../org/apache/juneau/utils/MethodInvoker.java |   4 +-
 .../juneau/rest/springboot/SpringBeanStore.java|   9 +-
 .../org/apache/juneau/rest/RestContextBuilder.java |   6 +-
 .../{BeanFactory_Test.java => BeanStore_Test.java} |  73 ++--
 6 files changed, 163 insertions(+), 57 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreateMethodFinder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreateMethodFinder.java
index 138b52b..d52596f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreateMethodFinder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreateMethodFinder.java
@@ -76,10 +76,10 @@ public class BeanCreateMethodFinder {
ClassInfo ci = ClassInfo.of(resource);
for (MethodInfo m : ci.getPublicMethods()) {
if (m.isAll(NOT_DEPRECATED) && 
m.hasReturnType(beanType) && m.getSimpleName().equals(methodName) && 
(!m.hasAnnotation(BeanIgnore.class))) {
-   List missing = 
beanStore.getMissingParamTypes(m.getParamTypes());
+   List missing = 
beanStore.getMissingParamTypes(m.getParams());
if (missing.isEmpty() && 
m.hasAllArgs(requiredParams)) {
this.method = m;
-   this.args = 
beanStore.getParams(m.getParamTypes());
+   this.args = 
beanStore.getParams(m.getParams());
}
}
}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java
index 16e2af5..dc564e1 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java
@@ -15,6 +15,7 @@ package org.apache.juneau.cp;
 import static org.apache.juneau.internal.StringUtils.*;
 import static org.apache.juneau.reflect.ReflectFlags.*;
 
+import java.lang.annotation.*;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.function.*;
@@ -28,7 +29,7 @@ import org.apache.juneau.reflect.*;
 
 /**
  * Java bean store.
- * 
+ *
  * 
  * Used for bean injection.
  */
@@ -39,7 +40,7 @@ public class BeanStore {
 */
public static final class Null extends BeanStore {}
 
-   private final Map,Supplier> beanMap = new 
ConcurrentHashMap<>();
+   private final Map> beanMap = new 
ConcurrentHashMap<>();
private final Optional parent;
private final Optional outer;
 
@@ -92,17 +93,19 @@ public class BeanStore {
}
 
/**
-* Returns the bean of the specified type.
+* Returns the named bean of the specified type.
 *
 * @param  The type of bean to return.
 * @param c The type of bean to return.
+* @param name The bean name.
 * @return The bean.
 */
@SuppressWarnings("unchecked")
-   public  Optional getBean(Class c) {
-   Supplier o = beanMap.get(c);
+   public  Optional getBean(String name, Class c) {
+   String key = name == null ? c.getName() : name;
+   Supplier o = beanMap.get(key);
if (o == null && parent.isPresent())
-   return parent.get().getBean(c);
+   return parent.get().getBean(name, c);
T t = (T)(o == null ? null : o.get());
return Optional.ofNullable(t);
}
@@ -110,11 +113,12 @@ public class BeanStore {
/**
 * Returns the bean of the specified type.
 *
+* @param  The type of bean to return.
 * @param c The type of bean to return.
 * @return The bean.
 */
-   public Optional getBean(ClassInfo c) {
-   return getBean(c.inner());
+   public  Optional getBean(Class c) {
+   return getBean(c.getName(), c);
}
 
  

[juneau] branch master updated: REST refactoring.

2021-02-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 b51c5a7  REST refactoring.
b51c5a7 is described below

commit b51c5a770fb0f36b158fd7b3d6fb0d12555c9763
Author: JamesBognar 
AuthorDate: Sun Feb 21 18:00:13 2021 -0500

REST refactoring.
---
 .../main/ConfigurablePropertyCodeGenerator.java| 230 ++---
 .../apache/juneau/assertions/ArrayAssertion.java   |   6 +
 .../apache/juneau/assertions/BeanAssertion.java|   8 +-
 .../apache/juneau/assertions/BooleanAssertion.java |   6 +
 .../juneau/assertions/ByteArrayAssertion.java  |   6 +
 .../juneau/assertions/CollectionAssertion.java |   6 +
 .../juneau/assertions/ComparableAssertion.java |   6 +
 .../apache/juneau/assertions/DateAssertion.java|   6 +
 .../juneau/assertions/FluentArrayAssertion.java|   6 +
 .../apache/juneau/assertions/FluentAssertion.java  |   6 +
 .../juneau/assertions/FluentBaseAssertion.java |   6 +
 .../juneau/assertions/FluentBeanAssertion.java |   6 +
 .../juneau/assertions/FluentBooleanAssertion.java  |   6 +
 .../assertions/FluentByteArrayAssertion.java   |   6 +
 .../assertions/FluentCollectionAssertion.java  |   6 +
 .../assertions/FluentComparableAssertion.java  |   8 +-
 .../juneau/assertions/FluentDateAssertion.java |   6 +
 .../juneau/assertions/FluentIntegerAssertion.java  |   6 +
 .../juneau/assertions/FluentListAssertion.java |   6 +
 .../juneau/assertions/FluentLongAssertion.java |   6 +
 .../juneau/assertions/FluentMapAssertion.java  |   6 +
 .../juneau/assertions/FluentObjectAssertion.java   |   6 +
 .../juneau/assertions/FluentStringAssertion.java   |   6 +
 .../assertions/FluentThrowableAssertion.java   |   6 +
 .../assertions/FluentZonedDateTimeAssertion.java   |   6 +
 .../apache/juneau/assertions/IntegerAssertion.java |   6 +
 .../apache/juneau/assertions/ListAssertion.java|   6 +
 .../apache/juneau/assertions/LongAssertion.java|   6 +
 .../org/apache/juneau/assertions/MapAssertion.java |   6 +
 .../apache/juneau/assertions/ObjectAssertion.java  |   8 +-
 .../apache/juneau/assertions/StringAssertion.java  |   6 +
 .../juneau/assertions/ThrowableAssertion.java  |   8 +-
 .../juneau/assertions/ZonedDateTimeAssertion.java  |   6 +
 .../juneau/rest/mock/MockRestClientBuilder.java|   2 +
 34 files changed, 312 insertions(+), 120 deletions(-)

diff --git a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java 
b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
index e16cf75..fcb993f 100644
--- a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++ b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
@@ -50,173 +50,171 @@ import org.apache.juneau.xml.*;
 public class ConfigurablePropertyCodeGenerator {
 
static Class[] classes = new Class[]{
+   Accepted.class,
+   AlreadyReported.class,
+   AnnotationBuilder.class,
+   ArrayAssertion.class,
+   Assertion.class,
+   BadRequest.class,
+   BasicHeader.class,
+   BasicHttpEntity.class,
+   BasicHttpResource.class,
+   BasicNameValuePair.class,
BasicRuntimeException.class,
+   BeanAssertion.class,
BeanContextBuilder.class,
+   BeanSessionArgs.class,
BeanTraverseBuilder.class,
+   BooleanAssertion.class,
+   ByteArrayAssertion.class,
+   CollectionAssertion.class,
+   ComparableAssertion.class,
ConfigBuilder.class,
ConfigClasspathStoreBuilder.class,
ConfigFileStoreBuilder.class,
ConfigMemoryStoreBuilder.class,
ConfigStoreBuilder.class,
+   Conflict.class,
+   ConstructorInfo.class,
ContextBuilder.class,
+   Continue.class,
+   Created.class,
CsvParserBuilder.class,
CsvSerializerBuilder.class,
+   DateAssertion.class,
+   EarlyHints.class,
+   ExecutableInfo.class,
+   ExpectationFailed.class,
+   FailedDependency.class,
+   FluentArrayAssertion.class,
+   FluentAssertion.class,
+   FluentBaseAssertion.class,
+   FluentBeanAssertion.class,
+   FluentBooleanAssertion.class,
+   FluentByteArrayAssertion.class,
+   FluentCollectionAssertion.class,
+   FluentComparableAssertion.class,
+   FluentDateAssertion.class,
+   FluentIntegerAssertion.class,
+   FluentListAssertion.class,
+   FluentLongAssertion.class

[juneau] branch master updated: REST refactoring.

2021-02-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 4316a93  REST refactoring.
4316a93 is described below

commit 4316a935bf7ed327dd031b3fbc5d8e335b1f9971
Author: JamesBognar 
AuthorDate: Sun Feb 21 17:37:26 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/BeanSessionArgs.java|   4 +-
 .../main/java/org/apache/juneau/SessionArgs.java   |   2 +-
 .../java/org/apache/juneau/SessionProperties.java  |   6 +-
 .../apache/juneau/http/BasicNamedAttribute.java|  40 ++-
 .../apache/juneau/parser/ParserSessionArgs.java|   2 +-
 .../juneau/serializer/SerializerSessionArgs.java   |   2 +-
 .../org/apache/juneau/rest/RequestAttribute.java   |  74 ++
 .../org/apache/juneau/rest/RequestAttributes.java  | 279 +++--
 .../java/org/apache/juneau/rest/RequestBody.java   |   2 +-
 .../org/apache/juneau/rest/RequestFormParams.java  |  22 +-
 .../org/apache/juneau/rest/RequestHeaders.java |  30 ++-
 .../org/apache/juneau/rest/RequestPathParams.java  |  28 ++-
 .../org/apache/juneau/rest/RequestQueryParams.java |  21 +-
 .../apache/juneau/rest/RestOperationContext.java   |   2 +-
 .../java/org/apache/juneau/rest/RestRequest.java   |   9 +-
 .../org/apache/juneau/rest/args/AttributeArg.java  |  10 +-
 .../juneau/rest/reshandlers/DefaultHandler.java|   2 +-
 .../org/apache/juneau/rest/util/UrlPathMatch.java  |   4 +-
 .../juneau/rest/vars/RequestAttributeVar.java  |   4 +-
 .../org/apache/juneau/rest/vars/RequestVar.java|   2 +-
 .../juneau/rest/vars/SerializedRequestAttrVar.java |   4 +-
 .../apache/juneau/rest/widget/MenuItemWidget.java  |   4 +-
 .../juneau/rest/annotation/RestHook_Test.java  |  22 +-
 .../juneau/rest/annotation/Rest_RVars_Test.java|   2 +-
 .../rest/annotation/Restx_ReqAttrs_Test.java   |  52 ++--
 25 files changed, 410 insertions(+), 219 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java
index cacf2c2..7fded29 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java
@@ -87,7 +87,7 @@ public class BeanSessionArgs extends SessionArgs {
}
 
@Override /* GENERATED - SessionArgs */
-   public BeanSessionArgs properties(OMap value) {
+   public BeanSessionArgs properties(Map value) {
super.properties(value);
return this;
}
@@ -110,7 +110,7 @@ public class BeanSessionArgs extends SessionArgs {
public OMap toMap() {
return super.toMap()
.a(
-   "BeanSessionArgs", 
+   "BeanSessionArgs",
OMap
.create()
.filtered()
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java
index ed60c1c..20e88a0 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java
@@ -132,7 +132,7 @@ public class SessionArgs {
 * @return This object (for method chaining).
 */
@FluentSetter
-   public SessionArgs properties(OMap value) {
+   public SessionArgs properties(Map value) {
this.properties = SessionProperties.create(value);
return this;
}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java
index d4bc6c3..921758d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java
@@ -42,15 +42,15 @@ public class SessionProperties {
 * @param inner The initial contents of these properties.
 * @return A new instance of this class.
 */
-   public static SessionProperties create(OMap inner) {
+   public static SessionProperties create(Map inner) {
return new SessionProperties(inner);
}
 
/**
 * Constructor.
 */
-   private SessionProperties(OMap inner) {
-   this.map = inner == null ? new OMap() : inner;
+   private SessionProperties(Map inner) {
+   this.map = inner == null ? new OMap() : inner instanceof OMap ? 
(OMap)inner : new OMap(inner);
}
 
  

[juneau] branch master updated: REST refactoring.

2021-02-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 bd06ea3  REST refactoring.
bd06ea3 is described below

commit bd06ea39d2dd2f1731c2200d655ed6be9b3bc136
Author: JamesBognar 
AuthorDate: Sun Feb 21 11:51:39 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RequestPath.java   | 357 --
 .../org/apache/juneau/rest/RequestPathParam.java   | 293 
 .../org/apache/juneau/rest/RequestPathParams.java  | 512 +
 .../apache/juneau/rest/RestOperationContext.java   |  13 -
 .../java/org/apache/juneau/rest/RestRequest.java   |  59 +--
 .../apache/juneau/rest/annotation/HookEvent.java   |   2 +-
 .../org/apache/juneau/rest/annotation/Rest.java|   2 +-
 .../java/org/apache/juneau/rest/args/PathArg.java  |  12 +-
 .../apache/juneau/rest/args/RequestPathArg.java|  10 +-
 .../apache/juneau/rest/converters/Traversable.java |   2 +-
 .../apache/juneau/rest/vars/RequestPathVar.java|   6 +-
 .../http/remote/Remote_PathAnnotation_Test.java|  10 +-
 .../java/org/apache/juneau/rest/Paths_Test.java|   4 +-
 .../org/apache/juneau/rest/RestOp_Params_Test.java |   2 +-
 .../apache/juneau/rest/annotation/Path_Test.java   |  28 +-
 15 files changed, 869 insertions(+), 443 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestPath.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestPath.java
deleted file mode 100644
index fa15203..000
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestPath.java
+++ /dev/null
@@ -1,357 +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;
-
-import static org.apache.juneau.internal.StringUtils.*;
-
-import java.lang.reflect.*;
-import java.util.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
-import org.apache.juneau.httppart.*;
-import org.apache.juneau.oapi.*;
-import org.apache.juneau.parser.*;
-import org.apache.juneau.http.exception.*;
-
-/**
- * Contains information about the matched path on the HTTP request.
- *
- * 
- * Provides access to the matched path variables and path match remainder.
- *
- * 
- * {@doc RestmRequestPathMatch}
- * 
- */
-public class RequestPath extends TreeMap {
-   private static final long serialVersionUID = 1L;
-
-   private final RestRequest req;
-   private HttpPartParserSession parser;
-
-   RequestPath(RestRequest req) {
-   super(String.CASE_INSENSITIVE_ORDER);
-   this.req = req;
-   }
-
-   RequestPath parser(HttpPartParserSession parser) {
-   this.parser = parser;
-   return this;
-   }
-
-   RequestPath remainder(String remainder) {
-   put("/**", remainder);
-   put("/*", urlDecode(remainder));
-   return this;
-   }
-
-   /**
-* Sets a request query parameter value.
-*
-* @param name The parameter name.
-* @param value The parameter value.
-*/
-   public void put(String name, Object value) {
-   super.put(name, value.toString());
-   }
-
-   /**
-* Returns the specified path parameter converted t

[juneau] branch master updated: REST refactoring.

2021-02-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 13d5801  REST refactoring.
13d5801 is described below

commit 13d5801fe348ca7a61154f4c2892df9c50b3e368
Author: JamesBognar 
AuthorDate: Sat Feb 20 16:41:02 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/http/BasicHeader.java   |  12 ++
 .../java/org/apache/juneau/rest/RequestBody.java   |   8 +-
 .../org/apache/juneau/rest/RequestFormParams.java  |   3 +-
 .../java/org/apache/juneau/rest/RestRequest.java   | 170 ++---
 .../org/apache/juneau/rest/args/TimeZoneArg.java   |   2 +-
 5 files changed, 103 insertions(+), 92 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
index 7d73d03..1e159cd 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
@@ -242,6 +242,18 @@ public class BasicHeader implements Header, Cloneable, 
Serializable {
}
 
/**
+* Returns true if the value exists and is not empty.
+*
+* 
+* This is a shortcut for calling 
!asString().orElse("").isEmpty().
+*
+* @return true if the value exists and is not empty.
+*/
+   public boolean isNotEmpty() {
+   return ! asString().orElse("").isEmpty();
+   }
+
+   /**
 * If a value is present, returns the value, otherwise throws {@link 
NoSuchElementException}.
 *
 * 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
index 91e4305..f83cf30 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
@@ -364,10 +364,10 @@ public class RequestBody {
private MediaType getMediaType() {
if (mediaType != null)
return mediaType;
-   Optional ct = req.getContentType();
+   ContentType ct = req.getContentType();
if (!ct.isPresent() && body != null)
return MediaType.UON;
-   return ct.isPresent() ? ct.get().asMediaType().orElse(null) : 
null;
+   return ct.isNotEmpty() ? ct.asMediaType().orElse(null) : null;
}
 
/**
@@ -476,10 +476,10 @@ public class RequestBody {
if ((isEmpty(mt) || mt.toString().startsWith("text/plain")) && 
cm.hasStringMutater())
return cm.getStringMutater().mutate(asString());
 
-   Optional ct = req.getContentType();
+   ContentType ct = req.getContentType();
throw new UnsupportedMediaType(
"Unsupported media-type in request header 
''Content-Type'': ''{0}''\n\tSupported media-types: {1}",
-   ct.isPresent() ? ct.get().asMediaType().orElse(null) : 
"not-specified", req.getOpContext().getParsers().getSupportedMediaTypes()
+   ct.isPresent() ? ct.asMediaType().orElse(null) : 
"not-specified", req.getOpContext().getParsers().getSupportedMediaTypes()
);
}
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestFormParams.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestFormParams.java
index 2874708..f8ada01 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestFormParams.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestFormParams.java
@@ -23,7 +23,6 @@ import javax.servlet.http.*;
 
 import org.apache.http.*;
 import org.apache.juneau.collections.*;
-import org.apache.juneau.http.header.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.rest.util.*;
@@ -49,7 +48,7 @@ public class RequestFormParams {
Collection c = null;
 
RequestBody body = req.getBody();
-   if (body.isLoaded() || ! 
req.getContentType().orElse(ContentType.TEXT_PLAIN).equalsIgnoreCase("multipart/form-data"))
+   if (body.isLoaded() || ! 
req.getContentType().equalsIgnoreCase("multipart/form-data"))
m = RestUtils.parseQuery(body.getReader());
else {
c = req.getHttpServletRequest().getParts();
diff --git 
a/juneau-rest

[juneau] branch master updated: REST refactoring.

2021-02-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 c8390e2  REST refactoring.
c8390e2 is described below

commit c8390e2b27ee4ca2d7c2554a640eff55c372fb1c
Author: JamesBognar 
AuthorDate: Sat Feb 20 14:10:05 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RequestHeader.java | 243 ++
 .../org/apache/juneau/rest/RequestHttpPart.java| 272 +
 .../org/apache/juneau/rest/RequestQueryParam.java  | 249 ++-
 .../rest/Rest_PredefinedStatusCodes_Test.java  |   2 +-
 4 files changed, 310 insertions(+), 456 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
index bcb0bdc..fd999ce 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
@@ -13,32 +13,23 @@
 package org.apache.juneau.rest;
 
 import static org.apache.juneau.httppart.HttpPartType.*;
-import java.lang.reflect.*;
+
 import java.time.*;
 import java.util.*;
-import java.util.regex.*;
 
 import org.apache.http.*;
 import org.apache.juneau.*;
 import org.apache.juneau.http.*;
-import org.apache.juneau.http.exception.*;
 import org.apache.juneau.http.exception.HttpException;
 import org.apache.juneau.http.header.*;
 import org.apache.juneau.httppart.*;
-import org.apache.juneau.oapi.*;
-import org.apache.juneau.parser.ParseException;
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.assertions.*;
 
 /**
  * Represents a single header on an HTTP request.
  */
-public class RequestHeader implements Header {
-
-   private final String name, value;
-   private final RestRequest request;
-   private HttpPartParserSession parser;
-   private HttpPartSchema schema;
+public class RequestHeader extends RequestHttpPart implements Header {
 
/**
 * Constructor.
@@ -48,45 +39,7 @@ public class RequestHeader implements Header {
 * @param value The header value.
 */
public RequestHeader(RestRequest request, String name, String value) {
-   this.request = request;
-   this.name = name;
-   this.value = value;
-   parser(null);
-   }
-
-   
//--
-   // Setters
-   
//--
-
-   /**
-* Specifies the part schema for this header.
-*
-* 
-* Used by schema-based part parsers such as {@link OpenApiParser}.
-*
-* @param value
-*  The part schema.
-* @return This object (for method chaining).
-*/
-   public RequestHeader schema(HttpPartSchema value) {
-   this.schema = value;
-   return this;
-   }
-
-   /**
-* Specifies the part parser to use for this header.
-*
-* 
-* If not specified, uses the part parser defined on the client by 
calling {@link RestContextBuilder#partParser(Class)}.
-*
-* @param value
-*  The new part parser to use for this header.
-*  If null, {@link SimplePartParser#DEFAULT} will be 
used.
-* @return This object (for method chaining).
-*/
-   public RequestHeader parser(HttpPartParserSession value) {
-   this.parser = value == null ? SimplePartParser.DEFAULT_SESSION 
: value;
-   return this;
+   super(HEADER, request, name, value);
}
 

//--
@@ -94,52 +47,6 @@ public class RequestHeader implements Header {

//--
 
/**
-* Returns true if this header exists on the request.
-*
-* 
-* This is a shortened form for calling asString().isPresent().
-*
-* @return true if this header exists on the request.
-*/
-   public boolean isPresent() {
-   return asString().isPresent();
-   }
-
-   /**
-* If a value is present, returns the value, otherwise throws {@link 
NoSuchElementException}.
-*
-* 
-* This is a shortened form for calling asString().get().
-*
-* @return The value if present.
-*/
-   public String get

[juneau] branch master updated: REST refactoring.

2021-02-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 ee89873  REST refactoring.
ee89873 is described below

commit ee8987393f48ee0d647c22ca6464e662c6a83c39
Author: JamesBognar 
AuthorDate: Sat Feb 20 13:37:48 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/rest/RequestHeaders.java | 223 
 .../org/apache/juneau/rest/RequestQueryParams.java | 291 ++---
 .../java/org/apache/juneau/rest/RestRequest.java   |   2 +-
 .../org/apache/juneau/rest/args/HasQueryArg.java   |   4 +-
 .../juneau/rest/annotation/HasQuery_Test.java  |   4 +-
 5 files changed, 322 insertions(+), 202 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
index c5ddde4..6815735 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
@@ -23,7 +23,6 @@ import java.util.*;
 import java.util.function.*;
 
 import org.apache.http.*;
-import org.apache.http.message.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.collections.*;
@@ -34,7 +33,7 @@ import org.apache.juneau.http.header.Date;
  * Represents the headers in an HTTP request.
  *
  * 
- * Entries are stored in a case-insensitive map.
+ * Entries are stored in a case-insensitive map unless overridden via the 
constructor.
  *
  * 
  * {@doc RestmRequestHeaders}
@@ -83,12 +82,23 @@ public class RequestHeaders {
}
 
/**
+* Copy constructor.
+*/
+   private RequestHeaders(RequestHeaders copyFrom) {
+   req = copyFrom.req;
+   caseSensitive = copyFrom.caseSensitive;
+   parser = copyFrom.parser;
+   list.addAll(copyFrom.list);
+   map.putAll(copyFrom.map);
+   }
+
+   /**
 * Subset constructor.
 */
-   RequestHeaders(RestRequest req, Map> 
headerMap, HttpPartParserSession parser, boolean caseSensitive) {
+   private RequestHeaders(RestRequest req, Map> 
headerMap, HttpPartParserSession parser, boolean caseSensitive) {
this.req = req;
-   this.map.putAll(headerMap);
-   this.list = 
headerMap.values().stream().flatMap(List::stream).collect(toList());
+   map.putAll(headerMap);
+   list = 
headerMap.values().stream().flatMap(List::stream).collect(toList());
this.parser = parser;
this.caseSensitive = caseSensitive;
}
@@ -132,74 +142,68 @@ public class RequestHeaders {
}
 
/**
-* Returns the first header with the specified name.
-*
-* 
-* Note that this method never returns null and that {@link 
RequestHeader#isPresent()} can be used
-* to test for the existence of the header.
+* Returns all the headers with the specified name.
 *
 * @param name The header name.  Must not be null.
-* @return The header.  Never null.
+* @return The list of all headers with the specified name, or an empty 
list if none are found.
 */
-   public RequestHeader getFirst(String name) {
+   public List getAll(String name) {
assertArgNotNull("name", name);
List l = map.get(key(name));
-   return (l == null || l.isEmpty() ? new RequestHeader(req, name, 
null).parser(parser) : l.get(0));
+   return unmodifiableList(l == null ? emptyList() : l);
}
 
/**
-* Returns the last header with the specified name.
-*
-* 
-* Note that this method never returns null and that {@link 
RequestHeader#isPresent()} can be used
-* to test for the existence of the header.
+* Returns all the headers in this request.
 *
-* @param name The header name.  Must not be null.
-* @return The header.  Never null.
+* @return All the headers in this request.
 */
-   public RequestHeader getLast(String name) {
-   assertArgNotNull("name", name);
-   List l = map.get(key(name));
-   return (l == null || l.isEmpty() ? new RequestHeader(req, name, 
null).parser(parser) : l.get(l.size()-1));
+   public List getAll() {
+   return unmodifiableList(list);
}
 
/**
-* Returns all the headers with the specified name.
+* Returns true if the headers with the specified names are 
present.
 *
-* @param name The header name.  Must not be null.
-   

[juneau] branch master updated: REST refactoring.

2021-02-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 7fbc620  REST refactoring.
7fbc620 is described below

commit 7fbc62027619a2825bca94342d8049d93a2b1bcd
Author: JamesBognar 
AuthorDate: Sat Feb 20 13:06:18 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/http/BasicHeader.java   |  41 -
 .../juneau/http/header/BasicStringHeader.java  |  19 +--
 .../apache/juneau/rest/client/ResponseHeader.java  |  17 ++-
 .../org/apache/juneau/rest/client/RestClient.java  |   2 +-
 .../java/org/apache/juneau/rest/RequestBody.java   |   4 +-
 .../java/org/apache/juneau/rest/RequestHeader.java |  19 ++-
 .../org/apache/juneau/rest/RequestHeaders.java |   4 +-
 .../org/apache/juneau/rest/RequestQueryParam.java  |  17 ++-
 .../org/apache/juneau/rest/RequestQueryParams.java |   4 +-
 .../java/org/apache/juneau/rest/RestRequest.java   | 165 +++--
 .../java/org/apache/juneau/rest/RestResponse.java  |   2 +-
 .../org/apache/juneau/rest/args/HeaderArg.java |   4 +-
 .../apache/juneau/rest/args/RequestHeadersArg.java |   4 +-
 .../org/apache/juneau/rest/args/TimeZoneArg.java   |   4 +-
 .../juneau/rest/reshandlers/DefaultHandler.java|   6 +-
 .../juneau/http/SerializedHttpEntity_Test.java |   2 +-
 .../http/remote/Remote_HeaderAnnotation_Test.java  |   2 +-
 .../org/apache/juneau/http/remote/Remote_Test.java |   2 +-
 .../org/apache/juneau/rest/RestOp_Params_Test.java |   2 +-
 .../juneau/rest/annotation/RestHook_Test.java  |  14 +-
 .../rest/client/RestClient_BasicCalls_Test.java|   2 +-
 .../juneau/rest/client/RestClient_Body_Test.java   |   2 +-
 .../client/RestClient_CallbackStrings_Test.java|   2 +-
 .../client/RestClient_Config_BeanContext_Test.java |   4 +-
 .../client/RestClient_Config_OpenApi_Test.java |   2 +-
 .../client/RestClient_Config_RestClient_Test.java  |   4 +-
 .../rest/client/RestClient_Headers_Test.java   |   2 +-
 .../client/RestClient_Response_Headers_Test.java   |   8 +-
 .../rest/client/RestClient_Response_Test.java  |  10 +-
 29 files changed, 156 insertions(+), 214 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
index 400192e..d5585d5 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
@@ -221,12 +221,49 @@ public class BasicHeader implements Header, Cloneable, 
Serializable {
}
 
/**
+* Returns the value of this header as a string.
+*
+* @return The value of this header as a string, or {@link 
Optional#empty()} if the value is null
+*/
+   public Optional asString() {
+   return Optional.ofNullable(getValue());
+   }
+
+   /**
 * Returns true if the value exists.
+* 
+* 
+* This is a shortcut for calling asString().isPresent().
 *
 * @return true if the value exists.
 */
-   public boolean exists() {
-   return getValue() != null;
+   public boolean isPresent() {
+   return asString().isPresent();
+   }
+
+   /**
+* If a value is present, returns the value, otherwise throws {@link 
NoSuchElementException}.
+* 
+* 
+* This is a shortcut for calling asString().get().
+*
+* @return The value if present.
+*/
+   public String get() {
+   return asString().get();
+   }
+
+   /**
+* If a value is present, returns the value, otherwise returns other.
+* 
+* 
+* This is a shortcut for calling 
asString().orElse(other).
+*
+* @param other The other value.
+* @return The value if present or the other value if not.
+*/
+   public String orElse(String other) {
+   return asString().orElse(other);
}
 
/**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicStringHeader.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicStringHeader.java
index 900b249..9cfd4ed 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicStringHeader.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicStringHeader.java
@@ -122,28 +122,11 @@ public class BasicStringHeader extends BasicHeader {
return getParsedValue();
}
 
-   /**
-* Returns the value of this header as a string.
-*
-* @return The value of this header as a string, or {@link 
Optional#empty

[juneau] branch master updated: REST refactoring.

2021-02-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 b117d47  REST refactoring.
b117d47 is described below

commit b117d47ffb4ce59c5f2706cd7a3474c701c53ed2
Author: JamesBognar 
AuthorDate: Sat Feb 20 12:15:12 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RestResponse.java  | 206 +++--
 .../juneau/rest/logging/BasicRestLogger.java   |   2 -
 2 files changed, 192 insertions(+), 16 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
index fc66df3..72ca20d 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
@@ -58,7 +58,7 @@ import org.apache.juneau.serializer.*;
  * {@doc RestmRestResponse}
  * 
  */
-public final class RestResponse extends HttpServletResponseWrapper {
+public final class RestResponse {
 
private HttpServletResponse inner;
private final RestRequest request;
@@ -73,7 +73,6 @@ public final class RestResponse extends 
HttpServletResponseWrapper {
 * Constructor.
 */
RestResponse(RestCall call) throws Exception {
-   super(call.getResponse());
 
inner = call.getResponse();
request = call.getRestRequest();
@@ -247,6 +246,25 @@ public final class RestResponse extends 
HttpServletResponseWrapper {
}
 
/**
+* Sets the content type of the response being sent to the client, if 
the response has not been committed yet.
+*
+* 
+* The given content type may include a character encoding 
specification, for example, text/html;charset=UTF-8.
+* The response's character encoding is only set from the given content 
type if this method is called before getWriter is called.
+*
+* This method may be called repeatedly to change content type and 
character encoding.
+* This method has no effect if called after the response has been 
committed.
+* It does not set the response's character encoding if it is called 
after getWriter has been called or after the response has been committed.
+*
+* @param value A string specifying the MIME type of the content.
+* @return This object (for method chaining).
+*/
+   public RestResponse setContentType(String value) {
+   inner.setContentType(value);
+   return this;
+   }
+
+   /**
 * Equivalent to {@link HttpServletResponse#getOutputStream()}, except 
wraps the output stream if an {@link Encoder}
 * was found that matched the Accept-Encoding header.
 *
@@ -286,7 +304,19 @@ public final class RestResponse extends 
HttpServletResponseWrapper {
return os;
}
 
-   @Override /* ServletResponse */
+   /**
+* Returns a ServletOutputStream suitable for writing binary data in 
the response.
+*
+* 
+* The servlet container does not encode the binary data.
+*
+* 
+* Calling flush() on the ServletOutputStream commits the 
response.
+* Either this method or getWriter may be called to write the 
body, not both, except when reset has been called.
+*
+* @return The stream.
+* @throws IOException If stream could not be accessed.
+*/
public ServletOutputStream getOutputStream() throws IOException {
if (sos == null)
sos = inner.getOutputStream();
@@ -308,8 +338,10 @@ public final class RestResponse extends 
HttpServletResponseWrapper {
 * 
 * This methods bypasses any specified encoders and returns a regular 
unbuffered writer.
 * Use the {@link #getNegotiatedWriter()} method if you want to use the 
matched encoder (if any).
+*
+* @return The writer.
+* @throws IOException If writer could not be accessed.
 */
-   @Override /* ServletResponse */
public PrintWriter getWriter() throws IOException {
return getWriter(true, false);
}
@@ -369,6 +401,43 @@ public final class RestResponse extends 
HttpServletResponseWrapper {
}
 
/**
+* Sets the character encoding (MIME charset) of the response being 
sent to the client, for example, to UTF-8.
+*
+* 
+* If the character encoding has already been set by 
setContentType or setLocale, this method overrides it.
+* Calling {@link #setContentType(String)} with the String of 
"text/html" and calling this method with
+* "UTF-8

[juneau] branch master updated: REST refactoring.

2021-02-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 ef82a51  REST refactoring.
ef82a51 is described below

commit ef82a51b928963745c56e374e721fe946f4ce993
Author: JamesBognar 
AuthorDate: Sat Feb 20 10:52:32 2021 -0500

REST refactoring.
---
 .../juneau/http/header/BasicStringHeader.java  |  13 +
 .../apache/juneau/http/pair/BasicNamedString.java  |  13 +
 .../juneau/examples/rest/RequestEchoResource.java  |   2 +-
 .../apache/juneau/rest/client/ResponseBody.java|   4 +-
 .../apache/juneau/rest/client/ResponseHeader.java  |  17 +-
 .../org/apache/juneau/rest/RequestAttributes.java  |   6 +-
 .../java/org/apache/juneau/rest/RequestBody.java   |   8 +-
 .../java/org/apache/juneau/rest/RequestHeader.java | 105 +
 .../org/apache/juneau/rest/RequestHeaders.java | 255 
 .../org/apache/juneau/rest/RequestQueryParam.java  |  23 +-
 .../main/java/org/apache/juneau/rest/RestCall.java |   2 +-
 .../apache/juneau/rest/RestOperationContext.java   |   7 +-
 .../java/org/apache/juneau/rest/RestRequest.java   | 452 -
 .../java/org/apache/juneau/rest/RestResponse.java  |  14 +-
 .../assertions/FluentProtocolVersionAssertion.java |  90 
 .../assertions/FluentRequestLineAssertion.java |  91 +
 .../juneau/rest/logging/BasicRestLogger.java   |   2 -
 .../apache/juneau/rest/vars/RequestHeaderVar.java  |   2 +-
 .../apache/juneau/rest/vars/RequestQueryVar.java   |   2 +-
 .../apache/juneau/rest/widget/MenuItemWidget.java  |   6 +-
 .../juneau/http/SerializedHttpEntity_Test.java |   2 +-
 .../org/apache/juneau/http/remote/Remote_Test.java |   2 +-
 .../juneau/rest/Header_AcceptCharset_Test.java |   6 +-
 .../org/apache/juneau/rest/RestOp_Params_Test.java |   2 +-
 .../juneau/rest/annotation/RestHook_Test.java  |  14 +-
 .../rest/client/RestClient_BasicCalls_Test.java|   2 +-
 .../client/RestClient_Config_BeanContext_Test.java |   2 +-
 .../client/RestClient_Config_OpenApi_Test.java |   2 +-
 .../client/RestClient_Config_RestClient_Test.java  |   2 +-
 .../rest/client/RestClient_Headers_Test.java   |   2 +-
 .../client/RestClient_Response_Headers_Test.java   |   4 +-
 .../rest/client/RestClient_Response_Test.java  |   2 +-
 32 files changed, 851 insertions(+), 305 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicStringHeader.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicStringHeader.java
index bf03dd0..900b249 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicStringHeader.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicStringHeader.java
@@ -131,6 +131,19 @@ public class BasicStringHeader extends BasicHeader {
return Optional.ofNullable(getParsedValue());
}
 
+   /**
+* Return the value if present, otherwise return other.
+*
+* 
+* This is a shortened form for calling 
asString().orElse(other).
+*
+* @param other The value to be returned if there is no value present, 
may be null.
+* @return The value, if present, otherwise other.
+*/
+   public String orElse(String other) {
+   return asString().orElse(other);
+   }
+
private String getParsedValue() {
if (parsed != null)
return parsed;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/pair/BasicNamedString.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/pair/BasicNamedString.java
index e9c0b48..bb4aacc 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/pair/BasicNamedString.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/pair/BasicNamedString.java
@@ -111,6 +111,19 @@ public class BasicNamedString extends BasicNameValuePair {
return Optional.ofNullable(getParsedValue());
}
 
+   /**
+* Return the value if present, otherwise return other.
+*
+* 
+* This is a shortened form for calling 
asString().orElse(other).
+*
+* @param other The value to be returned if there is no value present, 
may be null.
+* @return The value, if present, otherwise other.
+*/
+   public String orElse(String other) {
+   return asString().orElse(other);
+   }
+
private String getParsedValue() {
if (parsed != null)
return parsed;
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache

[juneau] branch master updated: REST refactoring.

2021-02-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 89e56ee  REST refactoring.
89e56ee is described below

commit 89e56ee663f747fdf7d34e5a3b5c188971a8409d
Author: JamesBognar 
AuthorDate: Thu Feb 18 11:35:09 2021 -0500

REST refactoring.
---
 .../juneau/examples/rest/RootResourcesTest.java|  16 +--
 .../org/apache/juneau/rest/test/ConfigTest.java|   2 +-
 .../apache/juneau/rest/client/ResponseBody.java|  89 +-
 .../apache/juneau/rest/client/ResponseHeader.java  |  30 ++---
 .../org/apache/juneau/rest/client/RestClient.java  |  12 +-
 .../apache/juneau/rest/client/RestResponse.java|   6 +-
 .../assertion/FluentResponseBodyAssertion.java |   4 +-
 .../assertion/FluentResponseHeaderAssertion.java   |  32 +
 .../java/org/apache/juneau/rest/RequestBody.java   |  36 +-
 .../java/org/apache/juneau/rest/RequestHeader.java |  10 +-
 .../org/apache/juneau/rest/RequestQueryParam.java  |  10 +-
 .../java/org/apache/juneau/rest/RestRequest.java   |  20 ++-
 .../org/apache/juneau/rest/args/HeaderArg.java |   6 +-
 .../java/org/apache/juneau/rest/args/QueryArg.java |   8 +-
 .../assertions/FluentRequestBodyAssertion.java}| 134 -
 .../juneau/rest/client/RestCallException_Test.java |   2 +-
 .../client/RestClient_Config_BeanContext_Test.java | 134 ++---
 .../client/RestClient_Config_Context_Test.java |  26 ++--
 .../rest/client/RestClient_Config_Parser_Test.java |   4 +-
 .../client/RestClient_Config_RestClient_Test.java  |  42 +++
 .../rest/client/RestClient_Marshalls_Test.java |  98 +++
 .../rest/client/RestClient_Response_Body_Test.java |  16 +--
 .../client/RestClient_Response_Headers_Test.java   |  26 ++--
 23 files changed, 411 insertions(+), 352 deletions(-)

diff --git 
a/juneau-examples/juneau-examples-rest-jetty-ftest/src/test/java/org/apache/juneau/examples/rest/RootResourcesTest.java
 
b/juneau-examples/juneau-examples-rest-jetty-ftest/src/test/java/org/apache/juneau/examples/rest/RootResourcesTest.java
index 7574537..76d4db0 100644
--- 
a/juneau-examples/juneau-examples-rest-jetty-ftest/src/test/java/org/apache/juneau/examples/rest/RootResourcesTest.java
+++ 
b/juneau-examples/juneau-examples-rest-jetty-ftest/src/test/java/org/apache/juneau/examples/rest/RootResourcesTest.java
@@ -38,11 +38,11 @@ public class RootResourcesTest extends RestTestcase {
public void testJson() throws Exception {
RestClient client = SamplesMicroservice.DEFAULT_CLIENT;
 
-   ResourceDescription[] x = 
client.get("").run().getBody().as(ResourceDescription[].class);
+   ResourceDescription[] x = 
client.get("").run().getBody().asType(ResourceDescription[].class);
assertEquals("helloWorld", x[0].getName());
assertEquals("Hello World", x[0].getDescription());
 
-   OMap x2 = jsonClient.get("api").run().getBody().as(OMap.class);
+   OMap x2 = 
jsonClient.get("api").run().getBody().asType(OMap.class);
String s = x2.getMap("info").getString("description");
if (debug) System.err.println(s);
assertTrue(s, s.startsWith("Example of a router resource 
page"));
@@ -55,11 +55,11 @@ public class RootResourcesTest extends RestTestcase {
public void testXml() throws Exception {
try (RestClient client = 
SamplesMicroservice.client().xml().build()) {
 
-   ResourceDescription[] x = 
client.get("").run().getBody().as(ResourceDescription[].class);
+   ResourceDescription[] x = 
client.get("").run().getBody().asType(ResourceDescription[].class);
assertEquals("helloWorld", x[0].getName());
assertEquals("Hello World", x[0].getDescription());
 
-   OMap x2 = 
jsonClient.get("api").run().getBody().as(OMap.class);
+   OMap x2 = 
jsonClient.get("api").run().getBody().asType(OMap.class);
String s = x2.getMap("info").getString("description");
if (debug) System.err.println(s);
assertTrue(s, s.startsWith("Example of a router 
resource page"));
@@ -73,11 +73,11 @@ public class RootResourcesTest extends RestTestcase {
public void testHtmlStripped() throws Exception {
try (RestClient client = 
SamplesMicroservice.client().parsers(HtmlParser.DEFAULT).accept("text/html+stripped").build())
 {
 
-   ResourceDescription[] x = 
client.get("").run(

[juneau] branch master updated: REST refactoring.

2021-02-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 3d4acdf  REST refactoring.
3d4acdf is described below

commit 3d4acdf7b0498b4a0b369029cfbb90ae33764513
Author: JamesBognar 
AuthorDate: Thu Feb 18 09:34:39 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/assertions/Assertion.java| 22 ++
 .../assertion/FluentResponseBodyAssertion.java |  2 ++
 .../assertion/FluentResponseHeaderAssertion.java   |  2 ++
 .../FluentResponseStatusLineAssertion.java |  2 ++
 .../assertions/FluentRequestHeaderAssertion.java   |  2 ++
 .../FluentRequestQueryParamAssertion.java  |  2 ++
 6 files changed, 32 insertions(+)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
index 46171f0..4488a18 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
@@ -15,6 +15,7 @@ package org.apache.juneau.assertions;
 import static org.apache.juneau.internal.StringUtils.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.cp.*;
 import org.apache.juneau.internal.*;
 
 /**
@@ -25,6 +26,7 @@ public class Assertion {
String msg;
Object[] msgArgs;
boolean stdout, stderr;
+   Class throwable;
 
/**
 * Constructor used when this assertion is being created from within 
another assertion.
@@ -36,6 +38,7 @@ public class Assertion {
this.msgArgs = creator.msgArgs;
this.stdout = creator.stdout;
this.stderr = creator.stderr;
+   this.throwable = creator.throwable;
}
}
 
@@ -79,6 +82,18 @@ public class Assertion {
}
 
/**
+* If an error occurs, throw this exception when {@link #error(String, 
Object...)} is called.
+*
+* @param value The new value for this setting.
+* @return This object (for method chaining).
+*/
+   @FluentSetter
+   public Assertion throwable(Class value) {
+   this.throwable = value;
+   return this;
+   }
+
+   /**
 * Creates a new {@link BasicAssertionError}.
 *
 * @param msg The message.
@@ -105,6 +120,13 @@ public class Assertion {
System.out.println(msg);  // NOT DEBUG
if (stderr)
System.err.println(msg);  // NOT DEBUG
+   if (throwable != null) {
+   try {
+   throw 
BeanFactory.create().build().addBean(Throwable.class, 
cause).addBean(String.class, msg).addBean(Object[].class, new 
Object[0]).createBean(throwable);
+   } catch (ExecutableException e) {
+   throw new RuntimeException(e);
+   }
+   }
return new BasicAssertionError(cause, msg);
}
 
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseBodyAssertion.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseBodyAssertion.java
index e1f798d..b8b1937 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseBodyAssertion.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseBodyAssertion.java
@@ -15,6 +15,7 @@ package org.apache.juneau.rest.client.assertion;
 import java.util.function.*;
 
 import org.apache.juneau.assertions.*;
+import org.apache.juneau.http.exception.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.rest.client.*;
 
@@ -37,6 +38,7 @@ public class FluentResponseBodyAssertion extends 
FluentAssertion {
public FluentResponseBodyAssertion(ResponseBody value, R returns) {
super(null, returns);
this.value = value;
+   throwable(BadRequest.class);
}
 
/**
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseHeaderAssertion.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseHeaderAssertion.java
index 558d942..a5bb230 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseHeaderAssertion.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseHeaderAssertion.java
@@ -13,6 +13,7 @@
 package

[juneau] branch master updated: REST refactoring.

2021-02-17 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 c9fd683  REST refactoring.
c9fd683 is described below

commit c9fd68326f6fb5d08b46f739612df83198a1559b
Author: JamesBognar 
AuthorDate: Wed Feb 17 16:43:46 2021 -0500

REST refactoring.
---
 .../apache/juneau/rest/client/ResponseBody.java|  23 +-
 .../apache/juneau/rest/client/ResponseHeader.java  |  22 +-
 .../juneau/rest/client/ResponseStatusLine.java |  91 ++
 .../org/apache/juneau/rest/client/RestClient.java  |  89 +++---
 .../apache/juneau/rest/client/RestOperation.java   |  21 +-
 .../org/apache/juneau/rest/client/RestRequest.java |   3 +-
 .../apache/juneau/rest/client/RestResponse.java|  13 +-
 .../apache/juneau/rest/mock/MockRestClient.java|   4 +-
 .../rest/annotation/Restx_RoleGuard_Test.java  | 330 ++---
 .../rest/client/RestClient_Response_Body_Test.java |   4 +-
 .../client/RestClient_Response_Headers_Test.java   |   2 +-
 11 files changed, 355 insertions(+), 247 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
index 72a1db2..297eeea 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
@@ -1054,15 +1054,6 @@ public class ResponseBody implements HttpEntity {
return asMatcher(Pattern.compile(regex, flags));
}
 
-   /**
-* Returns the response that created this object.
-*
-* @return The response that created this object.
-*/
-   public RestResponse toResponse() {
-   return response;
-   }
-

//--
// Assertions

//--
@@ -1135,10 +1126,18 @@ public class ResponseBody implements HttpEntity {
 * 
 *
 * @return A new fluent assertion object.
-* @throws RestCallException If REST call failed.
 */
-   public FluentResponseBodyAssertion assertValue() throws 
RestCallException {
-   return new FluentResponseBodyAssertion<>(this, response);
+   public FluentResponseBodyAssertion assertValue() {
+   return new FluentResponseBodyAssertion<>(this, this);
+   }
+
+   /**
+* Returns the response that created this object.
+*
+* @return The response that created this object.
+*/
+   public RestResponse response() {
+   return response;
}
 

//--
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseHeader.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseHeader.java
index b16f81b..38379df 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseHeader.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseHeader.java
@@ -469,15 +469,6 @@ public class ResponseHeader implements Header {
return asMatcher(Pattern.compile(regex, flags));
}
 
-   /**
-* Returns the response that created this object.
-*
-* @return The response that created this object.
-*/
-   public RestResponse toResponse() {
-   return response;
-   }
-

//--
// Assertions.

//--
@@ -538,8 +529,17 @@ public class ResponseHeader implements Header {
 *
 * @return A new fluent assertion object.
 */
-   public FluentResponseHeaderAssertion assertValue() {
-   return new FluentResponseHeaderAssertion<>(this, response);
+   public FluentResponseHeaderAssertion assertValue() {
+   return new FluentResponseHeaderAssertion<>(this, this);
+   }
+
+   /**
+* Returns the response that created this object.
+*
+* @return The response that created this object.
+*/
+   public RestResponse response() {
+  

[juneau] branch master updated: REST refactoring.

2021-02-17 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 462c6fc  REST refactoring.
462c6fc is described below

commit 462c6fc40c0f1b8db521834748864f3ada23774d
Author: JamesBognar 
AuthorDate: Wed Feb 17 10:14:58 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/client/RestClient.java |  2 +-
 .../org/apache/juneau/rest/client/RestResponse.java|  4 ++--
 .../client/assertion/FluentResponseBodyAssertion.java  | 13 +
 .../assertion/FluentResponseHeaderAssertion.java   | 13 +
 .../FluentResponseStatusLineAssertion.java}| 18 ++
 5 files changed, 15 insertions(+), 35 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index 81cb4eb..9c801f5 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -518,7 +518,7 @@ import org.apache.juneau.utils.*;
  * {@link RestResponse#getStatusLine() 
getStatusLine()} returns {@link StatusLine}
  * {@link RestResponse#getStatusCode() 
getStatusCode()} returns int
  * {@link RestResponse#getReasonPhrase() 
getReasonPhrase()} returns String
- * {@link RestResponse#assertStatus() 
assertStatus()} returns {@link ResponseStatusLineAssertion}
+ * {@link RestResponse#assertStatus() 
assertStatus()} returns {@link FluentResponseStatusLineAssertion}
  * 
  * 
  *
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
index 1c1a4bf..49efccd 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
@@ -177,8 +177,8 @@ public class RestResponse implements HttpResponse {
 * @return A new fluent assertion object.
 * @throws RestCallException If REST call failed.
 */
-   public ResponseStatusLineAssertion assertStatus() throws 
RestCallException {
-   return new ResponseStatusLineAssertion(getStatusLine(), this);
+   public FluentResponseStatusLineAssertion assertStatus() 
throws RestCallException {
+   return new FluentResponseStatusLineAssertion<>(getStatusLine(), 
this);
}
 
/**
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseBodyAssertion.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseBodyAssertion.java
index d113748..e1f798d 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseBodyAssertion.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseBodyAssertion.java
@@ -35,18 +35,7 @@ public class FluentResponseBodyAssertion extends 
FluentAssertion {
 * @param returns The object to return after the test.
 */
public FluentResponseBodyAssertion(ResponseBody value, R returns) {
-   this(null, value, returns);
-   }
-
-   /**
-* Constructor.
-*
-* @param creator The assertion that created this assertion.
-* @param value The object being tested.
-* @param returns The object to return after the test.
-*/
-   public FluentResponseBodyAssertion(Assertion creator, ResponseBody 
value, R returns) {
-   super(creator, returns);
+   super(null, returns);
this.value = value;
}
 
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseHeaderAssertion.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseHeaderAssertion.java
index 2a2c6cc..558d942 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseHeaderAssertion.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseHeaderAssertion.java
@@ -33,18 +33,7 @@ public class FluentResponseHeaderAssertion extends 
FluentBaseAssertion
+ *
+ * @param  The return type.
  */
-public class ResponseStatusLineAssertion extends FluentAssertion 
{
+public class FluentResponseStatusLineAssertion extends FluentAssertion {
 
private final Stat

[juneau] branch master updated: REST refactoring.

2021-02-17 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 3a08483  REST refactoring.
3a08483 is described below

commit 3a084839683a029bad7ba851fb3792713ca67ef2
Author: JamesBognar 
AuthorDate: Wed Feb 17 10:06:14 2021 -0500

REST refactoring.
---
 .../apache/juneau/rest/client/ResponseBody.java| 243 -
 .../rest/client/RestClient_Response_Body_Test.java |  36 ---
 2 files changed, 279 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
index fee02de..72a1db2 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
@@ -545,56 +545,6 @@ public class ResponseBody implements HttpEntity {
}
 
/**
-* Same as {@link #as(Type,Type...)} but sets the value in a mutable 
for fluent calls.
-*
-* Example:
-* 
-*  // Parse into a linked-list of strings and also pipe to an 
output stream.
-*  MutableListString mutable = 
Mutable.create();
-*
-*  client
-*  .get(URI)
-*  .run()
-*  .cache()
-*  .getBody().as(mutable, 
LinkedList.class, String.class)
-*  .getBody().pipeTo(outputStream)
-*  .assertStatus().is(200);
-*
-*  ListString list = mutable.get();
-* 
-*
-* 
-*  
-*  If {@link #cache()} or {@link RestResponse#cacheBody()} 
has been called, this method can be can be called multiple times and/or 
combined with
-*  other methods that retrieve the content of the 
response.  Otherwise a {@link RestCallException}
-*  with an inner {@link IllegalStateException} will be 
thrown.
-*  
-*  The input stream is automatically closed after this 
call.
-* 
-*
-* @param  The class type of the object to create.
-* @param m The mutable to set the parsed value in.
-* @param type
-*  The object type to create.
-*  Can be any of the following: {@link ClassMeta}, {@link 
Class}, {@link ParameterizedType}, {@link GenericArrayType}
-* @param args
-*  The type arguments of the class if it's a collection or map.
-*  Can be any of the following: {@link ClassMeta}, {@link 
Class}, {@link ParameterizedType}, {@link GenericArrayType}
-*  Ignored if the main type is not a map or collection.
-* @return The response object (for method chaining).
-* @throws RestCallException
-*  
-*  If the input contains a syntax error or is 
malformed, or is not valid for the specified type.
-*  If a connection error occurred.
-*  
-* @see BeanSession#getClassMeta(Class) for argument syntax for maps 
and collections.
-*/
-   public  RestResponse as(Mutable m, Type type, Type...args) throws 
RestCallException {
-   m.set(as(type, args));
-   return response;
-   }
-
-   /**
 * Same as {@link #as(Type,Type...)} except optimized for a 
non-parameterized class.
 *
 * 
@@ -649,51 +599,6 @@ public class ResponseBody implements HttpEntity {
}
 
/**
-* Same as {@link #as(Class)} but sets the value in a mutable for 
fluent calls.
-*
-* Example:
-* 
-*  // Parse into a bean and also pipe to an output stream.
-*  MutableMyBean mutable = 
Mutable.create();
-*
-*  client
-*  .get(URI)
-*  .run()
-*  .cache()
-*  .getBody().as(mutable, MyBean.class)
-*  .getBody().pipeTo(outputStream)
-*  .assertStatus().is(200);
-*
-*  MyBean bean = mutable.get();
-* 
-*
-* 
-*  
-*  If {@link #cache()} or {@link RestResponse#cacheBody()} 
has been called, this method can be can be called multiple times and/or 
combined with
-*  other methods that retrieve the content of the 
response.  Otherwise a {@link RestCallException}
-*  with an inner {@link IllegalStateException} will be 
thrown.
-*  
-*  The input stream is automatically closed after this 
call.
-* 
-*
-* @param

[juneau] branch master updated: REST refactoring

2021-02-17 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 1eaf420  REST refactoring
1eaf420 is described below

commit 1eaf420b896f105e3d7c6eae6765fe24308823f9
Author: JamesBognar 
AuthorDate: Wed Feb 17 09:56:56 2021 -0500

REST refactoring
---
 .../org/apache/juneau/assertions/Assertion.java|  16 +-
 .../juneau/assertions/FluentStringAssertion.java   |   2 +-
 .../apache/juneau/rest/client/ResponseBody.java| 299 +---
 .../apache/juneau/rest/client/ResponseHeader.java  | 179 +---
 .../org/apache/juneau/rest/client/RestClient.java  |  13 +-
 .../apache/juneau/rest/client/RestResponse.java|  66 +
 .../assertion/FluentResponseBodyAssertion.java | 306 +
 .../rest/client/RestClient_BasicCalls_Test.java|   2 +-
 .../juneau/rest/client/RestClient_Body_Test.java   |  26 +-
 .../client/RestClient_Config_BeanContext_Test.java |   4 +-
 .../client/RestClient_Config_OpenApi_Test.java |   6 +-
 .../rest/client/RestClient_FormData_Test.java  |  34 +--
 .../juneau/rest/client/RestClient_Query_Test.java  |  24 +-
 .../rest/client/RestClient_Response_Body_Test.java |  44 +--
 .../client/RestClient_Response_Headers_Test.java   |  30 +-
 .../rest/client/RestClient_Response_Test.java  |  18 +-
 16 files changed, 425 insertions(+), 644 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
index a73ab24..46171f0 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
@@ -86,14 +86,26 @@ public class Assertion {
 * @return A new {@link BasicAssertionError}.
 */
protected BasicAssertionError error(String msg, Object...args) {
+   return error(null, msg, args);
+   }
+
+   /**
+* Creates a new {@link BasicAssertionError}.
+*
+* @param cause Optional caused-by throwable.
+* @param msg The message.
+* @param args The message arguments.
+* @return A new {@link BasicAssertionError}.
+*/
+   protected BasicAssertionError error(Throwable cause, String msg, 
Object...args) {
msg = format(msg, args);
if (this.msg != null)
-   msg = format(this.msg, 
this.msgArgs).replace("<<>>", msg);
+   msg = format(this.msg, 
this.msgArgs).replace("<<>>", msg).replace("<<>>", cause == 
null ? "" : "Caused by: " + cause.getMessage());
if (stdout)
System.out.println(msg);  // NOT DEBUG
if (stderr)
System.err.println(msg);  // NOT DEBUG
-   return new BasicAssertionError(msg);
+   return new BasicAssertionError(cause, msg);
}
 
/**
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 1438798..56ec3dd 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
@@ -360,7 +360,7 @@ public class FluentStringAssertion extends 
FluentBaseAssertion {
}
 
/**
-* Asserts that the text is not empty.
+* Asserts that the text is empty.
 *
 * @return The response object (for method chaining).
 * @throws AssertionError If assertion failed.
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
index 5b414b1..fee02de 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
@@ -24,7 +24,6 @@ import java.util.regex.*;
 import org.apache.http.*;
 import org.apache.http.conn.*;
 import org.apache.juneau.*;
-import org.apache.juneau.assertions.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.http.*;
 import org.apache.juneau.httppart.*;
@@ -33,6 +32,7 @@ import org.apache.juneau.oapi.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.parser.ParseException;
 import org.apache.juneau.reflect.*;
+import org.apache.juneau.rest.client.as

[juneau] branch master updated: Fluent assertion improvements.

2021-02-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 106a9a0  Fluent assertion improvements.
106a9a0 is described below

commit 106a9a0c80f998585f9aaa25022188f58d49d9ef
Author: JamesBognar 
AuthorDate: Tue Feb 16 17:35:56 2021 -0500

Fluent assertion improvements.
---
 .../org/apache/juneau/assertions/Assertions.java   | 37 +
 .../apache/juneau/assertions/BeanAssertion.java| 16 
 .../juneau/assertions/FluentArrayAssertion.java| 22 ++-
 .../juneau/assertions/FluentBaseAssertion.java | 17 
 .../juneau/assertions/FluentBeanAssertion.java | 43 +++-
 .../juneau/assertions/FluentListAssertion.java | 22 ++-
 .../juneau/assertions/FluentMapAssertion.java  | 28 -
 .../juneau/assertions/FluentObjectAssertion.java   | 15 +++
 .../assertions/FluentThrowableAssertion.java   | 46 --
 .../apache/juneau/assertions/ObjectAssertion.java  | 18 +
 .../juneau/assertions/ThrowableAssertion.java  | 18 +
 .../apache/juneau/http/BasicNamedAttribute.java|  2 +-
 .../apache/juneau/rest/client/ResponseBody.java|  2 +-
 .../apache/juneau/rest/client/RestResponse.java|  2 +-
 .../rest/logging/BasicTestCaptureRestLogger.java   |  4 +-
 .../juneau/assertions/ObjectAssertion_Test.java|  4 +-
 .../juneau/assertions/ThrowableAssertion_Test.java |  7 ++--
 .../client/RestClient_Response_Headers_Test.java   |  1 -
 18 files changed, 211 insertions(+), 93 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertions.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertions.java
index 9e26969..8daac05 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertions.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertions.java
@@ -184,7 +184,7 @@ public class Assertions {
 * @param value The object being wrapped.
 * @return A new {@link ObjectAssertion} object.  Never null.
 */
-   public static ObjectAssertion assertObject(Object value) {
+   public static  ObjectAssertion assertObject(V value) {
return ObjectAssertion.create(value);
}
 
@@ -200,7 +200,7 @@ public class Assertions {
 * @param value The object being wrapped.
 * @return A new {@link ObjectAssertion} object.  Never null.
 */
-   public static ObjectAssertion assertObject(Optional value) {
+   public static  ObjectAssertion assertObject(Optional value) {
assertArgNotNull("value", value);
return assertObject(value.orElse(null));
}
@@ -217,7 +217,7 @@ public class Assertions {
 * @param value The object being wrapped.
 * @return A new {@link BeanAssertion} object.  Never null.
 */
-   public static BeanAssertion assertBean(Object value) {
+   public static  BeanAssertion assertBean(V value) {
return BeanAssertion.create(value);
}
 
@@ -233,7 +233,7 @@ public class Assertions {
 * @param value The object being wrapped.
 * @return A new {@link BeanAssertion} object.  Never null.
 */
-   public static BeanAssertion assertBean(Optional value) {
+   public static  BeanAssertion assertBean(Optional value) {
assertArgNotNull("value", value);
return assertBean(value.orElse(null));
}
@@ -316,7 +316,7 @@ public class Assertions {
 * @param value The throwable being wrapped.
 * @return A new {@link ThrowableAssertion} object.  Never 
null.
 */
-   public static ThrowableAssertion assertThrowable(Throwable value) {
+   public static  ThrowableAssertion 
assertThrowable(V value) {
return ThrowableAssertion.create(value);
}
 
@@ -400,11 +400,34 @@ public class Assertions {
 * @param snippet The snippet of code to execute.
 * @return A new assertion object.  Never null.
 */
-   public static ThrowableAssertion assertThrown(Snippet snippet) {
+   public static ThrowableAssertion assertThrown(Snippet 
snippet) {
+   return assertThrown(Throwable.class, snippet);
+   }
+
+   /**
+* Executes an arbitrary snippet of code and captures anything thrown 
from it.
+*
+* Example:
+* 
+*  // Asserts that the specified method throws a 
RuntimeException containing "Foobar" in the message. 
+*  assertThrown(()-foo.getBar())
+*  .exists()
+*  .isType(RuntimeException.class)
+* 

[juneau] branch master updated: REST refactoring.

2021-02-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 ffb7dbc  REST refactoring.
ffb7dbc is described below

commit ffb7dbc613b70a9d947c2978472d2a8a214d1e6f
Author: JamesBognar 
AuthorDate: Tue Feb 16 13:36:40 2021 -0500

REST refactoring.
---
 .../juneau/assertions/ComparableAssertion.java |   2 +-
 .../juneau/assertions/FluentArrayAssertion.java|   2 +-
 ...jectAssertion.java => FluentBaseAssertion.java} | 140 +---
 .../juneau/assertions/FluentBeanAssertion.java |   2 +-
 .../juneau/assertions/FluentBooleanAssertion.java  |   2 +-
 .../assertions/FluentCollectionAssertion.java  |   2 +-
 .../assertions/FluentComparableAssertion.java  |  16 +-
 .../juneau/assertions/FluentDateAssertion.java |   2 +-
 .../juneau/assertions/FluentIntegerAssertion.java  |   2 +-
 .../juneau/assertions/FluentLongAssertion.java |   3 +-
 .../juneau/assertions/FluentMapAssertion.java  |   2 +-
 .../juneau/assertions/FluentObjectAssertion.java   | 387 +
 .../juneau/assertions/FluentStringAssertion.java   |   2 +-
 .../assertions/FluentThrowableAssertion.java   |  39 +--
 .../assertions/FluentZonedDateTimeAssertion.java   |   2 +-
 .../assertion/FluentResponseHeaderAssertion.java   |   7 +-
 .../assertions/FluentRequestHeaderAssertion.java   |  18 +-
 .../FluentRequestQueryParamAssertion.java  |   7 +-
 18 files changed, 41 insertions(+), 596 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/ComparableAssertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/ComparableAssertion.java
index ec62f71..350df8d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/ComparableAssertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/ComparableAssertion.java
@@ -19,7 +19,7 @@ import org.apache.juneau.internal.*;
  */
 @FluentSetters(returns="ComparableAssertion")
 @SuppressWarnings("rawtypes")
-public class ComparableAssertion extends 
FluentComparableAssertion {
+public class ComparableAssertion extends 
FluentComparableAssertion {
 
/**
 * Creator.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentArrayAssertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentArrayAssertion.java
index e0b3383..3468ec9 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentArrayAssertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentArrayAssertion.java
@@ -26,7 +26,7 @@ import org.apache.juneau.marshall.*;
  * @param  The return type.
  */
 @FluentSetters(returns="FluentArrayAssertion")
-public class FluentArrayAssertion extends FluentObjectAssertion {
+public class FluentArrayAssertion extends FluentBaseAssertion {
 
private Object value;
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentObjectAssertion.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentBaseAssertion.java
similarity index 78%
copy from 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentObjectAssertion.java
copy to 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentBaseAssertion.java
index f67f853..26dc70e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentObjectAssertion.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentBaseAssertion.java
@@ -12,11 +12,8 @@
 // 
***
 package org.apache.juneau.assertions;
 
-import java.time.*;
-import java.util.*;
 import java.util.function.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.marshall.*;
@@ -26,12 +23,13 @@ import org.apache.juneau.serializer.*;
 /**
  * Used for fluent assertion calls against POJOs.
  *
+ * @param  The object type.
  * @param  The return type.
  */
-@FluentSetters(returns="FluentObjectAssertion")
-public class FluentObjectAssertion extends FluentAssertion {
+@FluentSetters(returns="FluentBaseAssertion")
+public class FluentBaseAssertion extends FluentAssertion {
 
-   private final Object value;
+   private final V value;
 
private static JsonSerializer JSON = JsonSerializer.create()
.ssq()
@@ -50,7 +48,7 @@ public class FluentObjectAssertion extends 
FluentAssertion {
 * @param value The object being tested.

[juneau] branch master updated: REST refactoring.

2021-02-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 33ac3bd  REST refactoring.
33ac3bd is described below

commit 33ac3bd77e755252784ed6a433b89a8c0549e016
Author: JamesBognar 
AuthorDate: Tue Feb 16 11:17:27 2021 -0500

REST refactoring.
---
 .../apache/juneau/rest/client/ResponseHeader.java  |  89 +--
 .../apache/juneau/rest/client/RestResponse.java| 167 +++--
 .../assertion/FluentResponseHeaderAssertion.java}  |  39 ++-
 .../assertions/FluentRequestHeaderAssertion.java   |  10 +-
 .../FluentRequestQueryParamAssertion.java  |  19 +-
 .../juneau/http/exception/BadRequest_Test.java |   2 +-
 .../juneau/http/exception/Conflict_Test.java   |   2 +-
 .../http/exception/ExpectationFailed_Test.java |   2 +-
 .../http/exception/FailedDependency_Test.java  |   2 +-
 .../juneau/http/exception/Forbidden_Test.java  |   2 +-
 .../apache/juneau/http/exception/Gone_Test.java|   2 +-
 .../juneau/http/exception/HttpException_Test.java  |   2 +-
 .../exception/HttpVersionNotSupported_Test.java|   2 +-
 .../http/exception/InsufficentStorage_Test.java|   2 +-
 .../http/exception/InternalServerError_Test.java   |   2 +-
 .../juneau/http/exception/LengthRequired_Test.java |   2 +-
 .../apache/juneau/http/exception/Locked_Test.java  |   2 +-
 .../juneau/http/exception/LoopDetected_Test.java   |   2 +-
 .../http/exception/MethodNotAllowed_Test.java  |   2 +-
 .../http/exception/MisdirectedRequest_Test.java|   2 +-
 .../NetworkAuthenticationRequired_Test.java|   2 +-
 .../juneau/http/exception/NotAcceptable_Test.java  |   2 +-
 .../juneau/http/exception/NotExtended_Test.java|   2 +-
 .../juneau/http/exception/NotFound_Test.java   |   2 +-
 .../juneau/http/exception/NotImplemented_Test.java |   2 +-
 .../http/exception/PayloadTooLarge_Test.java   |   2 +-
 .../http/exception/PreconditionFailed_Test.java|   2 +-
 .../http/exception/PreconditionRequired_Test.java  |   2 +-
 .../http/exception/RangeNotSatisfiable_Test.java   |   2 +-
 .../RequestHeaderFieldsTooLarge_Test.java  |   2 +-
 .../http/exception/ServiceUnavailable_Test.java|   2 +-
 .../http/exception/TooManyRequests_Test.java   |   2 +-
 .../juneau/http/exception/Unauthorized_Test.java   |   2 +-
 .../exception/UnavailableForLegalReasons_Test.java |   2 +-
 .../http/exception/UnprocessableEntity_Test.java   |   2 +-
 .../http/exception/UnsupportedMediaType_Test.java  |   2 +-
 .../http/exception/UpgradeRequired_Test.java   |   2 +-
 .../juneau/http/exception/UriTooLong_Test.java |   2 +-
 .../http/exception/VariantAlsoNegotiates_Test.java |   2 +-
 .../apache/juneau/http/response/Accepted_Test.java |   2 +-
 .../juneau/http/response/AlreadyReported_Test.java |   2 +-
 .../apache/juneau/http/response/Continue_Test.java |   2 +-
 .../apache/juneau/http/response/Created_Test.java  |   2 +-
 .../juneau/http/response/EarlyHints_Test.java  |   2 +-
 .../apache/juneau/http/response/Found_Test.java|   4 +-
 .../apache/juneau/http/response/IMUsed_Test.java   |   2 +-
 .../http/response/MovedPermanently_Test.java   |   4 +-
 .../juneau/http/response/MultiStatus_Test.java |   2 +-
 .../juneau/http/response/MultipleChoices_Test.java |   2 +-
 .../juneau/http/response/NoContent_Test.java   |   2 +-
 .../response/NonAuthoritativeInformation_Test.java |   2 +-
 .../juneau/http/response/NotModified_Test.java |   2 +-
 .../org/apache/juneau/http/response/Ok_Test.java   |   2 +-
 .../juneau/http/response/PartialContent_Test.java  |   2 +-
 .../http/response/PermanentRedirect_Test.java  |   4 +-
 .../juneau/http/response/Processing_Test.java  |   2 +-
 .../juneau/http/response/ResetContent_Test.java|   2 +-
 .../apache/juneau/http/response/SeeOther_Test.java |   4 +-
 .../http/response/SwitchingProtocols_Test.java |   2 +-
 .../http/response/TemporaryRedirect_Test.java  |   4 +-
 .../apache/juneau/http/response/UseProxy_Test.java |   2 +-
 .../juneau/rest/Header_AcceptEncoding_Test.java|  20 +-
 .../apache/juneau/rest/RestOp_Returns_Test.java|   4 +-
 .../rest/annotation/ResponseHeader_Test.java   |   6 +-
 .../juneau/rest/annotation/RestHook_Test.java  |   8 +-
 .../juneau/rest/client/RestClient_Body_Test.java   | 116 -
 .../client/RestClient_Config_BeanContext_Test.java | 264 ++---
 .../client/RestClient_Config_RestClient_Test.java  |  12 +-
 .../rest/client/RestClient_Response_Test.java  |  14 +-
 .../apache/juneau/rest/client/RestClient_Test.java |   8 +-
 70 files changed, 523 insertions(+), 375 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseHeader.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau

[juneau] branch master updated: REST refactoring.

2021-02-14 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 75930c3  REST refactoring.
75930c3 is described below

commit 75930c37c63023e1ee974b3ba820e6688eb0afcd
Author: JamesBognar 
AuthorDate: Sun Feb 14 13:42:50 2021 -0500

REST refactoring.
---
 .../src/main/java/org/apache/juneau/rest/RequestHeaders.java   | 10 --
 .../juneau/http/remote/Remote_HeaderAnnotation_Test.java   |  2 +-
 2 files changed, 1 insertion(+), 11 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
index ffd5ffe..785651e 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
@@ -343,16 +343,6 @@ public class RequestHeaders {
}
 
/**
-* Same as {@link #subset(String...)} but allows you to specify header 
names as a comma-delimited list.
-*
-* @param headers The headers to include in the copy.
-* @return A new headers object.
-*/
-   public RequestHeaders subset(String headers) {
-   return subset(split(headers));
-   }
-
-   /**
 * Returns the Accept header on the request.
 *
 * 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_HeaderAnnotation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_HeaderAnnotation_Test.java
index 7f1a478..21916de 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_HeaderAnnotation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_HeaderAnnotation_Test.java
@@ -678,7 +678,7 @@ public class Remote_HeaderAnnotation_Test {
public static class K {
@RestOp
public String get(RestRequest req) throws Exception {
-   return 
req.getRequestHeaders().subset("a,b,c,d,e,f,g,h,i,i1,i2,i3,a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4,e1,e2,e3,e4,f1,f2,f3,f4").toString(true);
+   return 
req.getRequestHeaders().subset("a,b,c,d,e,f,g,h,i,i1,i2,i3,a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4,e1,e2,e3,e4,f1,f2,f3,f4".split("\\,")).toString(true);
}
}
 



[juneau] branch master updated: Javadocs.

2021-02-14 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 9da1112  Javadocs.
9da1112 is described below

commit 9da1112f75212fe9670e2985bc326217c97f8764
Author: JamesBognar 
AuthorDate: Sun Feb 14 13:37:34 2021 -0500

Javadocs.
---
 .../java/org/apache/juneau/http/annotation/FormData.java |  2 +-
 .../main/java/org/apache/juneau/http/annotation/Header.java  |  2 +-
 .../main/java/org/apache/juneau/http/annotation/Path.java|  2 +-
 .../main/java/org/apache/juneau/http/annotation/Query.java   |  2 +-
 .../main/java/org/apache/juneau/http/annotation/Request.java |  2 +-
 .../main/java/org/apache/juneau/http/remote/RemoteOp.java|  6 ++
 juneau-doc/docs/Topics/09.juneau-rest-client.html|  2 +-
 .../docs/Topics/09.juneau-rest-client/11.RestcProxies.html   |  2 +-
 .../11.RestcProxies/02.RestcRemoteMethod.html|  6 +++---
 .../09.juneau-rest-client/11.RestcProxies/03.RestcBody.html  |  8 
 .../11.RestcProxies/04.RestcFormData.html| 12 ++--
 .../09.juneau-rest-client/11.RestcProxies/05.RestcQuery.html | 12 ++--
 .../11.RestcProxies/06.RestcHeader.html  |  8 
 .../09.juneau-rest-client/11.RestcProxies/07.RestcPath.html  |  8 
 .../11.RestcProxies/08.RestcRequest.html |  2 +-
 .../11.RestcProxies/09.RestcResponse.html|  2 +-
 .../11.RestcProxies/10.RestcDualPurposeInterfaces.html   |  4 ++--
 .../docs/Topics/10.juneau-rest-mock/01.MockRestClient.html   |  2 +-
 .../main/java/org/apache/juneau/rest/client/RestClient.java  |  4 ++--
 .../java/org/apache/juneau/rest/mock/MockRestClient.java |  2 +-
 20 files changed, 44 insertions(+), 46 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
index ad74094..697427e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
@@ -879,7 +879,7 @@ public @interface FormData {
 *  public interface MyProxy {
 *
 *  // Equivalent to @FormData("*")
-*  @RemoteOp(path="/mymethod")
+*  @RemotePost("/mymethod")
 *  String myProxyMethod1(@FormData 
MapString,Object allFormDataParameters);
 *  }
 *  
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
index 97b40f7..5a793d5 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
@@ -853,7 +853,7 @@ public @interface Header {
 *  public interface MyProxy {
 *
 *  // Equivalent to @Header("*")
-*  @RemoteOp(path="/mymethod")
+*  @RemoteGet("/mymethod")
 *  String myProxyMethod1(@Header 
MapString,Object allHeaderParameters);
 *  }
 *  
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java
index 8bf8e22..654d369 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java
@@ -798,7 +798,7 @@ public @interface Path {
 *  public interface MyProxy {
 *
 *  // Equivalent to @Path("*")
-*  
@RemoteOp(path="/mymethod/{foo}/{bar}")
+*  @RemoteGet("/mymethod/{foo}/{bar}")
 *  String myProxyMethod1(@Path 
MapString,Object allPathParameters);
 *  }
 *  
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
index 0742e44..99e0d71 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
@@ -877,7 +877,7 @@ public @interface Query {
 *  public interface MyProxy {
 *
 *  

[juneau] branch master updated: Add RemoteGet/RemotePut/RemotePost/RemoteDelete annotations.

2021-02-14 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 ab2137f  Add RemoteGet/RemotePut/RemotePost/RemoteDelete annotations.
ab2137f is described below

commit ab2137f090bc904e9a210a1b98c04d876110984d
Author: JamesBognar 
AuthorDate: Sun Feb 14 11:57:03 2021 -0500

Add RemoteGet/RemotePut/RemotePost/RemoteDelete annotations.
---
 .../remote/{RemoteOp.java => RemoteDelete.java}| 41 +
 .../http/remote/{RemoteOp.java => RemoteGet.java}  | 41 +
 .../org/apache/juneau/http/remote/RemoteOp.java|  6 ++-
 .../http/remote/{RemoteOp.java => RemotePost.java} | 43 +-
 .../http/remote/{RemoteOp.java => RemotePut.java}  | 42 +
 .../org/apache/juneau/reflect/AnnotationList.java  | 12 ++
 .../rest/client/remote/RemoteOperationMeta.java| 30 ---
 .../rest/client/remote/RemoteOperationReturn.java  | 10 ++---
 8 files changed, 75 insertions(+), 150 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteOp.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteDelete.java
similarity index 78%
copy from 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteOp.java
copy to 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteDelete.java
index 9ce91eb..e44b6e6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteOp.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteDelete.java
@@ -18,6 +18,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import java.io.*;
 import java.lang.annotation.*;
 
+import org.apache.juneau.annotation.*;
 import org.apache.juneau.http.annotation.*;
 
 /**
@@ -34,7 +35,8 @@ import org.apache.juneau.http.annotation.*;
 @Target(METHOD)
 @Retention(RUNTIME)
 @Inherited
-public @interface RemoteOp {
+@AnnotationGroup(RemoteOp.class)
+public @interface RemoteDelete {
 
/**
 * REST service path.
@@ -53,36 +55,16 @@ public @interface RemoteOp {
 * Example:
 * 
 *  // POST /pet
-*  @RemoteOp
+*  @RemoteDelete
 *  public void postPet(...) {...}
 * 
 *
 * 
-* Note that you can also use {@link #value()} to specify the method 
name and path in shortened form.
+* Note that you can also use {@link #value()} to specify the path in 
shortened form.
 */
String path() default "";
 
/**
-* Defines the HTTP method to use for REST calls.
-*
-* 
-* If not specified, then the method is inferred from the Java method 
name.
-*
-* Example:
-* 
-*  // POST /pet
-*  @RemoteOp
-*  public void postPet(...) {...}
-* 
-*
-* If the method cannot be inferred, then the default is 
"GET".
-*
-* 
-* Note that you can also use {@link #value()} to specify the method 
name and path in shortened form.
-*/
-   String method() default "";
-
-   /**
 * The value the remote method returns.
 *
 * 
@@ -121,25 +103,20 @@ public @interface RemoteOp {
RemoteReturn returns() default RemoteReturn.BODY;
 
/**
-* REST method name and path.
+* REST path.
 *
 * 
-* Can be used to provide a shortened combined form for the {@link 
#method()} and {@link #path()} values.
+* Can be used to provide a shortened form for the {@link #path()} 
value.
 *
 * 
 * The following examples are considered equivalent.
 * 
 *  // Normal form
-*  @RemoteOp(method=PUT, 
path="/{propertyName}")
+*  @RemoteDelete(path="/{propertyName}")
 *
 *  // Shortened form
-*  @RemoteOp("PUT /{propertyName}")
+*  @RemoteDelete("/{propertyName}")
 * 
-*
-* 
-*  
-*  The path portion is optional.
-* 
 */
String value() default "";
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteOp.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteGet.java
similarity index 79%
copy from 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteOp.java
copy to 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteGet.java
index 9ce91eb..d375a7a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/

[juneau] branch master updated: Update docs.

2021-02-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 56ae132  Update docs.
56ae132 is described below

commit 56ae132afee047c615c6b39b374d8cd1274dec69
Author: JamesBognar 
AuthorDate: Sat Feb 13 20:02:45 2021 -0500

Update docs.
---
 .../13.DynamicallyAppliedAnnotations.html  |  2 +-
 .../28.OpenApiDetails/02.OpenApiSerializers.html   |  4 +-
 .../01.RestHelloWorldExample.html  |  2 +-
 .../05.BasicRestServletGroup.html  |  2 +-
 .../03.RestInstantiation/06.BasicRestGroup.html|  2 +-
 .../04.RestAnnotation/02.RestPath.html | 10 +--
 .../06.RestMethod/01.RestmParameters.html  | 34 +-
 .../06.RestMethod/02.RestmRestRequest.html |  4 +-
 .../06.RestMethod/03.RestmRestResponse.html|  4 +-
 .../06.RestMethod/04.RestmRequestBody.html | 10 +--
 .../06.RestMethod/05.RestmRequestHeaders.html  | 14 ++--
 .../06.RestMethod/06.RestmRequestAttributes.html   | 12 ++--
 .../06.RestMethod/07.RestmRequestQuery.html| 14 ++--
 .../06.RestMethod/08.RestmRequestFormData.html | 14 ++--
 .../06.RestMethod/09.RestmPath.html| 32 --
 .../06.RestMethod/10.RestmRequestPathMatch.html| 16 ++---
 .../06.RestMethod/11.RestmReturnTypes.html | 32 +-
 .../06.RestMethod/12.RestmReaderResource.html  |  6 +-
 .../06.RestMethod/13.RestmStreamResource.html  |  4 +-
 .../06.RestMethod/14.RestmMatchers.html|  8 +--
 .../06.RestMethod/15.RestmPredefinedResponses.html | 20 +++---
 .../16.RestmPredefinedExceptions.html  |  8 +--
 .../17.RestmPredefinedHelperBeans.html | 36 +--
 .../Topics/06.juneau-rest-server/07.RestRpc.html   | 16 ++---
 .../08.RestOpenApiSchemaPartParsing.html   | 26 
 .../09.RestOpenApiSchemaPartSerializing.html   | 10 +--
 .../01.RestBodyAnnotation.html | 19 +++---
 .../02.RestFormDataAnnotation.html | 36 +--
 .../03.RestHasFormDataAnnotation.html  | 10 +--
 .../04.RestQueryAnnotation.html| 36 +--
 .../05.RestHasQueryAnnotation.html | 10 +--
 .../06.RestHeaderAnnotation.html   | 26 
 .../07.RestPathAnnotation.html | 38 +--
 .../08.RestRequestAnnotation.html  | 20 +++---
 .../09.RestResponseAnnotation.html | 74 +++---
 .../10.RestResponseHeaderAnnotation.html   | 14 ++--
 .../11.RestResponseStatusAnnotation.html   | 12 ++--
 .../11.RestHandlingFormPosts.html  |  6 +-
 .../12.RestHandlingMultiPartFormPosts.html | 48 +++---
 .../06.juneau-rest-server/13.RestSerializers.html  | 14 ++--
 .../06.juneau-rest-server/14.RestParsers.html  | 16 ++---
 .../15.RestConfigurableProperties.html |  8 +--
 .../06.juneau-rest-server/18.RestHandlingUris.html |  2 +-
 .../06.juneau-rest-server/19.RestGuards.html   | 18 +++---
 .../06.juneau-rest-server/21.RestConverters.html   | 30 -
 .../06.juneau-rest-server/22.RestMessages.html |  2 +-
 .../25.RestConfigurationFiles.html | 12 ++--
 .../27.RestClientVersioning.html   |  6 +-
 .../01.RestSwaggerBasicRestServlet.html|  4 +-
 .../29.RestSwagger/03.RestSwaggerTags.html |  3 +-
 .../29.RestSwagger/04.RestSwaggerOperations.html   |  6 +-
 .../29.RestSwagger/05.RestSwaggerParameters.html   | 17 ++---
 .../06.RestSwaggerParameterExamples.html   |  5 +-
 .../29.RestSwagger/07.RestSwaggerResponses.html|  3 +-
 .../08.RestSwaggerResponseExamples.html| 29 -
 .../29.RestSwagger/09.RestSwaggerModels.html   |  2 +-
 .../02.RestHtmlWidgets.html| 16 ++---
 .../03.RestHtmlPredefinedWidgets.html  | 13 ++--
 .../33.RestLoggingAndDebugging.html| 26 
 .../35.RestOverloadingHttpMethods.html |  2 +-
 .../37.RestCustomSerializersAndParsers.html| 74 ++
 .../11.RestcProxies/01.RestcRemote.html| 12 ++--
 .../10.juneau-rest-mock/01.MockRestClient.html |  8 +--
 .../03.MicroserviceJettyResourceClasses.html   |  2 +-
 .../05.MicroserviceJettyConfig.html| 12 ++--
 .../02.RestExamplesHelloWorldResource.html |  2 +-
 .../03.RestExamplesDtoExamples.html| 14 ++--
 .../04.RestExamplesConfigResource.html | 52 +++
 68 files changed, 535 insertions(+), 566 deletions(-)

diff --git 
a/juneau-doc/docs/Topics/02.juneau-marshall/13.DynamicallyAppliedAnnotations.html
 
b/juneau-doc/docs/Topics/02.juneau-marshall/13.DynamicallyAppliedAnnotations.html
index 7216ebd..99cb23a

[juneau] branch master updated: Remove @RestOp(priority).

2021-02-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 0d34191  Remove @RestOp(priority).
0d34191 is described below

commit 0d34191b5f6ace55ceaa6a223c392bf834e3973d
Author: JamesBognar 
AuthorDate: Fri Feb 12 18:05:32 2021 -0500

Remove @RestOp(priority).
---
 .../apache/juneau/rest/RestOperationContext.java   | 42 --
 .../juneau/rest/RestOperationContextBuilder.java   | 18 --
 .../org/apache/juneau/rest/annotation/RestOp.java  | 11 --
 .../juneau/rest/annotation/RestOpAnnotation.java   | 20 ---
 .../rest/annotation/RestOpAnnotation_Test.java |  5 ---
 5 files changed, 96 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
index 4dbee76..777a10e 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
@@ -634,40 +634,6 @@ public class RestOperationContext extends BeanContext 
implements ComparableProperty:
-* 
-*  ID:  {@link 
org.apache.juneau.rest.RestOperationContext#RESTOP_priority RESTMETHOD_priority}
-*  Name:  "RestOperationContext.priority.i"
-*  Data type:  int
-*  System property:  
RestOperationContext.priority
-*  Environment variable:  
RESTOPERATIONCONTEXT_PRIORITY
-*  Default:  0
-*  Session property:  false
-*  Annotations:
-*  
-*  {@link 
org.apache.juneau.rest.annotation.RestOp#priority()}
-*  
-*  Methods:
-*  
-*  {@link 
org.apache.juneau.rest.RestOperationContextBuilder#priority(int)}
-*  
-* 
-*
-* Description:
-* 
-* URL path pattern priority.
-*
-* 
-* To force path patterns to be checked before other path patterns, use 
a higher priority number.
-*
-* 
-* By default, it's 0, which means it will use an internal 
heuristic to determine a best match.
-*/
-   public static final String RESTOP_priority = PREFIX + ".priority.i";
-

//---
// Instance

//---
@@ -679,7 +645,6 @@ public class RestOperationContext extends BeanContext 
implements Comparable
-* URL path pattern priority.
-*
-* 
-*  {@link RestOperationContext#RESTOP_priority}
-* 
-*
-* @param value The new value for this setting.
-* @return This object (for method chaining).
-*/
-   @FluentSetter
-   public RestOperationContextBuilder priority(int value) {
-   return set(RESTOP_priority, value);
-   }
-
// 
 
@Override /* GENERATED - ContextBuilder */
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
index f868dd9..d4a9d3b 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
@@ -601,17 +601,6 @@ public @interface RestOp {
String[] path() default {};
 
/**
-* URL path pattern priority.
-*
-* 
-* To force path patterns to be checked before other path patterns, use 
a higher priority number.
-*
-* 
-* By default, it's 0, which means it will use an internal 
heuristic to determine a best match.
-*/
-   int priority() default 0;
-
-   /**
 * Supported accept media types.
 *
 * 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
index 1ba081b..67b8465 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
@@ -61,7 +61,6 @@ public class RestOpAnnotation {
Class[] matchers = new Class[0];
 

[juneau] branch master updated: REST refactoring.

2021-02-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 18595bd  REST refactoring.
18595bd is described below

commit 18595bda345588b8611da5b3bb9ba57dd3a8e01b
Author: JamesBognar 
AuthorDate: Fri Feb 12 18:01:14 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/rest/annotation/Rest.java|   3 +-
 .../juneau/rest/annotation/RestAnnotation.java |  17 ---
 .../org/apache/juneau/rest/annotation/RestOp.java  |   3 +-
 .../juneau/rest/annotation/RestOpAnnotation.java   |  17 ---
 .../rest/annotation/RestOpAnnotation_Test.java | 148 +++--
 5 files changed, 82 insertions(+), 106 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
index 765bf04..230d1b0 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
@@ -40,11 +40,10 @@ import org.apache.juneau.rest.vars.*;
  * 
  */
 @Documented
-@Target({TYPE,METHOD})
+@Target(TYPE)
 @Retention(RUNTIME)
 @Inherited
 @ContextPropertiesApply(RestAnnotation.Apply.class)
-@Repeatable(RestAnnotation.Array.class)
 public @interface Rest {
 
/**
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
index dca4223..bed2a69 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
@@ -12,8 +12,6 @@
 // 
***
 package org.apache.juneau.rest.annotation;
 
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.internal.ArrayUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
 import static org.apache.juneau.rest.RestContext.*;
@@ -1097,19 +1095,4 @@ public class RestAnnotation {
return value;
}
}
-
-   /**
-* A collection of {@link Rest @Rest annotations}.
-*/
-   @Documented
-   @Target({METHOD,TYPE})
-   @Retention(RUNTIME)
-   @Inherited
-   public static @interface Array {
-
-   /**
-* The child annotations.
-*/
-   Rest[] value();
-   }
 }
\ No newline at end of file
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
index 0d223ea..f868dd9 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
@@ -30,11 +30,10 @@ import org.apache.juneau.dto.swagger.*;
  * 
  */
 @Documented
-@Target({METHOD,TYPE})
+@Target(METHOD)
 @Retention(RUNTIME)
 @Inherited
 @ContextPropertiesApply(RestOpAnnotation.Apply.class)
-@Repeatable(RestOpAnnotation.Array.class)
 public @interface RestOp {
 
/**
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
index 031991f..1ba081b 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
@@ -12,8 +12,6 @@
 // 
***
 package org.apache.juneau.rest.annotation;
 
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.internal.ArrayUtils.*;
 import static org.apache.juneau.rest.RestContext.*;
 import static org.apache.juneau.rest.RestOperationContext.*;
@@ -669,19 +667,4 @@ public class RestOpAnnotation {
}
}
}
-
-   /**
-* A collection of {@link RestOp @RestOp annotations}.
-*/
-   @Documented
-   @Target({METHOD,TYPE})
-   @Retention(RUNTIME)
-   @Inherited
-   public static @interface Array

[juneau] branch master updated: REST refactoring.

2021-02-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 7db1ce5  REST refactoring.
7db1ce5 is described below

commit 7db1ce5b2b489a53fd4d31c628d09a43f43df354
Author: JamesBognar 
AuthorDate: Fri Feb 12 17:47:20 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RequestHeader.java |  18 +-
 .../org/apache/juneau/rest/RequestHeaders.java | 220 +
 .../java/org/apache/juneau/rest/RestRequest.java   |  19 +-
 .../juneau/http/SerializedHttpEntity_Test.java |   2 +-
 .../org/apache/juneau/http/remote/Remote_Test.java |   2 +-
 .../annotation/Rest_AllowedHeaderParams_Test.java  |   2 +-
 .../rest/client/RestClient_BasicCalls_Test.java|   2 +-
 .../juneau/rest/client/RestClient_Body_Test.java   |   6 +-
 .../client/RestClient_CallbackStrings_Test.java|   4 +-
 .../client/RestClient_Config_BeanContext_Test.java |   2 +-
 .../client/RestClient_Config_OpenApi_Test.java |   2 +-
 .../client/RestClient_Config_RestClient_Test.java  |   5 +-
 .../rest/client/RestClient_Headers_Test.java   |  12 +-
 .../client/RestClient_Response_Headers_Test.java   |   2 +-
 14 files changed, 168 insertions(+), 130 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
index 5c62f3c..e7ddfa6 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
@@ -55,7 +55,7 @@ public class RequestHeader implements Header {
}
};
 
-   private final Header header;
+   private final String name, value;
private final RestRequest request;
private HttpPartParserSession parser;
private HttpPartSchema schema;
@@ -64,11 +64,13 @@ public class RequestHeader implements Header {
 * Constructor.
 *
 * @param request The request object.
-* @param header The wrapped header.  Can be null.
+* @param name The header name.
+* @param value The header value.
 */
-   public RequestHeader(RestRequest request, Header header) {
+   public RequestHeader(RestRequest request, String name, String value) {
this.request = request;
-   this.header = header == null ? NULL_HEADER : header;
+   this.name = name;
+   this.value = value;
parser(null);
}
 
@@ -117,7 +119,7 @@ public class RequestHeader implements Header {
 * @return true if this header exists on the response.
 */
public boolean exists() {
-   return header != NULL_HEADER;
+   return value != null;
}
 
/**
@@ -720,7 +722,7 @@ public class RequestHeader implements Header {
 */
@Override /* Header */
public String getName() {
-   return header.getName();
+   return name;
}
 
/**
@@ -734,7 +736,7 @@ public class RequestHeader implements Header {
 */
@Override /* Header */
public String getValue() {
-   return header.getValue();
+   return value;
}
 
/**
@@ -745,7 +747,7 @@ public class RequestHeader implements Header {
 */
@Override /* Header */
public HeaderElement[] getElements() throws HttpException {
-   return header.getElements();
+   return new HeaderElement[0];
}
 
@Override /* Object */
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
index ecbd58c..ffd5ffe 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
@@ -12,18 +12,19 @@
 // 
***
 package org.apache.juneau.rest;
 
-import static org.apache.juneau.internal.ArrayUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
 import static java.util.Collections.*;
+import static java.util.stream.Collectors.*;
 import static java.util.Optional.*;
+import static org.apache.juneau.assertions.Assertions.*;
 
 import java.util.*;
+import java.util.function.*;
 
 import org.apache.http.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.internal.*;
-import org.apache.juneau.json.*;
-import org.apache.juneau.http.*;
+import org.apache.juneau.collections

[juneau] branch master updated: REST refactoring.

2021-02-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 38e0dbd  REST refactoring.
38e0dbd is described below

commit 38e0dbd6e49c0da75d8766de1fc9d95133187caa
Author: JamesBognar 
AuthorDate: Thu Feb 11 17:06:34 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/rest/RequestHeaders.java | 42 --
 1 file changed, 42 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
index 78e1d87..ecbd58c 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
@@ -67,30 +67,6 @@ public class RequestHeaders extends TreeMap 
{
 * 
 * Similar to {@link #put(String, Object)} but doesn't override 
existing values.
 *
-* @param defaultEntries
-*  The default entries.
-*  Can be null.
-* @return This object (for method chaining).
-*/
-   public RequestHeaders addDefault(Map defaultEntries) {
-   if (defaultEntries != null) {
-   for (Map.Entry e : 
defaultEntries.entrySet()) {
-   String key = e.getKey();
-   Object value = e.getValue();
-   String[] v = get(key);
-   if (v == null || v.length == 0 || 
StringUtils.isEmpty(v[0]))
-   put(key, stringifyAll(value));
-   }
-   }
-   return this;
-   }
-
-   /**
-* Adds default entries to these headers.
-*
-* 
-* Similar to {@link #put(String, Object)} but doesn't override 
existing values.
-*
 * @param pairs
 *  The default entries.
 *  Can be null.
@@ -108,24 +84,6 @@ public class RequestHeaders extends 
TreeMap {
}
 
/**
-* Adds a default header value on this request.
-*
-* 
-* Similar to {@link #put(String, Object)} but doesn't override 
existing values.
-*
-* @param name
-*  The header name.
-* @param value
-*  The header value.
-*  Converted to a String using toString().
-*  Ignored if value is null or blank.
-* @return This object (for method chaining).
-*/
-   public RequestHeaders addDefault(String name, Object value) {
-   return addDefault(Collections.singletonMap(name, value));
-   }
-
-   /**
 * Adds a set of header values to this object.
 *
 * @param name The header name.



[juneau] branch master updated: REST refactoring.

2021-02-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 6a15bfc  REST refactoring.
6a15bfc is described below

commit 6a15bfc9b37a336b9155680d7f6f5d335e5ac5b9
Author: JamesBognar 
AuthorDate: Wed Feb 10 12:42:14 2021 -0500

REST refactoring.
---
 .../{RestResponseBody.java => ResponseBody.java}   |  32 ++---
 ...RestResponseHeader.java => ResponseHeader.java} |   8 +-
 ...rtion.java => ResponseStatusLineAssertion.java} |   4 +-
 .../org/apache/juneau/rest/client/RestClient.java  | 130 ++---
 .../juneau/rest/client/RestClientBuilder.java  |   4 +-
 .../org/apache/juneau/rest/client/RestRequest.java |   4 +-
 .../apache/juneau/rest/client/RestResponse.java|  68 +--
 .../java/org/apache/juneau/rest/RestRequest.java   |  14 ++-
 .../rest/annotation/ResponseHeader_Test.java   |   2 +-
 .../client/RestClient_Config_BeanContext_Test.java |  28 ++---
 .../client/RestClient_Config_RestClient_Test.java  |  10 +-
 .../juneau/rest/client/RestClient_Paths_Test.java  |  24 ++--
 .../rest/client/RestClient_Response_Body_Test.java |  10 +-
 .../client/RestClient_Response_Headers_Test.java   | 118 +--
 .../rest/client/RestClient_Response_Test.java  |   2 +-
 .../apache/juneau/rest/client/RestClient_Test.java |   4 +-
 16 files changed, 234 insertions(+), 228 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseBody.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
similarity index 98%
rename from 
juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseBody.java
rename to 
juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
index 6c83177..4d95d9a 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseBody.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
@@ -47,7 +47,7 @@ import org.apache.juneau.utils.*;
  * {@doc juneau-rest-client}
  * 
  */
-public class RestResponseBody implements HttpEntity {
+public class ResponseBody implements HttpEntity {
 
private static final HttpEntity NULL_ENTITY = new HttpEntity() {
 
@@ -68,12 +68,12 @@ public class RestResponseBody implements HttpEntity {
 
@Override
public Header getContentType() {
-   return RestResponseHeader.NULL_HEADER;
+   return ResponseHeader.NULL_HEADER;
}
 
@Override
public Header getContentEncoding() {
-   return RestResponseHeader.NULL_HEADER;
+   return ResponseHeader.NULL_HEADER;
}
 
@Override
@@ -111,7 +111,7 @@ public class RestResponseBody implements HttpEntity {
 * @param response The response object.
 * @param parser The parser to use to consume the body.  Can be 
null.
 */
-   public RestResponseBody(RestClient client, RestRequest request, 
RestResponse response, Parser parser) {
+   public ResponseBody(RestClient client, RestRequest request, 
RestResponse response, Parser parser) {
this.client = client;
this.request = request;
this.response = response;
@@ -133,7 +133,7 @@ public class RestResponseBody implements HttpEntity {
 *  The new part parser to use for this body.
 * @return This object (for method chaining).
 */
-   public RestResponseBody parser(Parser value) {
+   public ResponseBody parser(Parser value) {
this.parser = value;
return this;
}
@@ -147,7 +147,7 @@ public class RestResponseBody implements HttpEntity {
 * @param value The schema.
 * @return This object (for method chaining).
 */
-   public RestResponseBody schema(HttpPartSchema value) {
+   public ResponseBody schema(HttpPartSchema value) {
this.schema = value;
return this;
}
@@ -165,7 +165,7 @@ public class RestResponseBody implements HttpEntity {
 *
 * @return This object (for method chaining).
 */
-   public RestResponseBody cache() {
+   public ResponseBody cache() {
this.cached = true;
return this;
}
@@ -511,7 +511,7 @@ public class RestResponseBody implements HttpEntity {
 *  
 *  You can also specify any of the following types:
 *  
-*  {@link RestResponseBody}/{@link HttpEntity} 
- Returns access to this object.
+*  {@link Res

[juneau] branch master updated: Javadocs.

2021-02-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 fd45a3d  Javadocs.
fd45a3d is described below

commit fd45a3d8bac93245db8e93fad6e304355d784cfc
Author: JamesBognar 
AuthorDate: Wed Feb 10 12:00:37 2021 -0500

Javadocs.
---
 .../org/apache/juneau/rest/BasicRestOperations.java| 18 --
 .../main/java/org/apache/juneau/rest/RestMatcher.java  |  6 +++---
 .../org/apache/juneau/rest/RestOperationContext.java   | 10 +-
 3 files changed, 16 insertions(+), 18 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestOperations.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestOperations.java
index aa82026..fb452b4 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestOperations.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestOperations.java
@@ -29,14 +29,12 @@ import org.apache.juneau.rest.annotation.*;
  * Basic REST operation methods.
  */
 @HtmlDocConfig(
-
// Basic page navigation links.
navlinks={
"up: request:/..",
"api: servlet:/api",
"stats: servlet:/stats"
}
-
 )
 @JsonSchemaConfig(
// Add descriptions to the following types when not specified:
@@ -48,14 +46,6 @@ import org.apache.juneau.rest.annotation.*;
// Use $ref references for bean definitions to reduce duplication in 
Swagger.
useBeanDefs="true"
 )
-@BeanConfig(
-   // POJO swaps to apply to all serializers/parsers on this method.
-   swaps={
-   // Use the SwaggerUI swap when rendering Swagger beans.
-   // This is a per-media-type swap that only applies to text/html 
requests.
-   SwaggerUI.class
-   }
-)
 public interface BasicRestOperations {
 
/**
@@ -81,6 +71,14 @@ public interface BasicRestOperations {
// Never show aside contents of page inherited from class.
aside="NONE"
)
+   @BeanConfig(
+   // POJO swaps to apply to all serializers/parsers on this 
method.
+   swaps={
+   // Use the SwaggerUI swap when rendering Swagger beans.
+   // This is a per-media-type swap that only applies to 
text/html requests.
+   SwaggerUI.class
+   }
+   )
public Swagger getSwagger(RestRequest req);
 
/**
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMatcher.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMatcher.java
index 2301dc5..196fa4f 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMatcher.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMatcher.java
@@ -36,7 +36,7 @@ import org.apache.juneau.rest.annotation.*;
  *
  * Example:
  * 
- * public class MyResource extends RestServlet {
+ * public class MyResource extends BasicRestServlet {
  *
  * @RestOp(method=GET, path="/foo", 
matchers=IsDNT.class)
  * public Object doGetWithDNT() {
@@ -51,8 +51,8 @@ import org.apache.juneau.rest.annotation.*;
  *
  * public class IsDNT extends RestMatcher {
  * @Override
- * public boolean matches(RestRequest req) {
- * return 
req.getHeader(int.class, "DNT", 0) == 1;
+ * public boolean matches(HttpServletRequest 
req) {
+ * return 
"1".equals(req.getHeader("DNT"));
  * }
  * }
  * 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
index 1ccb4bc..4dbee76 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
@@ -1944,6 +1944,11 @@ public class RestOperationContext extends BeanContext 
implements Comparable

[juneau] branch master updated: REST refactoring.

2021-02-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 42945cf  REST refactoring.
42945cf is described below

commit 42945cfe249944edc3c6760d18574e93e6469f87
Author: JamesBognar 
AuthorDate: Tue Feb 9 17:52:23 2021 -0500

REST refactoring.
---
 .../main/java/org/apache/juneau/rest/RestCall.java | 26 +++-
 .../java/org/apache/juneau/rest/RestContext.java   |  4 +--
 .../apache/juneau/rest/RestOperationContext.java   |  5 +--
 .../java/org/apache/juneau/rest/RestResponse.java  | 36 ++
 .../juneau/rest/RrpcRestOperationContext.java  |  7 +++--
 .../juneau/rest/reshandlers/DefaultHandler.java| 10 +++---
 6 files changed, 43 insertions(+), 45 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
index f9f35ca..00d45d7 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
@@ -12,6 +12,8 @@
 // 
***
 package org.apache.juneau.rest;
 
+import static java.util.Optional.*;
+
 import java.io.*;
 import java.lang.reflect.*;
 import java.util.*;
@@ -466,25 +468,19 @@ public class RestCall {
}
 
/**
-* Shortcut for calling getRestResponse().hasOutput().
-*
-* @return true if response has output.
-*/
-   public boolean hasOutput() {
-   if (rres != null)
-   return rres.hasOutput();
-   return false;
-   }
-
-   /**
-* Shortcut for calling getRestResponse().getOutput().
+* Returns the output that was set by calling {@link 
RestResponse#setOutput(Object)}.
+* 
+* 
+* If it's empty, then {@link RestResponse#setOutput(Object)} wasn't 
called.
+* If it's not empty but contains an empty, then 
response.setObject(null) was called.
+* Otherwise, {@link RestResponse#setOutput(Object)} was called 
with a non-null value.
 *
-* @return The response output.
+* @return The output object.  Never null.
 */
-   public Object getOutput() {
+   public Optional> getOutput() {
if (rres != null)
return rres.getOutput();
-   return null;
+   return rres == null ? empty() : rres.getOutput();
}
 
/**
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 47a4df4..e15c39a 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -6733,7 +6733,7 @@ public class RestContext extends BeanContext {
handleNotFound(call);
}
 
-   if (call.hasOutput()) {
+   if (call.getOutput().isPresent()) {
// Now serialize the output if there was any.
// Some subclasses may write to the 
OutputStream or Writer directly.
handleResponse(call);
@@ -6791,7 +6791,7 @@ public class RestContext extends BeanContext {
if (h.handle(req, res))
return;
 
-   Object output = res.getOutput();
+   Object output = res.getOutput().get().orElse(null);
throw new NotImplemented("No response handlers found to process 
output of type '"+(output == null ? null : output.getClass().getName())+"'");
}
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
index 479d593..1ccb4bc 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
@@ -1929,9 +1929,10 @@ public class RestOperationContext extends BeanContext 
implements Comparable> o = res.getOutput();
+   if (o.isPresent())
for (RestConverter converter : converters)
-   res.setOutput(converter.convert(req, 
res.getOutput()));
+  

[juneau] branch master updated: REST refactoring.

2021-02-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 e5d5be5  REST refactoring.
e5d5be5 is described below

commit e5d5be5d0e1a56b0e713a03ec1a6cc1dec48807f
Author: JamesBognar 
AuthorDate: Tue Feb 9 15:23:21 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RequestPath.java   |  5 ++--
 .../main/java/org/apache/juneau/rest/RestCall.java | 34 +-
 .../java/org/apache/juneau/rest/RestContext.java   | 12 
 .../apache/juneau/rest/RestOperationContext.java   |  3 +-
 .../java/org/apache/juneau/rest/RestRequest.java   |  8 ++---
 .../java/org/apache/juneau/rest/RestResponse.java  |  5 ++--
 .../java/org/apache/juneau/rest/Swagger_Test.java  |  4 +--
 .../apache/juneau/rest/testutils/TestUtils.java|  2 +-
 8 files changed, 26 insertions(+), 47 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestPath.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestPath.java
index d7e83ae..2964566 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestPath.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestPath.java
@@ -40,10 +40,9 @@ public class RequestPath extends TreeMap {
private final RestRequest req;
private HttpPartParserSession parser;
 
-   RequestPath(RestCall call) {
+   RequestPath(RestRequest req) {
super(String.CASE_INSENSITIVE_ORDER);
-   this.req = call.getRestRequest();
-   putAll(call.getPathVars());
+   this.req = req;
}
 
RequestPath parser(HttpPartParserSession parser) {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
index 5ad0edd..f9f35ca 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
@@ -111,38 +111,20 @@ public class RestCall {
/**
 * Sets the method context on this call.
 *
-* Used for logging statistics on the method.
+* 
+* This triggers the creation of the {@link RestRequest} and {@link 
RestResponse}.
 *
 * @param value The new value.
 * @return This object (for method chaining).
+* @throws Exception If thrown from the {@link RestRequest} or {@link 
RestResponse} constructors.
 */
-   public RestCall restOperationContext(RestOperationContext value) {
+   public RestCall restOperationContext(RestOperationContext value) throws 
Exception {
opContext = value;
beanFactory.addBean(RestOperationContext.class, value);
-   return this;
-   }
-
-   /**
-* Set the {@link RestRequest} object on this REST call.
-*
-* @param value The {@link RestRequest} object on this REST call.
-* @return This object (for method chaining).
-*/
-   public RestCall restRequest(RestRequest value) {
-   rreq = value;
-   beanFactory.addBean(RestRequest.class, value);
-   return this;
-   }
-
-   /**
-* Set the {@link RestResponse} object on this REST call.
-*
-* @param value The {@link RestResponse} object on this REST call.
-* @return This object (for method chaining).
-*/
-   public RestCall restResponse(RestResponse value) {
-   rres = value;
-   beanFactory.addBean(RestResponse.class, value);
+   rreq = context.createRequest(this);
+   beanFactory.addBean(RestRequest.class, rreq);
+   rres = context.createResponse(this);
+   beanFactory.addBean(RestResponse.class, rres);
return this;
}
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index e41681c..47a4df4 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -6633,25 +6633,23 @@ public class RestContext extends BeanContext {
 * This method is called immediately after {@link #startCall(RestCall)} 
has been called.
 *
 * @param call The current REST call.
-* @param opContext The context of the matched Java method.
 * @return The wrapped request object.
 * @throws Exception If any errors occur trying to interpret the 
request

[juneau] branch master updated: REST refactoring.

2021-02-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 77e6dae  REST refactoring.
77e6dae is described below

commit 77e6dae564c7b750fb112dd217d1c0271514c882
Author: JamesBognar 
AuthorDate: Tue Feb 9 12:52:48 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RestResponse.java  | 55 --
 .../juneau/rest/logging/BasicRestLogger.java   |  2 +-
 .../juneau/rest/reshandlers/DefaultHandler.java|  2 +-
 .../rest/annotation/Restx_Serializers_Test.java|  6 +--
 4 files changed, 25 insertions(+), 40 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
index f96fe8b..febc7a4 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
@@ -61,23 +61,25 @@ public final class RestResponse extends 
HttpServletResponseWrapper {
 
private HttpServletResponse inner;
private final RestRequest request;
-   private RestOperationContext opContext;
+
private Object output;   // The POJO being sent to 
the output.
private boolean isNullOutput;// The output is null (as 
opposed to not being set at all)
private ServletOutputStream sos;
private FinishableServletOutputStream os;
private FinishablePrintWriter w;
-
private ResponseBeanMeta responseMeta;
 
/**
 * Constructor.
 */
-   RestResponse(RestCall call, RestOperationContext roc) throws Exception {
+   RestResponse(RestCall call, RestOperationContext opContext) throws 
Exception {
super(call.getResponse());
-   this.inner = call.getResponse();
-   this.request = call.getRestRequest();
call.restResponse(this);
+
+   inner = call.getResponse();
+   request = call.getRestRequest();
+   responseMeta = opContext.getResponseMeta();
+
RestContext context = call.getContext();
 
try {
@@ -92,17 +94,15 @@ public final class RestResponse extends 
HttpServletResponseWrapper {
throw new BadRequest(e1, "Invalid format for header 
'x-response-headers'.  Must be in URL-encoded format.");
}
 
-   this.opContext = roc;
-
// Find acceptable charset
String h = request.getHeader("accept-charset");
String charset = null;
if (h == null)
-   charset = roc.getDefaultCharset();
+   charset = opContext.getDefaultCharset();
else for (StringRange r : StringRanges.of(h).getRanges()) {
if (r.getQValue() > 0) {
if (r.getName().equals("*"))
-   charset = roc.getDefaultCharset();
+   charset = opContext.getDefaultCharset();
else if (Charset.isSupported(r.getName()))
charset = r.getName();
if (charset != null)
@@ -112,46 +112,31 @@ public final class RestResponse extends 
HttpServletResponseWrapper {
 
for (Header e : 
request.getContext().getDefaultResponseHeaders())
setHeaderSafe(e.getName(), stringify(e.getValue()));
-   for (Header e : roc.getDefaultResponseHeaders())
+   for (Header e : opContext.getDefaultResponseHeaders())
setHeaderSafe(e.getName(), stringify(e.getValue()));
 
if (charset == null)
throw new NotAcceptable("No supported charsets in 
header ''Accept-Charset'': ''{0}''", request.getHeader("Accept-Charset"));
super.setCharacterEncoding(charset);
 
-   this.responseMeta = roc.getResponseMeta();
-   }
-
-   /**
-* Gets the serializer group for the response.
-*
-* 
-*  {@doc RestSerializers}
-* 
-*
-* @return The serializer group for the response.
-*/
-   public SerializerGroup getSerializers() {
-   return opContext == null ? SerializerGroup.EMPTY : 
opContext.getSerializers();
}
 
/**
-* Returns the media types that are valid for Accept headers on 
the request.
+* Returns access to the inner {@link RestContext} of the class of this 
method.
 *
-* @return The set of media 

[juneau] branch master updated: REST refactoring.

2021-02-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 1525ea6  REST refactoring.
1525ea6 is described below

commit 1525ea64c10c77b6d05d6eb563bb8372b9f1a1e6
Author: JamesBognar 
AuthorDate: Tue Feb 9 12:35:23 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RequestHeader.java |   4 +-
 .../apache/juneau/rest/RestOperationContext.java   |  24 ++-
 .../java/org/apache/juneau/rest/RestRequest.java   | 179 -
 .../juneau/rest/params/ResponseBeanParam.java  |   2 +-
 .../juneau/rest/params/ResponseHeaderParam.java|   2 +-
 .../juneau/rest/reshandlers/DefaultHandler.java|   2 +-
 6 files changed, 95 insertions(+), 118 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
index 6f76f60..f1b393f 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
@@ -178,7 +178,7 @@ public class RequestHeader implements Header {
 * @throws ParseException If value could not be parsed.
 */
public  T as(Type type, Type...args) throws ParseException {
-   return as(request.getClassMeta(type, args));
+   return as(request.getBeanSession().getClassMeta(type, args));
}
 
/**
@@ -205,7 +205,7 @@ public class RequestHeader implements Header {
 * @throws ParseException If value could not be parsed.
 */
public  T as(Class type) throws ParseException {
-   return as(request.getClassMeta(type));
+   return as(request.getBeanSession().getClassMeta(type));
}
 
/**
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
index 7957f58..855bcb1 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
@@ -1547,7 +1547,13 @@ public class RestOperationContext extends BeanContext 
implements Comparablenull if it's not annotated with {@link Response @Response}.
+*/
+   public ResponseBeanMeta getResponseBeanMeta(Object o) {
if (o == null)
return null;
Class c = o.getClass();
@@ -1563,7 +1569,13 @@ public class RestOperationContext extends BeanContext 
implements Comparablenull if it's not annotated with {@link ResponseHeader @ResponseHeader}.
+*/
+   public ResponsePartMeta getResponseHeaderMeta(Object o) {
if (o == null)
return null;
Class c = o.getClass();
@@ -1584,7 +1596,13 @@ public class RestOperationContext extends BeanContext 
implements Comparablenull if it's not annotated with {@link ResponseBody @ResponseBody}.
+*/
+   public ResponsePartMeta getResponseBodyMeta(Object o) {
if (o == null)
return null;
Class c = o.getClass();
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index a9f65c8..1c0906e 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -110,6 +110,8 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
private final HttpPartSerializerSession partSerializerSession;
private final HttpPartParserSession partParserSession;
private final RestCall call;
+   private final SerializerSessionArgs serializerSessionArgs;
+   private final ParserSessionArgs parserSessionArgs;
 
// Lazy initialized.
private VarResolverSession varSession;
@@ -118,21 +120,18 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
private String charset, authorityPath;
private Config config;
private Swagger swagger;
-   private SerializerSessionArgs serializerSessionArgs;
-   private ParserSessionArgs parserSessionArgs;
 
/**
 * Constructor.
 */
RestRequest(RestCall call, RestOperationContext opContext) throws 
Exception {
super(call.getRequest());
+   call.restRequest(this);
 
this.call = call;
this.opContext = opContext

[juneau] branch master updated: REST refactoring.

2021-02-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 389  REST refactoring.
389 is described below

commit 38980163975d63f588b7e0d8a46af9953260
Author: JamesBognar 
AuthorDate: Tue Feb 9 12:07:27 2021 -0500

REST refactoring.
---
 .../src/main/java/org/apache/juneau/rest/RestCall.java   | 1 -
 .../src/main/java/org/apache/juneau/rest/RestRequest.java| 9 -
 2 files changed, 10 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
index c721e83..5ad0edd 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
@@ -142,7 +142,6 @@ public class RestCall {
 */
public RestCall restResponse(RestResponse value) {
rres = value;
-   rreq.setResponse(value);
beanFactory.addBean(RestResponse.class, value);
return this;
}
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index d5d35a8..a9f65c8 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -111,9 +111,6 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
private final HttpPartParserSession partParserSession;
private final RestCall call;
 
-   // Post-constructor initialized.
-   private RestResponse res;
-
// Lazy initialized.
private VarResolverSession varSession;
private RequestFormData formData;
@@ -189,11 +186,6 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
inner = CachingHttpServletRequest.wrap(inner);
}
 
-   RestRequest setResponse(RestResponse res) {
-   this.res = res;
-   return this;
-   }
-
/**
 * Returns a string of the form "HTTP method-name full-url"
 *
@@ -1061,7 +1053,6 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
.getVarResolver()
.createSession(call.getBeanFactory())
.bean(RestRequest.class, this)
-   .bean(RestResponse.class, res)
.bean(RestCall.class, call);
return varSession;
}



[juneau] branch master updated: REST refactoring.

2021-02-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 2e5e343  REST refactoring.
2e5e343 is described below

commit 2e5e343ec79de3252bf0f50122a3ba7998a8c008
Author: JamesBognar 
AuthorDate: Tue Feb 9 11:58:15 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RequestBody.java   |  10 +-
 .../org/apache/juneau/rest/RequestFormData.java|   2 +-
 .../org/apache/juneau/rest/RequestHeaders.java |   2 +-
 .../java/org/apache/juneau/rest/RequestPath.java   |   2 +-
 .../java/org/apache/juneau/rest/RequestQuery.java  |   2 +-
 .../java/org/apache/juneau/rest/RestRequest.java   | 207 ++---
 .../java/org/apache/juneau/rest/RestResponse.java  |   2 +-
 .../juneau/rest/logging/BasicRestLogger.java   |   2 +-
 .../apache/juneau/rest/params/FormDataParam.java   |   2 +-
 .../org/apache/juneau/rest/params/HeaderParam.java |   2 +-
 .../org/apache/juneau/rest/params/PathParam.java   |   2 +-
 .../org/apache/juneau/rest/params/QueryParam.java  |   2 +-
 .../juneau/rest/params/ResponseHeaderParam.java|   2 +-
 .../juneau/rest/reshandlers/DefaultHandler.java|   4 +-
 .../apache/juneau/rest/vars/RequestSwaggerVar.java |   2 +-
 .../juneau/rest/vars/SerializedRequestAttrVar.java |   2 +-
 .../juneau/rest/widget/ContentTypeMenuItem.java|   2 +-
 .../juneau/rest/annotation/Restx_Parsers_Test.java |   6 +-
 18 files changed, 84 insertions(+), 171 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
index 90043f6..1693d84 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
@@ -331,10 +331,12 @@ public class RequestBody {
 
Encoder enc = getEncoder();
 
+   InputStream is = req.getHttpServletRequest().getInputStream();
+   
if (enc == null)
-   return new 
BoundedServletInputStream(req.getRawInputStream(), maxInput);
+   return new BoundedServletInputStream(is, maxInput);
 
-   return new 
BoundedServletInputStream(enc.getInputStream(req.getRawInputStream()), 
maxInput);
+   return new BoundedServletInputStream(enc.getInputStream(is), 
maxInput);
}
 
/**
@@ -469,7 +471,7 @@ public class RequestBody {
 
throw new UnsupportedMediaType(
"Unsupported media-type in request header 
''Content-Type'': ''{0}''\n\tSupported media-types: {1}",
-   headers.getContentType().getValue(), 
req.getParsers().getSupportedMediaTypes()
+   headers.getContentType().getValue(), 
req.getOpContext().getParsers().getSupportedMediaTypes()
);
}
 
@@ -502,7 +504,7 @@ public class RequestBody {
 * @return The content length of the body in bytes.
 */
public int getContentLength() {
-   return contentLength == 0 ? req.getRawContentLength() : 
contentLength;
+   return contentLength == 0 ? 
req.getHttpServletRequest().getContentLength() : contentLength;
}
 
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestFormData.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestFormData.java
index cc8e107..8616f4d 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestFormData.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestFormData.java
@@ -855,7 +855,7 @@ public class RequestFormData extends 
LinkedHashMap {
/* Workhorse method */
private  T getInner(HttpPartParserSession parser, HttpPartSchema 
schema, String name, T def, ClassMeta cm) throws BadRequest, 
InternalServerError {
if (parser == null)
-   parser = req.getPartParser();
+   parser = req.getPartParserSession();
try {
if (cm.isMapOrBean() && isOneOf(name, "*", "")) {
OMap m = new OMap();
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
index 0d46806..ae4d721 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java
@@ -511,7 +511,7 @@ public class RequestHeaders extends 

[juneau] branch master updated: REST refactoring.

2021-02-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 bf22009  REST refactoring.
bf22009 is described below

commit bf22009c6fbc7ff0be139c7af133e2a8969bf00e
Author: JamesBognar 
AuthorDate: Tue Feb 9 11:18:20 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RequestBody.java   |  2 +-
 .../java/org/apache/juneau/rest/RestRequest.java   | 67 ++
 .../juneau/rest/reshandlers/DefaultHandler.java|  2 +-
 3 files changed, 20 insertions(+), 51 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
index 73dfae0..90043f6 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestBody.java
@@ -439,7 +439,7 @@ public class RequestBody {
ParserSessionArgs pArgs = ParserSessionArgs
.create()
.properties(req.getAttributes())
-   .javaMethod(req.getJavaMethod())
+   .javaMethod(req.getOpContext().getJavaMethod())
.locale(locale)
.timeZone(timeZone)
.mediaType(mediaType)
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index aadb686..e8a5429 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -99,11 +99,10 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
 
private HttpServletRequest inner;
private final RestContext context;
-   private Optional opContext = Optional.empty();
+   private final RestOperationContext opContext;
 
private final String method;
private RequestBody body;
-   private Method javaMethod;
private BeanSession beanSession;
private VarResolverSession varSession;
private final RequestQuery queryParams;
@@ -160,8 +159,7 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
 
this.pathParams = new RequestPath(call);
 
-   this.opContext = Optional.of(roc);
-   this.javaMethod = roc.getJavaMethod();
+   this.opContext = roc;
this.beanSession = roc.createSession();
this.partParserSession = 
roc.getPartParser().createPartSession(getParserSessionArgs());
this.partSerializerSession = 
roc.getPartSerializer().createPartSession(getSerializerSessionArgs());
@@ -274,7 +272,7 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
 * @return The set of media types registered in the serializer group of 
this request.
 */
public List getProduces() {
-   return opContext.isPresent() ? 
opContext.get().getSupportedAcceptTypes() : emptyList();
+   return opContext.getSupportedAcceptTypes();
}
 
/**
@@ -283,7 +281,7 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
 * @return The set of media types registered in the parser group of 
this request.
 */
public List getConsumes() {
-   return opContext.isPresent() ? 
opContext.get().getSupportedContentTypes() : emptyList();
+   return opContext.getSupportedContentTypes();
}
 
/**
@@ -297,7 +295,7 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
 *  Never null.
 */
public ContextProperties getContextProperties() {
-   return opContext.isPresent() ? 
opContext.get().getContextProperties() : ContextProperties.DEFAULT;
+   return opContext.getContextProperties();
}
 
/**
@@ -323,8 +321,8 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
if (i > 0)
charset = h.substring(i+9).trim();
}
-   if (charset == null && opContext.isPresent())
-   charset = opContext.get().getDefaultCharset();
+   if (charset == null)
+   charset = opContext.getDefaultCharset();
if (charset == null)
charset = "UTF-8";
if (

[juneau] branch master updated: REST refactoring.

2021-02-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 870107e  REST refactoring.
870107e is described below

commit 870107e9e26c21db8b9160393d12a0c14a176ebf
Author: JamesBognar 
AuthorDate: Tue Feb 9 10:51:08 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RestContext.java   | 16 ---
 .../apache/juneau/rest/RestOperationContext.java   |  7 +--
 .../juneau/rest/RestOperationContextBuilder.java   |  4 --
 .../java/org/apache/juneau/rest/RestRequest.java   | 55 +-
 .../java/org/apache/juneau/rest/RestResponse.java  | 10 +---
 .../java/org/apache/juneau/rest/Swagger_Test.java  |  8 +++-
 .../apache/juneau/rest/testutils/TestUtils.java|  3 +-
 7 files changed, 41 insertions(+), 62 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 5eb2e65..e41681c 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -6633,23 +6633,25 @@ public class RestContext extends BeanContext {
 * This method is called immediately after {@link #startCall(RestCall)} 
has been called.
 *
 * @param call The current REST call.
+* @param opContext The context of the matched Java method.
 * @return The wrapped request object.
-* @throws ServletException If any errors occur trying to interpret the 
request.
+* @throws Exception If any errors occur trying to interpret the 
request.
 */
-   public RestRequest createRequest(RestCall call) throws ServletException 
{
-   return new RestRequest(call);
+   public RestRequest createRequest(RestCall call, RestOperationContext 
opContext) throws Exception {
+   return new RestRequest(call, opContext);
}
 
/**
 * Creates a {@link RestResponse} object based on the specified 
incoming {@link HttpServletResponse} object
-* and the request returned by {@link #createRequest(RestCall)}.
+* and the request returned by {@link 
#createRequest(RestCall,RestOperationContext)}.
 *
 * @param call The current REST call.
+* @param opContext The context of the matched Java method.
 * @return The wrapped response object.
-* @throws ServletException If any errors occur trying to interpret the 
request or response.
+* @throws Exception If any errors occur trying to interpret the 
request or response.
 */
-   public RestResponse createResponse(RestCall call) throws 
ServletException {
-   return new RestResponse(call);
+   public RestResponse createResponse(RestCall call, RestOperationContext 
opContext) throws Exception {
+   return new RestResponse(call, opContext);
}
 
/**
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
index 92d0c83..7957f58 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
@@ -1838,8 +1838,8 @@ public class RestOperationContext extends BeanContext 
implements Comparable e = getHeaderNames(); 
e.hasMoreElements();) {
-   String name = e.nextElement();
-   headers.put(name, super.getHeaders(name));
-   }
+   headers = new RequestHeaders(this);
+   for (Enumeration e = getHeaderNames(); 
e.hasMoreElements();) {
+   String name = e.nextElement();
+   headers.put(name, super.getHeaders(name));
+   }
 
-   body = new RequestBody(this);
+   body = new RequestBody(this);
 
-   if (context.isAllowBodyParam()) {
-   String b = getQuery().getString("body");
-   if (b != null) {
-   headers.put("Content-Type", 
UonSerializer.DEFAULT.getResponseContentType());
-   body.load(MediaType.UON, 
UonParser.DEFAULT, b.getBytes(UTF8));
-   }
+   if (context.isAllowBodyParam()) {
+   String b = getQuery().getString("body");
+   if (b != null) {
+  

[juneau] branch master updated: REST refactoring.

2021-02-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 959bc97  REST refactoring.
959bc97 is described below

commit 959bc97251b3a1c062df9a503c0fb2449e4f7985
Author: JamesBognar 
AuthorDate: Tue Feb 9 10:20:19 2021 -0500

REST refactoring.
---
 .../apache/juneau/rest/ClientVersionMatcher.java   |  4 +-
 .../main/java/org/apache/juneau/rest/RestCall.java | 54 +++---
 .../java/org/apache/juneau/rest/RestContext.java   |  3 --
 .../java/org/apache/juneau/rest/RestMatcher.java   |  4 +-
 .../apache/juneau/rest/RestOperationContext.java   | 10 ++--
 .../java/org/apache/juneau/rest/RestRequest.java   | 28 +--
 .../rest/matchers/MultipartFormDataMatcher.java|  4 +-
 .../rest/matchers/UrlEncodedFormMatcher.java   |  4 +-
 .../rest/Rest_PredefinedStatusCodes_Test.java  |  4 +-
 .../rest/annotation/RestOp_Matchers_Test.java  | 12 +++--
 10 files changed, 77 insertions(+), 50 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ClientVersionMatcher.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ClientVersionMatcher.java
index aa56c7f..e135707 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ClientVersionMatcher.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ClientVersionMatcher.java
@@ -14,6 +14,8 @@ package org.apache.juneau.rest;
 
 import static org.apache.juneau.internal.StringUtils.*;
 
+import javax.servlet.http.*;
+
 import org.apache.juneau.internal.*;
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.annotation.*;
@@ -45,7 +47,7 @@ public class ClientVersionMatcher extends RestMatcher {
}
 
@Override /* RestMatcher */
-   public boolean matches(RestRequest req) {
+   public boolean matches(HttpServletRequest req) {
return range.matches(req.getHeader(clientVersionHeader));
}
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
index 019a03e..c721e83 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestCall.java
@@ -46,6 +46,8 @@ public class RestCall {
private long startTime = System.currentTimeMillis();
private RestLogger logger;
private BeanFactory beanFactory;
+   private Map queryParams;
+   private String method;
 
private UrlPathMatch urlPathMatch;
 
@@ -127,7 +129,6 @@ public class RestCall {
 * @return This object (for method chaining).
 */
public RestCall restRequest(RestRequest value) {
-   request(value);
rreq = value;
beanFactory.addBean(RestRequest.class, value);
return this;
@@ -140,7 +141,6 @@ public class RestCall {
 * @return This object (for method chaining).
 */
public RestCall restResponse(RestResponse value) {
-   response(value);
rres = value;
rreq.setResponse(value);
beanFactory.addBean(RestResponse.class, value);
@@ -365,7 +365,10 @@ public class RestCall {
 */
public RestCall finish() {
try {
-   res.flushBuffer();
+   if (rres != null)
+   rres.flushBuffer();
+   else
+   res.flushBuffer();
req.setAttribute("ExecTime", System.currentTimeMillis() 
- startTime);
if (rreq != null)
rreq.close();
@@ -423,14 +426,53 @@ public class RestCall {
}
 
/**
+* Returns the query parameters on the request.
+*
+* 
+* Unlike {@link HttpServletRequest#getParameterMap()}, this doesn't 
parse the content body if it's a POST.
+*
+* @return The query parameters on the request.
+*/
+   public Map getQueryParams() {
+   if (queryParams == null) {
+   if (req.getMethod().equalsIgnoreCase("POST"))
+   queryParams = 
RestUtils.parseQuery(req.getQueryString(), new LinkedHashMap<>());
+   else
+   queryParams = req.getParameterMap();
+   }
+   return queryParams;
+   }
+
+   /**
 * Returns the HTTP method name.
 *
 * @return The HTTP method name, always uppercased.
 */
public String getMethod() {
- 

[juneau] branch master updated: REST refactoring.

2021-02-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 33779c5  REST refactoring.
33779c5 is described below

commit 33779c545059f85d691a77548bfffd203ca12e55
Author: JamesBognar 
AuthorDate: Tue Feb 9 09:17:56 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/http/HeaderList.java|  27 ++
 .../org/apache/juneau/http/NamedAttributeList.java |  16 +-
 .../juneau/rest/BasicSwaggerProviderSession.java   |   6 +-
 .../org/apache/juneau/rest/RequestAttributes.java  |   4 +-
 .../org/apache/juneau/rest/RequestFormData.java|   2 +-
 .../org/apache/juneau/rest/RequestHeaders.java |   2 +-
 .../java/org/apache/juneau/rest/RequestQuery.java  |   2 +-
 .../main/java/org/apache/juneau/rest/RestCall.java |   4 +-
 .../java/org/apache/juneau/rest/RestChildren.java  |   2 +-
 .../java/org/apache/juneau/rest/RestContext.java   |  79 ++--
 .../org/apache/juneau/rest/RestContextBuilder.java |   6 +-
 .../apache/juneau/rest/RestOperationContext.java   | 449 +++--
 .../juneau/rest/RestOperationContextBuilder.java   |   2 +-
 .../java/org/apache/juneau/rest/RestRequest.java   |  39 +-
 .../java/org/apache/juneau/rest/RestResponse.java  |  18 +-
 .../java/org/apache/juneau/rest/RestServlet.java   |   2 +-
 .../juneau/rest/RrpcRestOperationContext.java  |   4 +-
 17 files changed, 385 insertions(+), 279 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderList.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderList.java
index 68a07f2..d74b387 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderList.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderList.java
@@ -74,6 +74,33 @@ public class HeaderList extends AList {
}
 
/**
+* Appends or replaces the header values in this list.
+*
+* 
+* If the header already exists in this list, it will be replaced with 
the new value.
+* Otherwise it will be appended to the end of this list.
+*
+* @param values The values to append or replace in this list.
+* @return This object (for method chaining).
+*/
+   public HeaderList appendUnique(Collection values) {
+   for (Header h : values) {
+   boolean replaced = false;
+   for (ListIterator li = listIterator(); 
li.hasNext();) {
+   Header h2 = li.next();
+   if (h2.getName().equalsIgnoreCase(h.getName())) 
{
+   li.set(h);
+   replaced = true;
+   break;
+   }
+   }
+   if (! replaced)
+   add(h);
+   }
+   return this;
+   }
+
+   /**
 * Returns the contents of this list as a {@link Header} array.
 *
 * @return The contents of this list as a {@link Header} array.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NamedAttributeList.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NamedAttributeList.java
index e548652..9426125 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NamedAttributeList.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NamedAttributeList.java
@@ -55,7 +55,7 @@ public class NamedAttributeList extends AList 
{
 * @param values The values to append or replace in this list.
 * @return This object (for method chaining).
 */
-   public NamedAttributeList appendUnique(NamedAttribute...values) {
+   public NamedAttributeList appendUnique(List values) {
for (NamedAttribute h : values) {
boolean replaced = false;
for (ListIterator li = listIterator(); 
li.hasNext();) {
@@ -73,6 +73,20 @@ public class NamedAttributeList extends 
AList {
}
 
/**
+* Appends or replaces the named attribute values in this list.
+*
+* 
+* If the named attribute already exists in this list, it will be 
replaced with the new value.
+* Otherwise it will be appended to the end of this list.
+*
+* @param values The values to append or replace in this list.
+* @return This object (for method chaining).
+*/
+   public NamedAttributeList appendUnique(NamedAttribute...values) {
+   return appendUnique(Arrays.asList(values));
+   }
+
+   /**
 * Returns the contents of this list as a {@link NamedAttribute

[juneau] branch master updated: Rename PropertyStore to ContextProperties.

2021-02-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 a77a400  Rename PropertyStore to ContextProperties.
a77a400 is described below

commit a77a4006a00f2861a80b2adbc74eed1820131a10
Author: JamesBognar 
AuthorDate: Mon Feb 8 17:43:36 2021 -0500

Rename PropertyStore to ContextProperties.
---
 .../main/java/org/apache/juneau/BeanContext.java   |  2 +-
 .../src/main/java/org/apache/juneau/Context.java   |  2 +-
 .../java/org/apache/juneau/ContextBuilder.java | 16 
 .../java/org/apache/juneau/ContextProperties.java  |  4 ++--
 .../apache/juneau/ContextPropertiesBuilder.java| 10 +-
 .../11.ContextsBuildersSessionsPropertyStores.html | 22 +++---
 .../12.ConfigStores/03.CustomConfigStores.html |  8 
 .../14.RestcExtendingRestClient.html   |  2 +-
 juneau-doc/src/main/javadoc/resources/docs.txt |  2 +-
 .../org/apache/juneau/rest/client/RestClient.java  |  8 
 .../java/org/apache/juneau/rest/RestConverter.java |  2 +-
 .../java/org/apache/juneau/rest/widget/Widget.java |  2 +-
 12 files changed, 40 insertions(+), 40 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 0c41a3b..912b098 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
@@ -143,7 +143,7 @@ import org.apache.juneau.utils.ReflectionMapBuilder;
  * 
  *
  * 
- * {@doc ContextsBuildersSessionsPropertyStores}
+ * {@doc ContextsBuildersSessionsContextProperties}
  * 
  */
 @SuppressWarnings({"unchecked","rawtypes"})
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
index ae97902..355cdc0 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
@@ -33,7 +33,7 @@ import org.apache.juneau.transform.*;
  * Subclasses MUST implement the following constructor:
  *
  * 
- * public T(PropertyStore);
+ * public T(ContextProperties);
  * 
  *
  * 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
index f57f09b..4969b42 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
@@ -107,16 +107,16 @@ public abstract class ContextBuilder {
 * Example:
 * 
 *  // Create a free-form set of properties.
-*  PropertyStore ps = PropertyStore
+*  ContextProperties properties = ContextProperties
 *  .create()
 *  .set(BEAN_sortMaps)
 *  .set(BEAN_sortProperties)
 *  .build();
 *
 *  // Create a serializer that uses those settings.
-*  WriterSerializer s = JsonSerializer
+*  WriterSerializer serializer = JsonSerializer
 *  .create()
-*  .apply(ps)
+*  .apply(properties)
 *  .build();
 * 
 *
@@ -141,17 +141,17 @@ public abstract class ContextBuilder {
 *  
@BeanConfig(sortProperties="$S{sortProperties,false}")
 *  public class MyClass {...}
 *
-*  // Find all annotations that themselves are annotated with 
@PropertyStoreApply.
-*  AnnotationList al = 
ClassInfo.of(MyClass.class)
+*  // Find all annotations that themselves are annotated with 
@ContextPropertiesApply.
+*  AnnotationList al = 
ClassInfo.of(MyClass.class)
 *  
.getAnnotationList(ConfigAnnotationFilter.INSTANCE);
 *
 *  // Use the default VarResolver to resolve any variables in 
the annotation fields.
-*  VarResolverSession vs = 
VarResolver.DEFAULT.createSession();
+*  VarResolverSession vs = 
VarResolver.DEFAULT.createSession();
 *
 *  // Apply any settings found on the annotations.
-*  WriterSerializer s = JsonSerializer
+*  WriterSerializer serializer = JsonSerializer
 *  .create()
-*  .applyAnnotations(al, vs)
+*  .applyAnnotations(al, vs)
 *  .build();
 * 
 *
diff --git 
a/juneau-core/juneau-marshall/s

[juneau] branch master updated: Rename PropertyStore to ContextProperties.

2021-02-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 4d63f67  Rename PropertyStore to ContextProperties.
4d63f67 is described below

commit 4d63f6777bbc0592156205dec3aa5b66517e2e92
Author: JamesBognar 
AuthorDate: Mon Feb 8 17:33:19 2021 -0500

Rename PropertyStore to ContextProperties.
---
 .../src/main/java/org/apache/juneau/jena/annotation/Rdf.java  | 2 +-
 .../main/java/org/apache/juneau/jena/annotation/RdfConfig.java| 2 +-
 .../src/main/java/org/apache/juneau/ContextBuilder.java   | 6 +++---
 .../src/main/java/org/apache/juneau/annotation/Bean.java  | 2 +-
 .../src/main/java/org/apache/juneau/annotation/BeanConfig.java| 2 +-
 .../src/main/java/org/apache/juneau/annotation/BeanIgnore.java| 2 +-
 .../src/main/java/org/apache/juneau/annotation/Beanc.java | 2 +-
 .../src/main/java/org/apache/juneau/annotation/Beanp.java | 2 +-
 .../{PropertyStoreApply.java => ContextPropertiesApply.java}  | 2 +-
 .../src/main/java/org/apache/juneau/annotation/Example.java   | 2 +-
 .../src/main/java/org/apache/juneau/annotation/Marshalled.java| 2 +-
 .../src/main/java/org/apache/juneau/annotation/NameProperty.java  | 2 +-
 .../main/java/org/apache/juneau/annotation/ParentProperty.java| 2 +-
 .../src/main/java/org/apache/juneau/annotation/Swap.java  | 2 +-
 .../src/main/java/org/apache/juneau/annotation/Uri.java   | 2 +-
 .../src/main/java/org/apache/juneau/csv/annotation/Csv.java   | 2 +-
 .../src/main/java/org/apache/juneau/csv/annotation/CsvConfig.java | 2 +-
 .../src/main/java/org/apache/juneau/html/annotation/Html.java | 2 +-
 .../main/java/org/apache/juneau/html/annotation/HtmlConfig.java   | 2 +-
 .../java/org/apache/juneau/html/annotation/HtmlDocConfig.java | 2 +-
 .../src/main/java/org/apache/juneau/html/annotation/HtmlLink.java | 2 +-
 .../src/main/java/org/apache/juneau/http/annotation/Body.java | 2 +-
 .../src/main/java/org/apache/juneau/http/annotation/FormData.java | 2 +-
 .../src/main/java/org/apache/juneau/http/annotation/Header.java   | 2 +-
 .../src/main/java/org/apache/juneau/http/annotation/Path.java | 2 +-
 .../src/main/java/org/apache/juneau/http/annotation/Query.java| 2 +-
 .../src/main/java/org/apache/juneau/http/annotation/Request.java  | 2 +-
 .../src/main/java/org/apache/juneau/http/annotation/Response.java | 2 +-
 .../main/java/org/apache/juneau/http/annotation/ResponseBody.java | 2 +-
 .../java/org/apache/juneau/http/annotation/ResponseHeader.java| 2 +-
 .../java/org/apache/juneau/http/annotation/ResponseStatus.java| 2 +-
 .../src/main/java/org/apache/juneau/jso/annotation/Jso.java   | 2 +-
 .../src/main/java/org/apache/juneau/jso/annotation/JsoConfig.java | 2 +-
 .../src/main/java/org/apache/juneau/json/annotation/Json.java | 2 +-
 .../main/java/org/apache/juneau/json/annotation/JsonConfig.java   | 2 +-
 .../org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.java | 2 +-
 .../main/java/org/apache/juneau/jsonschema/annotation/Schema.java | 2 +-
 .../main/java/org/apache/juneau/msgpack/annotation/MsgPack.java   | 2 +-
 .../java/org/apache/juneau/msgpack/annotation/MsgPackConfig.java  | 2 +-
 .../src/main/java/org/apache/juneau/oapi/annotation/OpenApi.java  | 2 +-
 .../java/org/apache/juneau/oapi/annotation/OpenApiConfig.java | 2 +-
 .../java/org/apache/juneau/parser/annotation/ParserConfig.java| 2 +-
 .../java/org/apache/juneau/plaintext/annotation/PlainText.java| 2 +-
 .../org/apache/juneau/plaintext/annotation/PlainTextConfig.java   | 2 +-
 .../src/main/java/org/apache/juneau/reflect/AnnotationInfo.java   | 8 
 .../java/org/apache/juneau/reflect/ConfigAnnotationFilter.java| 4 ++--
 .../src/main/java/org/apache/juneau/reflect/MethodInfo.java   | 6 +++---
 .../org/apache/juneau/serializer/annotation/SerializerConfig.java | 2 +-
 .../src/main/java/org/apache/juneau/soap/annotation/SoapXml.java  | 2 +-
 .../java/org/apache/juneau/soap/annotation/SoapXmlConfig.java | 2 +-
 .../src/main/java/org/apache/juneau/uon/annotation/Uon.java   | 2 +-
 .../src/main/java/org/apache/juneau/uon/annotation/UonConfig.java | 2 +-
 .../org/apache/juneau/urlencoding/annotation/UrlEncoding.java | 2 +-
 .../apache/juneau/urlencoding/annotation/UrlEncodingConfig.java   | 2 +-
 .../src/main/java/org/apache/juneau/xml/annotation/Xml.java   | 2 +-
 .../src/main/java/org/apache/juneau/xml/annotation/XmlConfig.java | 2 +-
 .../src/main/java/org/apache/juneau/rest/annotation/Rest.java | 2 +-
 .../src/main/java/org/apache/juneau/rest/annotation/RestOp.java   | 2 +-
 .../src/test/java/org/apache/juneau/reflection/ClassInfoTest.java | 2 +-
 .../test/java/org/apache/juneau/reflection/MethodInfoTest.java| 2 +-
 60 files changed, 68 insertions(+),

[juneau] branch master updated: PropertyStore refactoring.

2021-02-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 68f334a  PropertyStore refactoring.
68f334a is described below

commit 68f334a8cc53132a548d77d8db1e454efbd9019e
Author: JamesBognar 
AuthorDate: Mon Feb 8 11:00:56 2021 -0500

PropertyStore refactoring.
---
 .../src/main/java/org/apache/juneau/Session.java   |  2 +-
 .../main/java/org/apache/juneau/SessionArgs.java   | 28 ++--
 .../java/org/apache/juneau/SessionProperties.java  | 78 ++
 .../juneau/rest/Header_AcceptCharset_Test.java |  6 +-
 4 files changed, 73 insertions(+), 41 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 8b5b3ea..f77b367 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
@@ -52,7 +52,7 @@ public abstract class Session {
 */
protected Session(Context ctx, SessionArgs args) {
this.ctx = ctx;
-   SessionProperties sp = this.properties = new 
SessionProperties(args.properties == null ? OMap.EMPTY_MAP : args.properties);
+   SessionProperties sp = this.properties = args.properties;
debug = sp.get(CONTEXT_debug, 
Boolean.class).orElse(ctx.isDebug());
locale = sp.get(CONTEXT_locale, 
Locale.class).orElse(ctx.getDefaultLocale());
timeZone = sp.get(CONTEXT_timeZone, 
TimeZone.class).orElse(ctx.getDefaultTimeZone());
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java
index e464845..ed60c1c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java
@@ -26,12 +26,7 @@ import org.apache.juneau.json.*;
  */
 public class SessionArgs {
 
-   /**
-* Default empty session arguments.
-*/
-   public static final SessionArgs DEFAULT = new SessionArgs();
-
-   OMap properties;
+   SessionProperties properties = SessionProperties.create();
 
/**
 * Constructor.
@@ -138,7 +133,7 @@ public class SessionArgs {
 */
@FluentSetter
public SessionArgs properties(OMap value) {
-   this.properties = value;
+   this.properties = SessionProperties.create(value);
return this;
}
 
@@ -152,28 +147,13 @@ public class SessionArgs {
@FluentSetter
public SessionArgs property(String key, Object value) {
if (value == null) {
-   if (properties != null)
-   properties.remove(key);
+   properties.remove(key);
} else {
-   if (properties == null)
-   properties = new OMap();
properties.put(key, value);
}
return this;
}
 
-   /**
-* Returns a property on this session.
-*
-* @param key The property key.
-* @return The property value, or null if not set.
-*/
-   public Object getProperty(String key) {
-   if (properties != null)
-   return properties.get(key);
-   return null;
-   }
-

//-
// Other methods

//-
@@ -191,7 +171,7 @@ public class SessionArgs {
.create()
.filtered()
.append("SessionArgs", OMap.create().filtered()
-   .append("properties", properties)
+   .append("properties", properties.asMap())
);
}
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java
index 2a8860c..d4bc6c3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java
@@ -28,12 +28,29 @@ public class SessionProperties {
private final OMap map;
 
/**
-* Constructor.
+* Static creator.
+*
+* @return A new instance of this cla

[juneau] branch master updated: PropertyStore refactoring.

2021-02-07 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 48e1811  PropertyStore refactoring.
48e1811 is described below

commit 48e1811474e096d001459c22ff3d9e62d9ea857d
Author: JamesBognar 
AuthorDate: Sun Feb 7 21:07:18 2021 -0500

PropertyStore refactoring.
---
 .../apache/juneau/dto/swagger/ui/SwaggerUI.java|   3 +-
 .../apache/juneau/jena/RdfSerializerSession.java   |   7 +-
 .../src/main/java/org/apache/juneau/Session.java   | 170 +--
 .../java/org/apache/juneau/SessionProperties.java  | 181 +
 .../juneau/html/HtmlDocSerializerSession.java  |  25 +--
 .../org/apache/juneau/parser/ParserSession.java|   4 +-
 .../apache/juneau/parser/ReaderParserSession.java  |   6 +-
 .../juneau/serializer/SerializerSession.java   |   3 +-
 .../juneau/serializer/WriterSerializerSession.java |   8 +-
 .../juneau/soap/SoapXmlSerializerSession.java  |   4 +-
 .../org/apache/juneau/uon/UonParserSession.java|   3 +-
 .../apache/juneau/xml/XmlSerializerSession.java|   5 +-
 .../org/apache/juneau/rest/client/RestRequest.java |   5 -
 .../juneau/rest/client/RestResponseBody.java   |   2 +-
 .../test/java/org/apache/juneau/rest/Nls_Test.java |   2 +-
 .../juneau/rest/annotation/RestHook_Test.java  |  12 +-
 .../juneau/rest/annotation/Rest_RVars_Test.java|   5 +-
 17 files changed, 244 insertions(+), 201 deletions(-)

diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
index c29ce57..e4dba85 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
@@ -93,7 +93,8 @@ public class SwaggerUI extends PojoSwap {
 
Session(BeanSession bs, Swagger swagger) {
this.swagger = swagger.copy();
-   this.resolveRefsMaxDepth = 
bs.getProperty(SWAGGERUI_resolveRefsMaxDepth, Integer.class, 1);
+   SessionProperties sp = bs.getSessionProperties();
+   this.resolveRefsMaxDepth = 
sp.getInteger(SWAGGERUI_resolveRefsMaxDepth).orElse(1);
}
}
 
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 886de83..503f987 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
@@ -60,7 +60,8 @@ public final class RdfSerializerSession extends 
WriterSerializerSession {
super(ctx, args);
this.ctx = ctx;
 
-   namespaces = getInstanceArrayProperty(RDF_namespaces, 
Namespace.class, ctx.namespaces);
+   SessionProperties sp = getSessionProperties();
+   namespaces = sp.getInstanceArray(RDF_namespaces, 
Namespace.class).orElse(ctx.namespaces);
model = ModelFactory.createDefaultModel();
addModelPrefix(ctx.getJuneauNs());
addModelPrefix(ctx.getJuneauBpNs());
@@ -85,9 +86,9 @@ public final class RdfSerializerSession extends 
WriterSerializerSession {
if (e.getKey().startsWith(propPrefix, 5))
writer.setProperty(e.getKey().substring(5 + 
propPrefix.length()), e.getValue());
 
-   for (String k : getPropertyKeys())
+   for (String k : sp.keySet())
if (k.startsWith("RdfCommon.jena.") && 
k.startsWith(propPrefix, 15))
-   writer.setProperty(k.substring(15 + 
propPrefix.length()), getProperty(k));
+   writer.setProperty(k.substring(15 + 
propPrefix.length()), sp.get(k).orElse(null));
}
 
/*
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 dc1c58b..8b5b3ea 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
@@ -13,19 +13,15 @@
 package org.apache.juneau;
 
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.Context.*;
 
-import java.lang.reflect.*;
 import java.text.*;
 import java.time.*;
 import java.util.*;
 
 import org.apache.juneau.collections.*;
 import org.apache.june

[juneau] branch master updated: PropertyStore refactoring.

2021-02-07 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 a791928  PropertyStore refactoring.
a791928 is described below

commit a791928b7e0852773c72836399ccdca0c96aa49b
Author: JamesBognar 
AuthorDate: Sun Feb 7 19:54:47 2021 -0500

PropertyStore refactoring.
---
 .../main/java/org/apache/juneau/PropertyStore.java | 35 +++---
 .../org/apache/juneau/html/HtmlDocSerializer.java  |  2 +-
 .../java/org/apache/juneau/xml/XmlSerializer.java  |  2 +-
 .../org/apache/juneau/rest/client/RestClient.java  |  2 +-
 .../java/org/apache/juneau/rest/RestContext.java   | 10 +++
 .../apache/juneau/rest/RestOperationContext.java   | 18 +--
 6 files changed, 28 insertions(+), 41 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
index f20ed3f..e68a211 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
@@ -495,40 +495,27 @@ public final class PropertyStore {
}
 
/**
-* Returns the specified property as an array of instantiated objects.
+* Returns an instance array of the specified class, string, or object 
property.
 *
 * @param key The property name.
 * @param type The class type of the property.
-* @return A new property instance, or an empty array if it doesn't 
exist.
-*/
-   public  T[] getInstanceArray(String key, Class type) {
-   return getInstanceArray(key, type, (T[])Array.newInstance(type, 
0));
-   }
-
-   /**
-* Returns the specified property as an array of instantiated objects.
-*
-* @param key The property name.
-* @param type The class type of the property.
-* @param def The default object to return if the property doesn't 
exist.
-* @return A new property instance.
+* @param beanFactory The bean factory to use for instantiating the 
bean.
+* @return A new property instance array.
 */
-   public  T[] getInstanceArray(String key, Class type, T[] def) {
-   return getInstanceArray(key, type, def, new BeanFactory());
+   public  Optional getInstanceArray(String key, Class type, 
BeanFactory beanFactory) {
+   Property p = findProperty(key);
+   return Optional.ofNullable(p == null ? null : 
p.asInstanceArray(type, beanFactory));
}
 
/**
-* Returns the specified property as an array of instantiated objects.
+* Returns an instance array of the specified class, string, or object 
property.
 *
 * @param key The property name.
 * @param type The class type of the property.
-* @param def The default object to return if the property doesn't 
exist.
-* @param beanFactory The bean factory to use for instantiating beans.
-* @return A new property instance.
+* @return A new property instance array.
 */
-   public  T[] getInstanceArray(String key, Class type, T[] def, 
BeanFactory beanFactory) {
-   Property p = findProperty(key);
-   return p == null ? def : p.asInstanceArray(type, beanFactory);
+   public  Optional getInstanceArray(String key, Class type) {
+   return getInstanceArray(key, type, null);
}
 
/**
@@ -928,7 +915,7 @@ public final class PropertyStore {

//---
 
static BeanFactory DEFAULT_BEAN_FACTORY = BeanFactory.create().build();
-   
+
static  T instantiate(BeanFactory beanFactory, Class c, Object 
value) {
if (ClassInfo.of(c).isParentOf(value.getClass()))
return (T)value;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
index aad4f1e..83d10f5 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
@@ -778,7 +778,7 @@ public class HtmlDocSerializer extends 
HtmlStrippedDocSerializer {
template = ps.getInstance(HTMLDOC_template, 
HtmlDocTemplate.class).orElseGet(BasicHtmlDocTemplate::new);
 
widgets = new HtmlWidgetMap();
-   widgets.append(ps.getInstanceArray(HTMLDOC_widgets, 
HtmlWidget.class));
+   widgets.append(ps.getInstanceArray

[juneau] branch master updated: PropertyStore refactoring.

2021-02-07 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 fd8fc7d  PropertyStore refactoring.
fd8fc7d is described below

commit fd8fc7d6f0352b9cfbeaf4fb0f2951bca11d86c6
Author: JamesBognar 
AuthorDate: Sun Feb 7 19:37:49 2021 -0500

PropertyStore refactoring.
---
 .../main/java/org/apache/juneau/config/Config.java | 10 ++--
 .../java/org/apache/juneau/jena/RdfParser.java |  4 +-
 .../main/java/org/apache/juneau/BeanContext.java   |  2 +-
 .../src/main/java/org/apache/juneau/Context.java   |  6 +--
 .../main/java/org/apache/juneau/PropertyStore.java | 59 +-
 .../java/org/apache/juneau/cp/BeanFactory.java | 16 ++
 .../org/apache/juneau/html/HtmlDocSerializer.java  |  2 +-
 .../juneau/jsonschema/JsonSchemaGenerator.java |  2 +-
 .../main/java/org/apache/juneau/xml/XmlParser.java |  6 +--
 .../java/org/apache/juneau/xml/XmlSerializer.java  |  2 +-
 .../org/apache/juneau/rest/client/RestClient.java  | 26 +-
 .../apache/juneau/rest/mock/MockRestClient.java|  4 +-
 .../java/org/apache/juneau/rest/RestContext.java   | 11 ++--
 .../apache/juneau/rest/RestOperationContext.java   |  4 +-
 14 files changed, 70 insertions(+), 84 deletions(-)

diff --git 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
index 9ac813d..d35b325 100644
--- 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
+++ 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
@@ -447,14 +447,14 @@ public final class Config extends Context implements 
ConfigEventListener, Writab
super(ps, true);
 
name = ps.getString(CONFIG_name).orElse("Configuration.cfg");
-   store = ps.getInstance(CONFIG_store, ConfigStore.class, 
ConfigFileStore.DEFAULT);
+   store = ps.getInstance(CONFIG_store, 
ConfigStore.class).orElse(ConfigFileStore.DEFAULT);
configMap = store.getMap(name);
configMap.register(this);
-   serializer = ps.getInstance(CONFIG_serializer, 
WriterSerializer.class, SimpleJsonSerializer.DEFAULT);
-   parser = ps.getInstance(CONFIG_parser, ReaderParser.class, 
JsonParser.DEFAULT);
+   serializer = ps.getInstance(CONFIG_serializer, 
WriterSerializer.class).orElse(SimpleJsonSerializer.DEFAULT);
+   parser = ps.getInstance(CONFIG_parser, 
ReaderParser.class).orElse(JsonParser.DEFAULT);
beanSession = parser.createBeanSession();
-   encoder = ps.getInstance(CONFIG_encoder, ConfigEncoder.class, 
ConfigXorEncoder.INSTANCE);
-   varSession = ps.getInstance(CONFIG_varResolver, 
VarResolver.class, VarResolver.DEFAULT)
+   encoder = ps.getInstance(CONFIG_encoder, 
ConfigEncoder.class).orElse(ConfigXorEncoder.INSTANCE);
+   varSession = ps.getInstance(CONFIG_varResolver, 
VarResolver.class).orElse(VarResolver.DEFAULT)
.builder()
.vars(ConfigVar.class)
.bean(Config.class, this)
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
index c745d22..d4347a5 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
@@ -131,8 +131,8 @@ public class RdfParser extends ReaderParser implements 
RdfCommon, RdfMetaProvide
trimWhitespace = 
ps.getBoolean(RDF_trimWhitespace).orElse(false);
looseCollections = 
ps.getBoolean(RDF_looseCollections).orElse(false);
rdfLanguage = 
ps.getString(RDF_language).orElse("RDF/XML-ABBREV");
-   juneauNs = ps.getInstance(RDF_juneauNs, Namespace.class, 
DEFAULT_JUNEAU_NS);
-   juneauBpNs = ps.getInstance(RDF_juneauBpNs, Namespace.class, 
DEFAULT_JUNEAUBP_NS);
+   juneauNs = ps.getInstance(RDF_juneauNs, 
Namespace.class).orElse(DEFAULT_JUNEAU_NS);
+   juneauBpNs = ps.getInstance(RDF_juneauBpNs, 
Namespace.class).orElse(DEFAULT_JUNEAUBP_NS);
collectionFormat = ps.get(RDF_collectionFormat, 
RdfCollectionFormat.class).orElse(RdfCollectionFormat.DEFAULT);
 
ASortedMap m = ASortedMap.create();
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 ba63e90..5c82386 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.jav

<    2   3   4   5   6   7   8   9   10   11   >