[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 (ConfigEntry ne : 

[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();
+* 
+*
+* @param flag 

[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 return.
 

[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 it.
 *  }
 

[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 = null;
+   l.add(new Part(urlDecode(s), null));
}
-

[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/header/HeaderList.java
@@ -23,6 +23,7 @@ import 

[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
 

[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);
+   if (schema != null)
+ 

[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
+++ 

[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 HttpEntityProcessor}
+ * 

[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.class,

[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)}.
-*
-* @param value 

[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: 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);
+   }
+
+   /**
+* Creates a new 

[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.println("Processing " + 

[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 ASF licenses this file*
+// 

[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 limitations under the 
License.  *
 // 

[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","b","","c",null)
+   partList("a","foo","b","","c",null)
);
assertEquals("OK", r);
}

[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 = 0; i < parts.size(); 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";
}
 
-   @RestOp(method=GET, path="/implicitSwappedPojoHeaders")
+   @RestGet(path="/implicitSwappedPojoHeaders")
public String implicitSwappedPojoHeaders(
@Header(n="a",cf="uon") ImplicitSwappedPojo a,
@Header(n="b",cf="uon") ImplicitSwappedPojo[][][] 

[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} initialized with the 

[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 +-
 

[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] 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);
}
 
/**
diff --git 

[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 to a String.
-*
-* @param 

[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-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
 

[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.
-* @return The list of all 

[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 

[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" is equivalent 

[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
 

[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().getBody().as(ResourceDescription[].class);
+   ResourceDescription[] x = 
client.get("").run().getBody().asType(ResourceDescription[].class);

[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() {
+   return 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 StatusLine 

[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.assertion.*;
 import org.apache.juneau.utils.*;
 
 /**
@@ -908,32 +908,6 @@ public 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.
 * @param returns The object to return after the test.
 */
-  

[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
 

[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: 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 {
-
-   /**
-* The 

[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 

[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 types registered in the parser group of 
this 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 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 
TreeMap {
/* Workhorse method */

[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) {
+   headers.put("Content-Type", 

[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() {
-   if (rreq != 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 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: REST 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 99a595c  REST refactoring.
99a595c is described below

commit 99a595cb9ee1024527ee8376a94cf875994ccbd8
Author: JamesBognar 
AuthorDate: Sun Feb 7 12:48:58 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/rest/RestOperationContextBuilder.java   | 11 ++-
 1 file changed, 10 insertions(+), 1 deletion(-)

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 933f1e2..407d27b 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
@@ -49,7 +49,7 @@ public class RestOperationContextBuilder extends 
BeanContextBuilder {
 
Class ic = implClass;
if (ic == null)
-   ic = ps.getClassProperty(RESTOP_contextClass, 
RestOperationContext.class, RestOperationContext.class);
+   ic = ps.getClassProperty(RESTOP_contextClass, 
RestOperationContext.class, getDefaultImplClass());
 
return 
BeanFactory.of(beanFactory).addBean(RestOperationContextBuilder.class, 
this).createBean(ic);
} catch (Exception e) {
@@ -57,6 +57,15 @@ public class RestOperationContextBuilder extends 
BeanContextBuilder {
}
}
 
+   /**
+* Specifies the default implementation class if not specified via 
{@link #implClass(Class)}.
+*
+* @return The default implementation class if not specified via {@link 
#implClass(Class)}.
+*/
+   protected Class getDefaultImplClass() {
+   return RestOperationContext.class;
+   }
+
RestOperationContextBuilder(java.lang.reflect.Method method, 
RestContext context) {
 
this.restContext = context;



[juneau] branch master updated: REST 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 f9d1786  REST refactoring.
f9d1786 is described below

commit f9d1786a21e5fe9e5c8a8aa97cd370ff82238b62
Author: JamesBognar 
AuthorDate: Sun Feb 7 12:48:10 2021 -0500

REST refactoring.
---
 .../src/main/java/org/apache/juneau/Context.java   |   25 +-
 .../main/java/org/apache/juneau/PropertyStore.java |  129 +++
 .../apache/juneau/rest/RestChildrenBuilder.java|1 -
 .../java/org/apache/juneau/rest/RestContext.java   | 1147 ++--
 4 files changed, 953 insertions(+), 349 deletions(-)

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 500a25f..f1208bb 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
@@ -378,7 +378,7 @@ public abstract class Context {
 * @return The property value, or the default value if it doesn't exist.
 */
public final Boolean getBooleanProperty(String key, Boolean def) {
-   return getProperty(key, Boolean.class, def);
+   return propertyStore.getBooleanProperty(key, def);
}
 
/**
@@ -388,7 +388,7 @@ public abstract class Context {
 * @return The property value, or false if it doesn't exist.
 */
public final boolean getBooleanProperty(String key) {
-   return getBooleanProperty(key, false);
+   return propertyStore.getBooleanProperty(key);
}
 
/**
@@ -399,7 +399,7 @@ public abstract class Context {
 * @return The property value, or the default value if it doesn't exist.
 */
public final Integer getIntegerProperty(String key, Integer def) {
-   return getProperty(key, Integer.class, def);
+   return propertyStore.getIntegerProperty(key, def);
}
 
/**
@@ -409,7 +409,7 @@ public abstract class Context {
 * @return The property value, or -1 if it doesn't exist.
 */
public final int getIntegerProperty(String key) {
-   return getIntegerProperty(key, -1);
+   return propertyStore.getIntegerProperty(key);
}
 
/**
@@ -420,7 +420,7 @@ public abstract class Context {
 * @return The property value, or the default value if it doesn't exist.
 */
public final Long getLongProperty(String key, Long def) {
-   return getProperty(key, Long.class, def);
+   return propertyStore.getLongProperty(key, def);
}
 
/**
@@ -430,7 +430,7 @@ public abstract class Context {
 * @return The property value, or -1 if it doesn't exist.
 */
public final long getLongProperty(String key) {
-   return getLongProperty(key, -1l);
+   return propertyStore.getLongProperty(key);
}
 
/**
@@ -441,7 +441,7 @@ public abstract class Context {
 * @return The property value, or the default value if it doesn't exist.
 */
public final String getStringProperty(String key, String def) {
-   return getProperty(key, String.class, def);
+   return propertyStore.getStringProperty(key, def);
}
 
/**
@@ -451,7 +451,7 @@ public abstract class Context {
 * @return The property value, or the null if it doesn't exist.
 */
public final String getStringProperty(String key) {
-   return getStringProperty(key, null);
+   return propertyStore.getStringProperty(key);
}
 
/**
@@ -462,7 +462,7 @@ public abstract class Context {
 * @return The property value, or the default value if it doesn't exist.
 */
public final String[] getCdlProperty(String key, String def) {
-   return 
StringUtils.split(StringUtils.emptyIfNull(getProperty(key, String.class, def)));
+   return propertyStore.getCdlProperty(key, def);
}
 
/**
@@ -473,8 +473,7 @@ public abstract class Context {
 * @return The property value, or the default value if it doesn't exist.
 */
public final String getStringPropertyWithNone(String key, String def) {
-   String s = getProperty(key, String.class, def);
-   return "NONE".equalsIgnoreCase(s) ? "" : s;
+   return propertyStore.getStringPropertyWithNone(key, def);
}
 
/**
@@ -497,7 +496,7 @@ public abstract class Context {
 * @return The property value, or null if it doesn't exist.
 */
public final  Class getClassProperty(String key, 
Class type) {
-   return 

[juneau] branch master updated: REST 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 c130ce0  REST refactoring.
c130ce0 is described below

commit c130ce0e0d855b911c3600df7ab3930643fbb584
Author: JamesBognar 
AuthorDate: Sun Feb 7 10:39:19 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/cp/BeanFactory.java | 38 ---
 .../org/apache/juneau/cp/BeanFactoryBuilder.java   | 79 +-
 .../org/apache/juneau/svl/VarResolverSession.java  |  2 +-
 .../juneau/rest/springboot/SpringBeanFactory.java  |  2 +-
 .../java/org/apache/juneau/rest/MethodList.java| 36 +-
 .../org/apache/juneau/cp/BeanFactory_Test.java |  2 +-
 .../apache/juneau/mstat/MethodExecStore_Test.java  |  6 +-
 .../org/apache/juneau/mstat/ThrownStore_Test.java  |  4 +-
 8 files changed, 133 insertions(+), 36 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
index dfd3dfe..5499d7b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
@@ -43,59 +43,49 @@ public class BeanFactory {
/**
 * Static creator.
 *
-* @return A new {@link BeanFactory} object.
+* @return A new {@link BeanFactoryBuilder} object.
 */
-   public static BeanFactory create() {
-   return new BeanFactory();
+   public static BeanFactoryBuilder create() {
+   return new BeanFactoryBuilder();
}
 
/**
 * Static creator.
 *
 * @param parent Parent bean factory.  Can be null if this is 
the root resource.
-* @param outer Outer bean context to use when instantiating local 
classes.  Can be null.
 * @return A new {@link BeanFactory} object.
 */
-   public static BeanFactory of(BeanFactory parent, Object outer) {
-   return new BeanFactory(parent, outer);
+   public static BeanFactory of(BeanFactory parent) {
+   return create().parent(parent).build();
}
 
/**
 * Static creator.
 *
 * @param parent Parent bean factory.  Can be null if this is 
the root resource.
+* @param outer The outer bean used when instantiating inner classes.  
Can be null.
 * @return A new {@link BeanFactory} object.
 */
-   public static BeanFactory of(BeanFactory parent) {
-   return new BeanFactory(parent, null);
+   public static BeanFactory of(BeanFactory parent, Object outer) {
+   return create().parent(parent).outer(outer).build();
}
 
/**
 * Default constructor.
 */
public BeanFactory() {
-   this(Optional.empty(), Optional.empty());
-   }
-
-   /**
-* Constructor.
-*
-* @param parent Parent bean factory.  Can be null if this is 
the root resource.
-* @param outer Outer bean context to use when instantiating local 
classes.  Can be null.
-*/
-   public BeanFactory(BeanFactory parent, Object outer) {
-   this(Optional.ofNullable(parent), Optional.ofNullable(outer));
+   this.parent = Optional.empty();
+   this.outer = Optional.empty();
}
 
/**
 * Constructor.
 *
-* @param parent - Optional parent bean factory.
-* @param outer Outer bean context to use when instantiating local 
classes.
+* @param builder The builder containing the settings for this bean.
 */
-   public BeanFactory(Optional parent, Optional 
outer) {
-   this.parent = parent;
-   this.outer = outer;
+   public BeanFactory(BeanFactoryBuilder builder) {
+   this.parent = Optional.ofNullable(builder.parent);
+   this.outer = Optional.ofNullable(builder.outer);
}
 
/**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactoryBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactoryBuilder.java
index 170d926..e5525a6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactoryBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactoryBuilder.java
@@ -12,7 +12,84 @@
 // 
***
 package org.apache.juneau.cp;
 
+import static org.apache.juneau.internal.ClassUtils.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.internal.*;
+
+/**
+ * Builder for {@link BeanFactory} objects.

[juneau] branch master updated: REST refactoring.

2021-02-01 Thread jamesbognar
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
 new 210725e  REST refactoring.
210725e is described below

commit 210725ebc14a727351673a5656bc8e41bf4870f1
Author: JamesBognar 
AuthorDate: Mon Feb 1 15:50:21 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RestContext.java   |  36 ++-
 .../apache/juneau/rest/SwaggerProviderBuilder.java |  22 +-
 .../rest/logging/BasicDisabledRestLogger.java  |  11 +-
 .../juneau/rest/logging/BasicRestLogger.java   | 352 +---
 .../rest/logging/BasicTestCaptureRestLogger.java   |  33 +-
 .../juneau/rest/logging/BasicTestRestLogger.java   |  10 +-
 .../org/apache/juneau/rest/logging/RestLogger.java | 357 +
 .../juneau/rest/logging/RestLoggerBuilder.java |  66 ++--
 .../juneau/rest/logging/RestLoggerRuleBuilder.java |   2 +-
 9 files changed, 446 insertions(+), 443 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 699b333..49e9b9a 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
@@ -3925,14 +3925,18 @@ public class RestContext extends BeanContext {
if (resource instanceof RestLogger)
x = (RestLogger)resource;
 
-   if (x == null)
-   x = getInstanceProperty(REST_callLogger, 
RestLogger.class, null, beanFactory);
+   Object o = getProperty(REST_callLogger);
+   if (o instanceof RestLogger)
+   x = (RestLogger)o;
 
if (x == null)
x = beanFactory.getBean(RestLogger.class).orElse(null);
 
-   if (x == null)
-   x = getInstanceProperty(REST_callLoggerDefault, 
RestLogger.class, null, beanFactory);
+   if (x == null) {
+   o = getProperty(REST_callLoggerDefault);
+   if (o instanceof RestLogger)
+   x = (RestLogger)o;
+   }
 
if (x == null)
x = createCallLoggerBuilder(resource, 
beanFactory).build();
@@ -3959,18 +3963,36 @@ public class RestContext extends BeanContext {
 * @return The call logger builder for this REST resource.
 * @throws Exception If call logger builder could not be instantiated.
 */
+   @SuppressWarnings("unchecked")
protected RestLoggerBuilder createCallLoggerBuilder(Object resource, 
BeanFactory beanFactory) throws Exception {
 
+   Class c = null;
+
+   Object o = getProperty(REST_callLogger);
+   if (o instanceof Class)
+   c = (Class)o;
+
+   if (c == null) {
+   o = getProperty(REST_callLoggerDefault);
+   if (o instanceof Class)
+   c = (Class)o;
+   }
+
+   if (c == null)
+   c = BasicRestLogger.class;
+
RestLoggerBuilder x = RestLogger
.create()
+   .beanFactory(beanFactory)
+   .implClass(c)
.normalRules(  // Rules when debugging is not enabled.
-   RestLogger.createRule()  // Log 500+ errors 
with status-line and header information.
+   RestLoggerRule.create()  // Log 500+ errors 
with status-line and header information.
.statusFilter(a -> a >= 500)
.level(SEVERE)
.requestDetail(HEADER)
.responseDetail(HEADER)
.build(),
-   RestLogger.createRule()  // Log 400-500 errors 
with just status-line information.
+   RestLoggerRule.create()  // Log 400-500 errors 
with just status-line information.
.statusFilter(a -> a >= 400)
.level(WARNING)
.requestDetail(STATUS_LINE)
@@ -3978,7 +4000,7 @@ public class RestContext extends BeanContext {
.build()
)
.debugRules(  // Rules when debugging is enabled.
-   RestLogger.createRule()  // Log everything with 
full details.
+   RestLoggerRule.create()  // Log 

[juneau] branch master updated: REST refactoring.

2021-02-01 Thread jamesbognar
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
 new 54ea42f  REST refactoring.
54ea42f is described below

commit 54ea42fc9b069652f09232bc0edf107e322f1898
Author: JamesBognar 
AuthorDate: Mon Feb 1 12:39:33 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/cp/FileFinderBuilder.java|  11 +-
 .../org/apache/juneau/rest/BasicStaticFiles.java   | 124 -
 .../java/org/apache/juneau/rest/RestContext.java   |  62 +--
 .../java/org/apache/juneau/rest/StaticFiles.java   |  85 +-
 .../org/apache/juneau/rest/StaticFilesBuilder.java |  23 ++--
 .../apache/juneau/rest/SwaggerProviderBuilder.java |  11 +-
 6 files changed, 184 insertions(+), 132 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/FileFinderBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/FileFinderBuilder.java
index e539519..b95c290 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/FileFinderBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/FileFinderBuilder.java
@@ -42,7 +42,7 @@ public class FileFinderBuilder {
 */
public FileFinder build() {
try {
-   Class ic = isConcrete(implClass) 
? implClass : BasicFileFinder.class;
+   Class ic = isConcrete(implClass) 
? implClass : getDefaultImplClass();
return 
BeanFactory.of(beanFactory).addBeans(FileFinderBuilder.class, 
this).createBean(ic);
} catch (ExecutableException e) {
throw new RuntimeException(e.getCause().getMessage(), 
e.getCause());
@@ -50,6 +50,15 @@ public class FileFinderBuilder {
}
 
/**
+* Specifies the default implementation class if not specified via 
{@link #implClass(Class)}.
+*
+* @return The default implementation class if not specified via {@link 
#implClass(Class)}.
+*/
+   protected Class getDefaultImplClass() {
+   return BasicFileFinder.class;
+   }
+
+   /**
 * Adds a class subpackage to the lookup paths.
 *
 * @param c The class whose package will be added to the lookup paths.  
Must not be null.
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicStaticFiles.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicStaticFiles.java
index b3e091c..2bf53b9 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicStaticFiles.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicStaticFiles.java
@@ -12,46 +12,110 @@
 // 
***
 package org.apache.juneau.rest;
 
+import static org.apache.juneau.internal.FileUtils.*;
+import static org.apache.juneau.internal.ObjectUtils.*;
+
+import java.io.*;
+import java.util.*;
+
+import javax.activation.*;
+
+import org.apache.http.*;
+import org.apache.juneau.collections.*;
+import org.apache.juneau.cp.*;
+import org.apache.juneau.http.*;
+import org.apache.juneau.http.exception.*;
 import org.apache.juneau.http.header.*;
+import org.apache.juneau.internal.*;
 
 /**
- * Basic implementation of resource finder used for finding static files 
served up for REST resources.
+ * API for retrieving localized static files from either the classpath or file 
system.
  *
  * 
- * This implementation has the following attributes:
- * 
- * Looks for files in the following locations:
- * "static" working subdirectory.
- * "htdocs" working subdirectory.
- * "htdocs" subpackage from this class and all parent 
classes.
- * "htdocs" root package from this class and all 
parent classes.
- * 
- * Caches any files smaller than 1MB into memory.
- * Ignores any ".class" or ".properties" files found.
- * Adds header "Cache-Control: max-age=86400, public" to all 
resources.
- * 
- *
- * 
- * {@link RestContext#REST_staticFiles}
- * 
+ * Provides the same functionality as {@link BasicFileFinder} but adds support 
for returning files as {@link BasicHttpResource}
+ * objects with arbitrary headers.
  */
-public class BasicStaticFiles extends StaticFiles {
+public class BasicStaticFiles extends BasicFileFinder implements StaticFiles {
+
+   private final Header[] headers;
+   private final MimetypesFileTypeMap mimeTypes;
+   private final int hashCode;
+
+   /**
+* Creates a new builder for this object.
+*
+* @return A new builder for this object.
+*/
+   public static StaticFilesBuilder create() {
+  

[juneau] branch master updated: REST refactoring.

2021-02-01 Thread jamesbognar
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
 new cc1c154  REST refactoring.
cc1c154 is described below

commit cc1c1547770190a0fda82502ac4f7a4fe9f22049
Author: JamesBognar 
AuthorDate: Mon Feb 1 11:13:02 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/cp/FileFinder_Test.java |   7 +-
 .../cp/{FileFinder.java => BasicFileFinder.java}   | 165 +++
 .../java/org/apache/juneau/cp/BeanFactory.java |  23 ++
 .../main/java/org/apache/juneau/cp/FileFinder.java | 305 ++---
 .../org/apache/juneau/cp/FileFinderBuilder.java|  54 ++--
 .../org/apache/juneau/internal/ClassUtils.java |  14 +
 .../java/org/apache/juneau/rest/Swagger_Test.java  |   2 +-
 .../org/apache/juneau/rest/BasicFileFinder.java|  53 
 .../apache/juneau/rest/BasicSwaggerProvider.java   |   2 +-
 .../java/org/apache/juneau/rest/RestContext.java   |  10 +-
 .../java/org/apache/juneau/rest/StaticFiles.java   |   4 +-
 .../apache/juneau/rest/SwaggerProviderBuilder.java |   7 +-
 12 files changed, 143 insertions(+), 503 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/FileFinder_Test.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/FileFinder_Test.java
index 10bbef2..ffe720f 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/FileFinder_Test.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/FileFinder_Test.java
@@ -654,16 +654,17 @@ public class FileFinder_Test {
 
@Test
public void e03_subclassing() throws Exception {
-   E03b x = E03b
+   FileFinder x = E03b
.create()
.dir(".")
.caching(100_000_000)
-   .build(E03b.class);
+   .implClass(E03b.class)
+   .build();
assertObject(x).isType(E03b.class);
}
 
public static class E03a extends FileFinderBuilder {}
-   public static class E03b extends FileFinder {
+   public static class E03b extends BasicFileFinder {
public static E03a create() {
return new E03a();
}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/FileFinder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
similarity index 68%
copy from 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/FileFinder.java
copy to 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
index 75f941f..e065401 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/FileFinder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
@@ -28,60 +28,14 @@ import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 
 /**
- * Utility class for finding regular or localized files on the classpath and 
file system.
- *
- * Example:
- * 
- * // Constructor a file source that looks for files in the "files" 
working directory, then in the
- * // package "foo.bar", then in the package "foo.bar.files", then in the 
package "files".
- * FileFinder finder = FileFinder
- * .create()
- * .dir("files")
- * .cp(foo.bar.MyClass.class,null,true)
- * 
.cp(foo.bar.MyClass.class,"files",true)
- * 
.cp(foo.bar.MyClass.class,"/files",true)
- * .cache(1_000_000l)  // Cache files less than 1MB in 
size.
- * 
.ignore(Pattern.compile("(?i)(.*\\.(class|properties))|(package.html)"))
 // Ignore certain files.
- * .build();
- *
- * // Find a normal file.
- * InputStream is1 = 
finder.getStream("text.txt");
- *
- * // Find a localized file called "text_ja_JP.txt".
- * InputStream is2 = 
finder.getStream("text.txt", Locale.JAPAN);
- * 
- *
- * 
- * If the locale is specified, then we look for resources whose name 
matches that locale.
- * For example, if looking for the resource "MyResource.txt" for the 
Japanese locale, we will look for
- * files in the following order:
- * 
- * "MyResource_ja_JP.txt"
- * "MyResource_ja.txt"
- * "MyResource.txt"
- * 
- *
- * 
- * This class can be subclassed to provide specific preconfigured instances 
using no-arg constructors.
- *
- * Example:
- * 
- * public class MyFileFinder extends FileFinder {
- * public MyFileFinder() {
- * super(
- * new FileFinderBuilder()
- * .dir("/files")
- * );
- * }
- * }
- * 
+ * Basic implementation of a {@link FileFinder}.
  *
  * 

[juneau] branch master updated: REST refactoring.

2021-02-01 Thread jamesbognar
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
 new a76b82e  REST refactoring.
a76b82e is described below

commit a76b82ef4f8c20c7e2cfb6e40b1f28343b6b2728
Author: JamesBognar 
AuthorDate: Mon Feb 1 10:07:46 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/Swagger_Test.java  |  4 --
 .../rest/annotation/RestAnnotation_Test.java   | 10 ++---
 .../juneau/rest/annotation/Swagger_Body_Test.java  |  1 -
 ...ggerProvider.java => BasicSwaggerProvider.java} | 36 
 ...ssion.java => BasicSwaggerProviderSession.java} |  4 +-
 .../java/org/apache/juneau/rest/RestContext.java   | 13 --
 .../org/apache/juneau/rest/RestContextBuilder.java |  4 +-
 .../org/apache/juneau/rest/SwaggerProvider.java| 48 +++---
 .../apache/juneau/rest/SwaggerProviderBuilder.java |  6 ++-
 .../org/apache/juneau/rest/annotation/Rest.java| 21 +-
 .../juneau/rest/annotation/RestAnnotation.java |  2 +-
 11 files changed, 39 insertions(+), 110 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java
index 7e10cad..21f9bef 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java
@@ -23,7 +23,6 @@ import java.util.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.jsonschema.annotation.*;
 import org.apache.juneau.jsonschema.annotation.Tag;
-import org.apache.juneau.marshall.*;
 import org.apache.juneau.xml.*;
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
@@ -1614,7 +1613,6 @@ public class Swagger_Test {
 
@Test
public void l02_query_example_swaggerOnClass() throws Exception {
-   System.err.println(getSwagger(new L2()));
assertEquals("{id:2}", getSwagger(new 
L2()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", 
"foo").getExample());
assertEquals("{id:2}", getSwaggerWithFile(new 
L2()).getPaths().get("/path/{foo}/query").get("get").getParameter("query", 
"foo").getExample());
}
@@ -2348,8 +2346,6 @@ public class Swagger_Test {
Operation o = s.getOperation("/", "get");
ParameterInfo pi = o.getParameter("body", null);
 
-   SimpleJson.DEFAULT_READABLE.println(s);
-
assertEquals("{\n\tf1: 1,\n\tf2: 2\n}", 
pi.getExamples().get("application/json+simple"));
ResponseInfo ri = o.getResponse("200");
assertEquals("{\n\tf1: 1,\n\tf2: 2\n}", 
ri.getExamples().get("application/json+simple"));
diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestAnnotation_Test.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestAnnotation_Test.java
index 4aff0f9..3574d9d 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestAnnotation_Test.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestAnnotation_Test.java
@@ -82,7 +82,7 @@ public class RestAnnotation_Test {
.siteName("siteName")
.staticFiles(StaticFiles.class)
.swagger(SwaggerAnnotation.DEFAULT)
-   .swaggerProvider(SwaggerProvider.class)
+   .swaggerProvider(BasicSwaggerProvider.class)
.title("title")
.uriAuthority("uriAuthority")
.uriContext("uriContext")
@@ -136,7 +136,7 @@ public class RestAnnotation_Test {
.siteName("siteName")
.staticFiles(StaticFiles.class)
.swagger(SwaggerAnnotation.DEFAULT)
-   .swaggerProvider(SwaggerProvider.class)
+   .swaggerProvider(BasicSwaggerProvider.class)
.title("title")
.uriAuthority("uriAuthority")
.uriContext("uriContext")
@@ -193,7 +193,7 @@ public class RestAnnotation_Test {
+ "siteName:'siteName',"
+ 
"staticFiles:'org.apache.juneau.rest.StaticFiles',"
+ 
"swagger:{contact:{email:'',name:'',url:'',value:[]},description:[],externalDocs:{description:[],url:'',value:[]},license:{name:'',url:'',value:[]},tags:[],termsOfService:[],title:[],value:[],version:''},"
-   + 
"swaggerProvider:'org.apache.juneau.rest.SwaggerProvider',"
+   + 
"swaggerProvider:'org.apache.juneau.rest.BasicSwaggerProvider',"

[juneau] branch master updated: REST refactoring.

2021-01-24 Thread jamesbognar
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
 new 41f9e86  REST refactoring.
41f9e86 is described below

commit 41f9e866a90f1d2dd878c8f0e03078febb75501c
Author: JamesBognar 
AuthorDate: Sun Jan 24 14:09:55 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/mock/MockRestClient.java | 12 
 1 file changed, 4 insertions(+), 8 deletions(-)

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 775ef25..1d93a96 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
@@ -229,9 +229,7 @@ public class MockRestClient extends RestClient implements 
HttpClientConnection {
MOCKRESTCLIENT_pathVars = PREFIX + "pathVars.oms";
 
 
-   private static Map,RestContext>
-   CONTEXTS_DEBUG = new ConcurrentHashMap<>(),
-   CONTEXTS_NORMAL = new ConcurrentHashMap<>();
+   private static Map,RestContext> REST_CONTEXTS = new 
ConcurrentHashMap<>();
 

//---
// Instance properties
@@ -274,11 +272,9 @@ public class MockRestClient extends RestClient implements 
HttpClientConnection {
String contextPath = 
ps.getProperty(MOCKRESTCLIENT_contextPath, String.class, null);
String servletPath = 
ps.getProperty(MOCKRESTCLIENT_servletPath, String.class, null);
String rootUrl = ps.getProperty(RESTCLIENT_rootUri, 
String.class, "http://localhost;);
-   boolean isDebug = ps.getProperty(CONTEXT_debug, 
Boolean.class, false);
 
Class c = restBean instanceof Class ? 
(Class)restBean : restBean.getClass();
-   Map,RestContext> contexts = isDebug ? 
CONTEXTS_DEBUG : CONTEXTS_NORMAL;
-   if (! contexts.containsKey(c)) {
+   if (! REST_CONTEXTS.containsKey(c)) {
boolean isClass = restBean instanceof Class;
Object o = isClass ? 
((Class)restBean).newInstance() : restBean;
RestContext rc = RestContext
@@ -288,9 +284,9 @@ public class MockRestClient extends RestClient implements 
HttpClientConnection {
.build()
.postInit()
.postInitChildFirst();
-   contexts.put(c, rc);
+   REST_CONTEXTS.put(c, rc);
}
-   RestContext restBeanCtx = contexts.get(c);
+   RestContext restBeanCtx = REST_CONTEXTS.get(c);
psb.set(MOCKRESTCLIENT_restBeanCtx, restBeanCtx);
 
if (servletPath == null)



[juneau] branch master updated: REST refactoring.

2021-01-24 Thread jamesbognar
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
 new 0bc8874  REST refactoring.
0bc8874 is described below

commit 0bc8874be4647a1dc54fb4d888d9ce4f979bf36f
Author: JamesBognar 
AuthorDate: Sun Jan 24 12:45:52 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/BasicFileFinder.java |  4 ++--
 .../apache/juneau/rest/BasicRestInfoProvider.java|  2 +-
 .../org/apache/juneau/rest/BasicStaticFiles.java |  4 ++--
 .../java/org/apache/juneau/rest/RestContext.java | 20 ++--
 .../org/apache/juneau/rest/RestContextBuilder.java   | 11 ++-
 .../apache/juneau/rest/RestMethodContextBuilder.java |  2 +-
 .../java/org/apache/juneau/rest/RestRequest.java |  9 +
 .../org/apache/juneau/rest/SwaggerGenerator.java |  6 ++
 .../java/org/apache/juneau/rest/vars/RequestVar.java |  4 ++--
 9 files changed, 43 insertions(+), 19 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicFileFinder.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicFileFinder.java
index 3b9ebc7..961ad48 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicFileFinder.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicFileFinder.java
@@ -44,8 +44,8 @@ public class BasicFileFinder extends FileFinder {
.create()
.dir("static")
.dir("htdocs")
-   .cp(context.getResource().getClass(), "htdocs", true)
-   .cp(context.getResource().getClass(), "/htdocs", true)
+   .cp(context.getResourceClass(), "htdocs", true)
+   .cp(context.getResourceClass(), "/htdocs", true)
.caching(1_000_000)
.exclude("(?i).*\\.(class|properties)")
);
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
index 299ab68..d48f812 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
@@ -66,7 +66,7 @@ public class BasicRestInfoProvider implements 
RestInfoProvider {
description;
 
Builder(RestContext context) {
-   ClassInfo ci = ClassInfo.ofProxy(context.getResource());
+   ClassInfo ci = ClassInfo.of(context.getResourceClass());
for (Rest r : ci.getAnnotations(Rest.class)) {
if (! r.siteName().isEmpty())
siteName = r.siteName();
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicStaticFiles.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicStaticFiles.java
index eb1f7f1..b3e091c 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicStaticFiles.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicStaticFiles.java
@@ -47,8 +47,8 @@ public class BasicStaticFiles extends StaticFiles {
.create()
.dir("static")
.dir("htdocs")
-   .cp(context.getResource().getClass(), "htdocs", true)
-   .cp(context.getResource().getClass(), "/htdocs", true)
+   .cp(context.getResourceClass(), "htdocs", true)
+   .cp(context.getResourceClass(), "/htdocs", true)
.caching(1_000_000)
.exclude("(?i).*\\.(class|properties)")
.headers(CacheControl.of("max-age=86400, public"))
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 9c103d9..d70c08e 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
@@ -3385,6 +3385,7 @@ public class RestContext extends BeanContext {

//---
 
private final Supplier resource;
+   private final Class resourceClass;
 
final RestContextBuilder builder;
private final boolean
@@ -3495,7 +3496,8 @@ public class RestContext 

[juneau] branch master updated: REST refactoring.

2021-01-24 Thread jamesbognar
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
 new ac54809  REST refactoring.
ac54809 is described below

commit ac548099580d30ddb95e4e4f559522c0472a1313
Author: JamesBognar 
AuthorDate: Sun Jan 24 11:58:08 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/cp/BeanFactory_Test.java |   4 +-
 .../java/org/apache/juneau/cp/BeanFactory.java |  10 +
 .../build-overlay/pom.xml  |  18 +-
 .../build-overlay/pom.xml  |   4 +-
 .../juneau-examples-rest-springboot/pom.xml|   4 +-
 .../apache/juneau/rest/mock/MockRestClient.java|   2 +-
 juneau-rest/juneau-rest-server-springboot/pom.xml  |   2 +-
 .../rest/annotation/RestAnnotation_Test.java   |  27 +-
 .../rest/annotation/RestMethodAnnotation_Test.java |  10 +-
 .../juneau/rest/annotation/Rest_Context_Test.java  |   6 +-
 .../juneau/rest/annotation/Restx_Path_Test.java|   6 +-
 .../main/java/org/apache/juneau/rest/RestCall.java |   2 +-
 ...RestMethodsBuilder.java => RestChildMatch.java} |  60 +--
 .../java/org/apache/juneau/rest/RestChildren.java  | 125 ++
 .../apache/juneau/rest/RestChildrenBuilder.java|  92 +
 .../java/org/apache/juneau/rest/RestContext.java   | 450 -
 .../org/apache/juneau/rest/RestContextBuilder.java |  90 +++--
 .../org/apache/juneau/rest/RestMethodContext.java  |  67 ++-
 .../juneau/rest/RestMethodContextBuilder.java  |  58 ++-
 .../java/org/apache/juneau/rest/RestMethods.java   |  17 +-
 .../org/apache/juneau/rest/RestMethodsBuilder.java |  54 ++-
 .../java/org/apache/juneau/rest/RestServlet.java   |   4 +-
 .../org/apache/juneau/rest/annotation/Rest.java|  64 +--
 .../juneau/rest/annotation/RestAnnotation.java |  78 +++-
 .../apache/juneau/rest/annotation/RestMethod.java  |   4 +-
 .../rest/annotation/RestMethodAnnotation.java  |  18 +-
 pom.xml|   2 +-
 27 files changed, 1020 insertions(+), 258 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
index 1ddd4a7..17fd8c8 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
@@ -39,7 +39,7 @@ public class BeanFactory_Test {
bf.addBean(A.class, new A());
assertBoolean(bf.hasBean(A.class)).isTrue();
assertObject(bf.getBean(A.class)).exists();
-   bf = new BeanFactory(bf, null);
+   bf = BeanFactory.of(bf);
assertBoolean(bf.hasBean(A.class)).isTrue();
assertObject(bf.getBean(A.class)).exists();
}
@@ -270,7 +270,7 @@ public class BeanFactory_Test {
public void d01b_createBean_construct_withArgs_inner() throws Exception 
{
BeanFactory bf = new BeanFactory();
assertThrown(()->bf.createBean(D1b.class)).stderr().is("Could 
not instantiate class "+CNAME+"$D1b: Public constructor found but could not 
find prerequisites: BeanFactory_Test,A.");
-   BeanFactory bf2 = new BeanFactory(null,this);
+   BeanFactory bf2 = BeanFactory.of(null,this);
assertThrown(()->bf2.createBean(D1b.class)).stderr().is("Could 
not instantiate class "+CNAME+"$D1b: Public constructor found but could not 
find prerequisites: A.");
bf2.addBean(A.class, new A());
assertObject(bf2.createBean(D1b.class)).exists();
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
index 8b148af..e0b2bd7 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
@@ -61,6 +61,16 @@ public class BeanFactory {
}
 
/**
+* Static creator.
+*
+* @param parent Parent bean factory.  Can be null if this is 
the root resource.
+* @return A new {@link BeanFactory} object.
+*/
+   public static BeanFactory of(BeanFactory parent) {
+   return new BeanFactory(parent, null);
+   }
+
+   /**
 * Default constructor.
 */
public BeanFactory() {
diff --git a/juneau-examples/juneau-examples-rest-jetty/build-overlay/pom.xml 
b/juneau-examples/juneau-examples-rest-jetty/build-overlay/pom.xml
index 19bc870..cdd1078 100644
--- a/juneau-examples/juneau-examples-rest-jetty/build-overlay/pom.xml
+++ 

[juneau] branch master updated: REST refactoring.

2021-01-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 f4afbf8  REST refactoring.
f4afbf8 is described below

commit f4afbf88cc514ca719371cef6883bee9ba13c877
Author: JamesBognar 
AuthorDate: Thu Jan 21 18:37:30 2021 -0500

REST refactoring.
---
 .../rest/annotation/RestMethodAnnotation_Test.java |  5 ++
 .../juneau/rest/annotation/Rest_Context_Test.java  |  2 +-
 .../java/org/apache/juneau/rest/RestContext.java   | 12 +++--
 .../org/apache/juneau/rest/RestContextBuilder.java |  7 ++-
 .../org/apache/juneau/rest/RestMethodContext.java  | 58 ++
 .../juneau/rest/RestMethodContextBuilder.java  | 49 ++
 .../apache/juneau/rest/RrpcRestMethodContext.java  |  6 +--
 .../apache/juneau/rest/annotation/RestMethod.java  | 15 ++
 .../rest/annotation/RestMethodAnnotation.java  | 20 
 9 files changed, 141 insertions(+), 33 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestMethodAnnotation_Test.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestMethodAnnotation_Test.java
index 5ecf817..3e46c26 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestMethodAnnotation_Test.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestMethodAnnotation_Test.java
@@ -36,6 +36,7 @@ public class RestMethodAnnotation_Test {
RestMethod a1 = RestMethodAnnotation.create()
.clientVersion("clientVersion")
.consumes("consumes")
+   .context(RestMethodContext.class)
.converters(RestConverter.class)
.debug("debug")
.defaultAccept("defaultAccept")
@@ -68,6 +69,7 @@ public class RestMethodAnnotation_Test {
RestMethod a2 = RestMethodAnnotation.create()
.clientVersion("clientVersion")
.consumes("consumes")
+   .context(RestMethodContext.class)
.converters(RestConverter.class)
.debug("debug")
.defaultAccept("defaultAccept")
@@ -103,6 +105,7 @@ public class RestMethodAnnotation_Test {
+ "{"
+ "clientVersion:'clientVersion',"
+ "consumes:['consumes'],"
+   + 
"context:'org.apache.juneau.rest.RestMethodContext',"
+ 
"converters:['org.apache.juneau.rest.RestConverter'],"
+ "debug:'debug',"
+ "defaultAccept:'defaultAccept',"
@@ -178,6 +181,7 @@ public class RestMethodAnnotation_Test {
@RestMethod(
clientVersion="clientVersion",
consumes="consumes",
+   context=RestMethodContext.class,
converters=RestConverter.class,
debug="debug",
defaultAccept="defaultAccept",
@@ -212,6 +216,7 @@ public class RestMethodAnnotation_Test {
@RestMethod(
clientVersion="clientVersion",
consumes="consumes",
+   context=RestMethodContext.class,
converters=RestConverter.class,
debug="debug",
defaultAccept="defaultAccept",
diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_Context_Test.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_Context_Test.java
index e09b6ce..cba61b1 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_Context_Test.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_Context_Test.java
@@ -91,7 +91,7 @@ public class Rest_Context_Test {
 
@Test
public void a05_invalidConstructor() throws Exception {
-   assertThrown(()->client(A5.class)).contains("Invalid class 
specified for REST_context");
+   assertThrown(()->client(A5.class)).contains("Could not create 
instance");
}
 

//--
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 4863d25..5c3212a 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
@@ -4575,7 +4575,7 @@ public class RestContext extends 

[juneau] branch master updated: REST refactoring.

2021-01-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 bc3b4dd  REST refactoring.
bc3b4dd is described below

commit bc3b4dde6f66aa12fd403ac0c0cd8cf45bd32235
Author: JamesBognar 
AuthorDate: Thu Jan 21 15:32:56 2021 -0500

REST refactoring.
---
 .../src/main/java/org/apache/juneau/Context.java   |   2 +-
 .../juneau/rest/RestContext_ThreadLocals_Test.java |  10 +-
 .../java/org/apache/juneau/rest/RestContext.java   | 228 ++---
 .../org/apache/juneau/rest/RestMethodContext.java  |  34 +--
 .../juneau/rest/RestMethodContextBuilder.java  |  21 +-
 .../java/org/apache/juneau/rest/RestMethods.java   | 104 ++
 .../org/apache/juneau/rest/RestMethodsBuilder.java |  61 ++
 .../apache/juneau/rest/RrpcRestMethodContext.java  |  92 +
 8 files changed, 356 insertions(+), 196 deletions(-)

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 e5fcb75..d86e6b1 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
@@ -931,7 +931,7 @@ public abstract class Context {
return new DefaultFilteringOMap()
.a("Context", new DefaultFilteringOMap()
.a("identityCode", identityCode)
-   .a("propertyStore", propertyStore)
+   .a("propertyStore", 
System.identityHashCode(propertyStore))
);
}
 }
diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/RestContext_ThreadLocals_Test.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/RestContext_ThreadLocals_Test.java
index 7d6bd0f..3e815ef 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/RestContext_ThreadLocals_Test.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/RestContext_ThreadLocals_Test.java
@@ -12,7 +12,7 @@
 // 
***
 package org.apache.juneau.rest;
 
-import static org.junit.Assert.*;
+import static org.apache.juneau.assertions.Assertions.*;
 import static org.junit.runners.MethodSorters.*;
 
 import org.apache.juneau.rest.annotation.*;
@@ -36,8 +36,8 @@ public class RestContext_ThreadLocals_Test {
 
@RestHook(HookEvent.END_CALL)
public void assertThreadsNotSet() {
-   assertNull(getRequest());
-   assertNull(getResponse());
+   assertThrown(()->getRequest()).contains("No active 
request on current thread.");
+   assertThrown(()->getResponse()).contains("No active 
request on current thread.");
}
}
static MockRestClient a = MockRestClient.build(A.class);
@@ -62,8 +62,8 @@ public class RestContext_ThreadLocals_Test {
public static class B extends BasicRestServletGroup {
@RestHook(HookEvent.END_CALL)
public void assertThreadsNotSet2() {
-   assertNull(getRequest());
-   assertNull(getResponse());
+   assertThrown(()->getRequest()).contains("No active 
request on current thread.");
+   assertThrown(()->getResponse()).contains("No active 
request on current thread.");
}
}
static MockRestClient b = MockRestClient.build(B.class);
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 5f0cef5..4863d25 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
@@ -17,7 +17,6 @@ import static org.apache.juneau.internal.CollectionUtils.*;
 import static org.apache.juneau.internal.ObjectUtils.*;
 import static org.apache.juneau.internal.IOUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.rest.util.RestUtils.*;
 import static org.apache.juneau.rest.HttpRuntimeException.*;
 import static org.apache.juneau.Enablement.*;
 import static java.util.Collections.*;
@@ -64,7 +63,6 @@ import org.apache.juneau.rest.converters.*;
 import org.apache.juneau.rest.logging.*;
 import org.apache.juneau.rest.params.*;
 import org.apache.juneau.http.exception.*;
-import org.apache.juneau.http.remote.*;
 import 

[juneau] branch master updated: REST refactoring.

2021-01-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 3340749  REST refactoring.
3340749 is described below

commit 334074991df5d7adf993d54e2732fee77ea186a4
Author: JamesBognar 
AuthorDate: Thu Jan 21 09:50:48 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/cp/Messages_Test.java   |  2 +-
 .../java/org/apache/juneau/cp/MessagesBuilder.java | 12 +
 .../java/org/apache/juneau/rest/RestContext.java   | 58 --
 .../org/apache/juneau/rest/annotation/Rest.java| 20 
 4 files changed, 76 insertions(+), 16 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/Messages_Test.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/Messages_Test.java
index 4e4d49e..df86893 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/Messages_Test.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/Messages_Test.java
@@ -75,7 +75,7 @@ public class Messages_Test {

assertString(x1.forLocale(CHINA).getString("file")).is("MessageBundleTest1.properties");

assertString(x1.forLocale((Locale)null).getString("file")).is("MessageBundleTest1.properties");
 
-   Messages x2 = 
Messages.create(MessageBundleTest1.class).locale(null).build();
+   Messages x2 = 
Messages.create(MessageBundleTest1.class).locale((Locale)null).build();

assertString(x2.getString("file")).is("MessageBundleTest1.properties");

assertString(x2.forLocale(JAPANESE).getString("file")).is("MessageBundleTest1_ja.properties");

assertString(x2.forLocale(JAPAN).getString("file")).is("MessageBundleTest1_ja_JP.properties");
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/MessagesBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/MessagesBuilder.java
index 9f698a2..67db127 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/MessagesBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/MessagesBuilder.java
@@ -94,6 +94,18 @@ public class MessagesBuilder {
}
 
/**
+* Specifies the locale.
+*
+* @param locale
+*  The locale.
+*  If null, the default locale is used.
+* @return This object (for method chaining).
+*/
+   public MessagesBuilder locale(String locale) {
+   return locale(locale == null ? null : 
Locale.forLanguageTag(locale));
+   }
+
+   /**
 * Creates a new {@link Messages} based on the setting of this builder.
 *
 * @return A new {@link Messages} object.
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 7579c7f..5f0cef5 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
@@ -52,6 +52,7 @@ import org.apache.juneau.httppart.*;
 import org.apache.juneau.httppart.bean.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.jsonschema.*;
+import org.apache.juneau.marshall.*;
 import org.apache.juneau.msgpack.*;
 import org.apache.juneau.mstat.*;
 import org.apache.juneau.oapi.*;
@@ -3345,29 +3346,25 @@ public class RestContext extends BeanContext {
consumes = getListProperty(REST_consumes, 
MediaType.class, parsers.getSupportedMediaTypes());
produces = getListProperty(REST_produces, 
MediaType.class, serializers.getSupportedMediaTypes());
 
-   Tuple2,String>[] mbl = 
getInstanceArrayProperty(REST_messages, Tuple2.class);
-   Messages msgs = null;
-   for (int i = mbl.length-1; i >= 0; i--)
-   msgs = 
Messages.create(firstNonNull(mbl[i].getA(), 
rci.inner())).name(mbl[i].getB()).parent(msgs).build();
-   this.msgs = msgs;
+   msgs = createMessages(r);
 
-   this.fullPath = (builder.parentContext == null ? "" : 
(builder.parentContext.fullPath + '/')) + builder.getPath();
+   fullPath = (builder.parentContext == null ? "" : 
(builder.parentContext.fullPath + '/')) + builder.getPath();
 
String p = builder.getPath();
if (! p.endsWith("/*"))
p += "/*";
-   this.pathMatcher = UrlPathMatcher.of(p);
+   pathMatcher = UrlPathMatcher.of(p);
 
-   

[juneau] branch master updated: REST refactoring.

2021-01-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 7c4b579  REST refactoring.
7c4b579 is described below

commit 7c4b57901818dc4d9d6589253fdc9e345e0ecfdb
Author: JamesBognar 
AuthorDate: Sat Jan 16 15:45:23 2021 -0500

REST refactoring.
---
 .../main/java/org/apache/juneau/rest/RestCall.java | 41 --
 .../java/org/apache/juneau/rest/RestContext.java   | 21 +--
 2 files changed, 25 insertions(+), 37 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 43d2249..2893ab9 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
@@ -58,7 +58,11 @@ public class RestCall {
 * @param res The incoming HTTP servlet response object.
 */
public RestCall(Object resource, RestContext context, 
HttpServletRequest req, HttpServletResponse res) {
-   resource(resource).context(context).request(req).response(res);
+   this.context = context;
+   this.resource = resource;
+   beanFactory = new BeanFactory(context.rootBeanFactory,  
resource);
+   beanFactory.addBean(RestContext.class, context);
+   request(req).response(res);
}
 

//--
@@ -103,19 +107,6 @@ public class RestCall {
}
 
/**
-* Overrides the context object on this call.
-*
-* @param value The context that's creating this call.
-* @return This object (for method chaining).
-*/
-   public RestCall context(RestContext value) {
-   context = value;
-   beanFactory = new BeanFactory(value.rootBeanFactory, 
value.getResource());
-   beanFactory.addBean(RestContext.class, value);
-   return this;
-   }
-
-   /**
 * Sets the method context on this call.
 *
 * Used for logging statistics on the method.
@@ -294,18 +285,9 @@ public class RestCall {
 * @throws InternalServerError If the RestRequest object has not yet 
been created on this call.
 */
public RestRequest getRestRequest() {
-   return getRestRequestOptional().orElseThrow(()->new 
InternalServerError("RestRequest object has not yet been created."));
+   return Optional.ofNullable(rreq).orElseThrow(()->new 
InternalServerError("RestRequest object has not yet been created."));
}
 
-   /**
-* Returns the REST request of this REST call.
-*
-* @return the REST request of this REST call.
-* @throws InternalServerError If the RestRequest object has not yet 
been created on this call.
-*/
-   public Optional getRestRequestOptional() {
-   return Optional.ofNullable(rreq);
-   }
 
/**
 * Returns the REST response of this REST call.
@@ -313,16 +295,7 @@ public class RestCall {
 * @return the REST response of this REST call.
 */
public RestResponse getRestResponse() {
-   return getRestResponseOptional().orElseThrow(()->new 
InternalServerError("RestResponse object has not yet been created."));
-   }
-
-   /**
-* Returns the REST response of this REST call.
-*
-* @return the REST response of this REST call.
-*/
-   public Optional getRestResponseOptional() {
-   return Optional.ofNullable(rres);
+   return Optional.ofNullable(rres).orElseThrow(()->new 
InternalServerError("RestResponse object has not yet been created."));
}
 
/**
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 e0d5ea6..8e44a99 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
@@ -4831,6 +4831,7 @@ public class RestContext extends BeanContext {
 *  The resource object.
 *  Never null.
 */
+   @BeanIgnore
public Object getResource() {
return resource.get();
}
@@ -5845,9 +5846,9 @@ public class RestContext extends BeanContext {
 *
 * @return The HTTP request object, or null if it hasn't been 
created.
 */
+   @BeanIgnore
public RestRequest getRequest() {
-   

[juneau] branch master updated: REST refactoring.

2021-01-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 5fcefe7  REST refactoring.
5fcefe7 is described below

commit 5fcefe76d4e08d546a1d2f747b04958f883a3d4b
Author: JamesBognar 
AuthorDate: Sat Jan 16 14:54:53 2021 -0500

REST refactoring.
---
 .../apache/juneau/rest/RestMethod_Params_Test.java |   4 +-
 .../main/java/org/apache/juneau/rest/RestCall.java |  25 ++-
 .../java/org/apache/juneau/rest/RestContext.java   | 149 -
 .../org/apache/juneau/rest/RestMethodContext.java  |   4 +-
 .../org/apache/juneau/rest/RestMethodInvoker.java  |  66 
 .../org/apache/juneau/rest/RestMethodParam.java|  19 +--
 .../org/apache/juneau/rest/RestParamDefaults.java  | 182 +++--
 7 files changed, 260 insertions(+), 189 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/RestMethod_Params_Test.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/RestMethod_Params_Test.java
index 3e597b9..5a86bf2 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/RestMethod_Params_Test.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/RestMethod_Params_Test.java
@@ -381,8 +381,8 @@ public class RestMethod_Params_Test {
super(RestParamType.HEADER, "Custom", B2b.class);
}
@Override
-   public Object resolve(RestRequest req, RestResponse res) throws 
Exception {
-   return new B2b(req.getHeader("Custom"));
+   public Object resolve(RestCall call) throws Exception {
+   return new 
B2b(call.getRestRequest().getHeader("Custom"));
}
}
 
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 79ab9c3..43d2249 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
@@ -19,6 +19,7 @@ import java.util.*;
 import javax.servlet.http.*;
 
 import org.apache.juneau.cp.*;
+import org.apache.juneau.http.exception.*;
 import org.apache.juneau.httppart.bean.*;
 import org.apache.juneau.rest.logging.*;
 import org.apache.juneau.rest.util.*;
@@ -290,9 +291,20 @@ public class RestCall {
 * Returns the REST request of this REST call.
 *
 * @return the REST request of this REST call.
+* @throws InternalServerError If the RestRequest object has not yet 
been created on this call.
 */
public RestRequest getRestRequest() {
-   return rreq;
+   return getRestRequestOptional().orElseThrow(()->new 
InternalServerError("RestRequest object has not yet been created."));
+   }
+
+   /**
+* Returns the REST request of this REST call.
+*
+* @return the REST request of this REST call.
+* @throws InternalServerError If the RestRequest object has not yet 
been created on this call.
+*/
+   public Optional getRestRequestOptional() {
+   return Optional.ofNullable(rreq);
}
 
/**
@@ -301,7 +313,16 @@ public class RestCall {
 * @return the REST response of this REST call.
 */
public RestResponse getRestResponse() {
-   return rres;
+   return getRestResponseOptional().orElseThrow(()->new 
InternalServerError("RestResponse object has not yet been created."));
+   }
+
+   /**
+* Returns the REST response of this REST call.
+*
+* @return the REST response of this REST call.
+*/
+   public Optional getRestResponseOptional() {
+   return Optional.ofNullable(rres);
}
 
/**
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 34f9280..e0d5ea6 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
@@ -3214,14 +3214,13 @@ public class RestContext extends BeanContext {
private final MethodInvoker[]
postInitMethods,
postInitChildFirstMethods,
-   preCallMethods,
-   postCallMethods,
startCallMethods,
endCallMethods,
destroyMethods;
-   private final RestMethodParam[][]
-   preCallMethodParams,
-   postCallMethodParams;
+
+ 

[juneau] branch master updated: REST refactoring.

2021-01-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 576597a  REST refactoring.
576597a is described below

commit 576597ad03d343e34c12596ce39e31c61575b332
Author: JamesBognar 
AuthorDate: Wed Jan 13 16:41:29 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/cp/BeanFactory_Test.java |  85 --
 .../apache/juneau/cp/BeanCreateMethodFinder.java   | 135 +
 .../java/org/apache/juneau/cp/BeanFactory.java |  65 ++--
 .../org/apache/juneau/internal/ObjectUtils.java|   4 +-
 .../org/apache/juneau/rest/RequestFormData.java|  24 +-
 .../org/apache/juneau/rest/RequestHeaders.java |  25 +-
 .../java/org/apache/juneau/rest/RequestQuery.java  |  25 +-
 .../java/org/apache/juneau/rest/RestContext.java   | 217 +++---
 .../org/apache/juneau/rest/RestContextBuilder.java |   7 +-
 .../org/apache/juneau/rest/RestMethodContext.java  | 329 +++--
 .../java/org/apache/juneau/rest/RestRequest.java   |   8 +-
 11 files changed, 736 insertions(+), 188 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
index 3e09892..1ddd4a7 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
@@ -351,36 +351,65 @@ public class BeanFactory_Test {
}
 
@Test
-   public void e01_createBeanViaMethod_noArgs() throws Exception {
-   BeanFactory bf = new BeanFactory();
+   public void e01_beanCreateMethodFinder() throws Exception {
+   BeanFactory bf = BeanFactory.create();
E1 x = new E1();
 
-   assertObject(bf.createBeanViaMethod(E.class, x, "createA0", 
null)).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createA1", 
null)).exists();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createA2", 
null)).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createA3", 
null)).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createA4", 
null)).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createA5", 
null)).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createA6", 
null)).doesNotExist();
-   assertThrown(()->bf.createBeanViaMethod(E.class, x, "createA7", 
null)).contains("foo");
-
-   assertObject(bf.createBeanViaMethod(E.class, x, "createB0", 
null)).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createB1", 
null)).exists();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createB2", 
null)).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createB3", 
null)).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createB4", 
null)).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createB5", 
null)).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createB6", 
null)).doesNotExist();
-   assertThrown(()->bf.createBeanViaMethod(E.class, x, "createB7", 
null)).contains("foo");
-
-   assertObject(bf.createBeanViaMethod(E.class, x, "createC1", 
null)).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createC2", 
null)).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createC3", 
null)).exists();
-   assertObject(bf.createBeanViaMethod(E.class, x, "createC3", 
null).a).doesNotExist();
+   assertObject(bf.beanCreateMethodFinder(E.class, 
x).find("createA0").run()).doesNotExist();
+   assertObject(bf.beanCreateMethodFinder(E.class, 
x).find("createA1").run()).exists();
+   assertObject(bf.beanCreateMethodFinder(E.class, 
x).find("createA2").run()).doesNotExist();
+   assertObject(bf.beanCreateMethodFinder(E.class, 
x).find("createA3").run()).doesNotExist();
+   assertObject(bf.beanCreateMethodFinder(E.class, 
x).find("createA4").run()).doesNotExist();
+   assertObject(bf.beanCreateMethodFinder(E.class, 
x).find("createA5").run()).doesNotExist();
+   assertObject(bf.beanCreateMethodFinder(E.class, 
x).find("createA6").run()).doesNotExist();
+   assertThrown(()->bf.beanCreateMethodFinder(E.class, 
x).find("createA7").run()).contains("foo");
+
+   assertObject(bf.beanCreateMethodFinder(E.class, 
x).find("createB0").run()).doesNotExist();
+   

[juneau] branch master updated: REST refactoring.

2021-01-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 d813408  REST refactoring.
d813408 is described below

commit d813408fb20e4f41b1e4d44688b7aca770bf5bd2
Author: JamesBognar 
AuthorDate: Wed Jan 13 09:06:33 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RestContext.java   |   2 -
 .../org/apache/juneau/rest/RestMethodContext.java  | 119 +++--
 2 files changed, 87 insertions(+), 34 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 0b29710..621f508 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
@@ -2743,7 +2743,6 @@ public class RestContext extends BeanContext {
 * This affects the returned values from the following:
 * 
 *  {@link RestContext#getProduces() 
RestContext.getProduces()}
-*  {@link RestRequest#getProduces()}
 *  {@link RestInfoProvider#getSwagger(RestRequest)} 
- Affects produces field.
 * 
 */
@@ -2809,7 +2808,6 @@ public class RestContext extends BeanContext {
 * This affects the returned values from the following:
 * 
 *  {@link RestContext#getConsumes() 
RestContext.getConsumes()}
-*  {@link RestRequest#getConsumes()}
 *  {@link RestInfoProvider#getSwagger(RestRequest)} 
- Affects consumes field.
 * 
 */
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
index a50bca3..ab1b125 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
@@ -589,6 +589,18 @@ public class RestMethodContext extends BeanContext 
implements Comparable 
x.required()).toArray(RestMatcher[]::new);
optionalMatchers = matchers.stream().filter(x -> ! 
x.required()).toArray(RestMatcher[]::new);
 
+   pathMatchers = createPathMatchers(r, beanFactory, 
b.dotAll);
+   beanFactory.addBean(UrlPathMatcher[].class, 
pathMatchers);
+
+   encoders = createEncoders(r, beanFactory);
+   beanFactory.addBean(EncoderGroup.class, encoders);
+
+   jsonSchemaGenerator = createJsonSchemaGenerator(r, 
beanFactory, ps);
+   beanFactory.addBean(JsonSchemaGenerator.class, 
jsonSchemaGenerator);
+
+   supportedAcceptTypes = getListProperty(REST_produces, 
MediaType.class, serializers.getSupportedMediaTypes());
+   supportedContentTypes = getListProperty(REST_consumes, 
MediaType.class, parsers.getSupportedMediaTypes());
+
int _hierarchyDepth = 0;
Class sc = 
b.method.getDeclaringClass().getSuperclass();
while (sc != null) {
@@ -610,30 +622,7 @@ public class RestMethodContext extends BeanContext 
implements Comparable _pathMatchers = new ArrayList<>();
-   for (String p : getArrayProperty(RESTMETHOD_paths, 
String.class)) {
-   if (dotAll && ! p.endsWith("/*"))
-   p += "/*";
-   _pathMatchers.add(UrlPathMatcher.of(p));
-   }
-   if (_pathMatchers.isEmpty()) {
-   String p = HttpUtils.detectHttpPath(method, 
true);
-   if (dotAll && ! p.endsWith("/*"))
-   p += "/*";
-   _pathMatchers.add(UrlPathMatcher.of(p));
-   }
-   pathMatchers = _pathMatchers.toArray(new 
UrlPathMatcher[_pathMatchers.size()]);
-
-   methodParams = context.findParams(mi, false, 
this.pathMatchers[this.pathMatchers.length-1]);
-
-   this.encoders = EncoderGroup
-   .create()
-   .append(IdentityEncoder.INSTANCE)
-   .append(createEncoders(r, beanFactory))
-   .build();
-
-   this.jsonSchemaGenerator = 
JsonSchemaGenerator.create().apply(ps).build();
+   methodParams = context.findParams(mi, false, 
pathMatchers[this.pathMatchers.length-1]);
 
Map 

[juneau] branch master updated: REST refactoring.

2021-01-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 bf1735c  REST refactoring.
bf1735c is described below

commit bf1735c5501db69449b6cf5ef3caef26a61a5a1f
Author: JamesBognar 
AuthorDate: Tue Jan 12 19:20:07 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RestContext.java   |  84 +++-
 .../org/apache/juneau/rest/RestMethodContext.java  | 110 +
 2 files changed, 83 insertions(+), 111 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 4d2936f..0b29710 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
@@ -4011,30 +4011,26 @@ public class RestContext extends BeanContext {
 * @seealso #REST_serializers
 */
protected SerializerGroup createSerializers(Object resource, 
BeanFactory beanFactory, PropertyStore ps) throws Exception {
-   Object x = getArrayProperty(REST_serializers, Object.class);
-   if (x == null)
-   x = beanFactory.createBeanViaMethod(Serializer[].class, 
resource, "createSerializers", null);
-   if (x == null)
-   x = beanFactory.createBeanViaMethod(Class[].class, 
resource, "createSerializers", null);
-   if (x == null) {
-   x = 
beanFactory.createBeanViaMethod(SerializerGroup.class, resource, 
"createSerializers", null);
-   if (x != null)
-   return (SerializerGroup)x;
-   }
-   if (x == null)
-   x = 
beanFactory.getBean(Serializer[].class).orElse(null);
-   if (x == null) {
-   x = 
beanFactory.getBean(SerializerGroup.class).orElse(null);
-   if (x != null)
-   return (SerializerGroup)x;
+   SerializerGroup g = 
beanFactory.getBean(SerializerGroup.class).orElse(null);
+
+   if (g == null) {
+   Object[] x = getArrayProperty(REST_serializers, 
Object.class);
+   if (x == null)
+   x = 
beanFactory.getBean(Serializer[].class).orElse(null);
+   if (x == null)
+   x = new Serializer[0];
+   g = SerializerGroup
+   .create()
+   .append(x)
+   .apply(ps)
+   .build();
}
-   if (x == null)
-   x = new Serializer[0];
-   return SerializerGroup
-   .create()
-   .append((Object[])x)
-   .apply(ps)
-   .build();
+
+   g = BeanFactory.of(beanFactory, resource)
+   .addBean(SerializerGroup.class, g)
+   .createBeanViaMethod(SerializerGroup.class, resource, 
"createSerializers", g);
+
+   return g;
}
 
/**
@@ -4067,30 +4063,26 @@ public class RestContext extends BeanContext {
 * @seealso #REST_parsers
 */
protected ParserGroup createParsers(Object resource, BeanFactory 
beanFactory, PropertyStore ps) throws Exception {
-   Object x = getArrayProperty(REST_parsers, Object.class);
-   if (x == null)
-   x = beanFactory.createBeanViaMethod(Parser[].class, 
resource, "createParsers", null);
-   if (x == null)
-   x = beanFactory.createBeanViaMethod(Class[].class, 
resource, "createParsers", null);
-   if (x == null) {
-   x = beanFactory.createBeanViaMethod(ParserGroup.class, 
resource, "createParsers", null);
-   if (x != null)
-   return (ParserGroup)x;
-   }
-   if (x == null)
-   x = beanFactory.getBean(Parser[].class).orElse(null);
-   if (x == null) {
-   x = beanFactory.getBean(ParserGroup.class).orElse(null);
-   if (x != null)
-   return (ParserGroup)x;
+   ParserGroup g = 
beanFactory.getBean(ParserGroup.class).orElse(null);
+
+   if (g == null) {
+   Object[] x = getArrayProperty(REST_parsers, 
Object.class);
+   if (x == null)
+   x = 

[juneau] branch master updated: REST refactoring.

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

commit 3e0472c5f32922ce74e2cf2bdf9c30f545b31480
Author: JamesBognar 
AuthorDate: Tue Jan 12 18:57:01 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/cp/BeanFactory_Test.java | 52 ++--
 .../java/org/apache/juneau/cp/BeanFactory.java | 25 +-
 .../java/org/apache/juneau/rest/RestContext.java   | 93 --
 .../org/apache/juneau/rest/RestContextBuilder.java |  2 +-
 .../org/apache/juneau/rest/RestMethodContext.java  | 70 +---
 5 files changed, 143 insertions(+), 99 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
index 4368671..3e09892 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
@@ -355,32 +355,32 @@ public class BeanFactory_Test {
BeanFactory bf = new BeanFactory();
E1 x = new E1();
 
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createA0")).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createA1")).exists();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createA2")).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createA3")).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createA4")).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createA5")).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createA6")).doesNotExist();
-   assertThrown(()->bf.createBeanViaMethod(E.class, x, 
"createA7")).contains("foo");
-
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createB0")).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createB1")).exists();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createB2")).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createB3")).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createB4")).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createB5")).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createB6")).doesNotExist();
-   assertThrown(()->bf.createBeanViaMethod(E.class, x, 
"createB7")).contains("foo");
-
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createC1")).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createC2")).doesNotExist();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createC3")).exists();
-   assertObject(bf.createBeanViaMethod(E.class, x, 
"createC3").a).doesNotExist();
+   assertObject(bf.createBeanViaMethod(E.class, x, "createA0", 
null)).doesNotExist();
+   assertObject(bf.createBeanViaMethod(E.class, x, "createA1", 
null)).exists();
+   assertObject(bf.createBeanViaMethod(E.class, x, "createA2", 
null)).doesNotExist();
+   assertObject(bf.createBeanViaMethod(E.class, x, "createA3", 
null)).doesNotExist();
+   assertObject(bf.createBeanViaMethod(E.class, x, "createA4", 
null)).doesNotExist();
+   assertObject(bf.createBeanViaMethod(E.class, x, "createA5", 
null)).doesNotExist();
+   assertObject(bf.createBeanViaMethod(E.class, x, "createA6", 
null)).doesNotExist();
+   assertThrown(()->bf.createBeanViaMethod(E.class, x, "createA7", 
null)).contains("foo");
+
+   assertObject(bf.createBeanViaMethod(E.class, x, "createB0", 
null)).doesNotExist();
+   assertObject(bf.createBeanViaMethod(E.class, x, "createB1", 
null)).exists();
+   assertObject(bf.createBeanViaMethod(E.class, x, "createB2", 
null)).doesNotExist();
+   assertObject(bf.createBeanViaMethod(E.class, x, "createB3", 
null)).doesNotExist();
+   assertObject(bf.createBeanViaMethod(E.class, x, "createB4", 
null)).doesNotExist();
+   assertObject(bf.createBeanViaMethod(E.class, x, "createB5", 
null)).doesNotExist();
+   assertObject(bf.createBeanViaMethod(E.class, x, "createB6", 
null)).doesNotExist();
+   assertThrown(()->bf.createBeanViaMethod(E.class, x, "createB7", 
null)).contains("foo");
+
+   assertObject(bf.createBeanViaMethod(E.class, x, "createC1", 
null)).doesNotExist();
+   

[juneau] branch master updated: REST refactoring.

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

commit 8b73403ca9be868f14c5d06049f2e1596a935c25
Author: JamesBognar 
AuthorDate: Tue Jan 12 18:13:55 2021 -0500

REST refactoring.
---
 .../apache/juneau/rest/ClientVersionMatcher.java   |  2 +-
 .../java/org/apache/juneau/rest/RestMatcher.java   |  2 +-
 .../org/apache/juneau/rest/RestMethodContext.java  | 94 +++---
 3 files changed, 48 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 0708e52..0b7f8e9 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
@@ -50,7 +50,7 @@ public class ClientVersionMatcher extends RestMatcher {
}
 
@Override /* RestMatcher */
-   public boolean mustMatch() {
+   public boolean required() {
return true;
}
 }
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 a47b9d6..caf0e72 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
@@ -85,7 +85,7 @@ public abstract class RestMatcher {
 *
 * @return true if this matcher is required to match in order 
for the method to be invoked.
 */
-   public boolean mustMatch() {
+   public boolean required() {
return false;
}
 }
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
index d8d0e22..77218e8 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
@@ -562,14 +562,6 @@ public class RestMethodContext extends BeanContext 
implements Comparable sc = 
b.method.getDeclaringClass().getSuperclass();
-   while (sc != null) {
-   _hierarchyDepth++;
-   sc = sc.getSuperclass();
-   }
-   hierarchyDepth = _hierarchyDepth;
-
beanFactory = new BeanFactory(context.getBeanFactory(), 
r)
.addBean(RestMethodContext.class, this)
.addBean(Method.class, method);
@@ -587,6 +579,24 @@ public class RestMethodContext extends BeanContext 
implements Comparable matchers = 
Arrays.asList(createMatchers(r, beanFactory));
+   requiredMatchers = matchers.stream().filter(x -> 
x.required()).toArray(RestMatcher[]::new);
+   optionalMatchers = matchers.stream().filter(x -> ! 
x.required()).toArray(RestMatcher[]::new);
+
+   int _hierarchyDepth = 0;
+   Class sc = 
b.method.getDeclaringClass().getSuperclass();
+   while (sc != null) {
+   _hierarchyDepth++;
+   sc = sc.getSuperclass();
+   }
+   hierarchyDepth = _hierarchyDepth;
+
String _httpMethod = getProperty(RESTMETHOD_httpMethod, 
String.class, null);
if (_httpMethod == null)
_httpMethod = 
HttpUtils.detectHttpMethod(method, true, "GET");
@@ -598,56 +608,24 @@ public class RestMethodContext extends BeanContext 
implements Comparable pathMatchers = new ArrayList<>();
+   List _pathMatchers = new ArrayList<>();
for (String p : getArrayProperty(RESTMETHOD_paths, 
String.class)) {
if (dotAll && ! p.endsWith("/*"))
p += "/*";
-   pathMatchers.add(UrlPathMatcher.of(p));
+   _pathMatchers.add(UrlPathMatcher.of(p));
}
-   if (pathMatchers.isEmpty()) {
+   if (_pathMatchers.isEmpty()) {
String p = HttpUtils.detectHttpPath(method, 
true);
if (dotAll && ! p.endsWith("/*"))
p += 

[juneau] branch master updated: REST refactoring.

2021-01-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 a1a7e7a  REST refactoring.
a1a7e7a is described below

commit a1a7e7a9317883b1834178d9ef67cfdbacf4f8f3
Author: JamesBognar 
AuthorDate: Tue Jan 12 17:51:15 2021 -0500

REST refactoring.
---
 .../apache/juneau/reflection/ClassInfoTest.java|  22 +++-
 .../juneau/reflection/ConstructorInfoTest.java |   4 +-
 .../apache/juneau/reflection/MethodInfoTest.java   |   4 +-
 .../src/main/java/org/apache/juneau/ClassMeta.java |   4 -
 .../java/org/apache/juneau/cp/BeanFactory.java |  14 +--
 .../juneau/httppart/bean/ResponseBeanMeta.java |   8 +-
 .../java/org/apache/juneau/reflect/ClassInfo.java  | 119 -
 .../org/apache/juneau/reflect/ConstructorInfo.java |  12 +--
 .../org/apache/juneau/reflect/ExecutableInfo.java  |  10 +-
 .../java/org/apache/juneau/reflect/MethodInfo.java |  33 ++
 .../java/org/apache/juneau/reflect/ParamInfo.java  |   9 +-
 .../rest/client/remote/RemoteMethodMeta.java   |   2 +-
 .../rest/client/remote/RemoteMethodReturn.java |   3 +-
 .../apache/juneau/rest/BasicRestInfoProvider.java  |   2 +-
 .../java/org/apache/juneau/rest/RestContext.java   |   2 +-
 .../org/apache/juneau/rest/RestContextBuilder.java |   2 +-
 .../juneau/rest/RestMethodContextBuilder.java  |   2 +-
 .../org/apache/juneau/rest/SwaggerGenerator.java   |   6 +-
 18 files changed, 109 insertions(+), 149 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ClassInfoTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ClassInfoTest.java
index 6ea45e4..4ac6204 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ClassInfoTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ClassInfoTest.java
@@ -174,10 +174,28 @@ public class ClassInfoTest {
 
@Test
public void resolved() {
-   check("A1", of(A1.class).resolved());
-   check("A1", of(A2.class).resolved());
+   check("A1", of(A1.class).unwrap(Value.class));
+   check("A1", of(A2.class).unwrap(Value.class));
}
 
+   public static class A6 {
+   public Optional m1(Optional bar) {
+   return null;
+   }
+   public Value m2(Value bar) {
+   return null;
+   }
+   }
+
+   @Test
+   public void resolvedParams() {
+   MethodInfo mi = ClassInfo.of(A6.class).getPublicMethod("m1", 
Optional.class);
+   check("A1", mi.getParamType(0).unwrap(Optional.class));
+   check("A1", mi.getReturnType().unwrap(Optional.class));
+   mi = ClassInfo.of(A6.class).getPublicMethod("m2", Value.class);
+   check("A1", mi.getParamType(0).unwrap(Value.class));
+   check("A1", mi.getReturnType().unwrap(Value.class));
+   }
 

//-
// Parent classes and interfaces.
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ConstructorInfoTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ConstructorInfoTest.java
index 7035dab..fa4b8bd 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ConstructorInfoTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ConstructorInfoTest.java
@@ -69,7 +69,7 @@ public class ConstructorInfoTest {
 
@Test
public void of_withDeclaringClass() throws Exception {
-   check("A()", ConstructorInfo.of(ClassInfo.of(A.class), 
a.inner(), null));
+   check("A()", ConstructorInfo.of(ClassInfo.of(A.class), 
a.inner()));
}
 
@Test
@@ -85,7 +85,7 @@ public class ConstructorInfoTest {
@Test
public void of_null() throws Exception {
check(null, ConstructorInfo.of(null));
-   check(null, ConstructorInfo.of(null, null, null));
+   check(null, ConstructorInfo.of(null, null));
}
 

//-
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/MethodInfoTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/MethodInfoTest.java
index 4b8d304..0a39904 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/MethodInfoTest.java
+++ 

[juneau] branch master updated: REST refactoring.

2021-01-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 bf26eca  REST refactoring.
bf26eca is described below

commit bf26eca3dfa5ff05af283af7181a5d76615e83d0
Author: JamesBognar 
AuthorDate: Tue Jan 12 16:24:29 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/cp/BeanFactory_Test.java | 16 -
 .../src/main/java/org/apache/juneau/Value.java | 10 +++
 .../java/org/apache/juneau/cp/BeanFactory.java | 73 --
 .../org/apache/juneau/internal/ObjectUtils.java| 14 +
 .../java/org/apache/juneau/reflect/ClassInfo.java  | 35 ++-
 .../juneau/examples/rest/springboot/App.java   | 44 -
 .../rest/springboot/HelloWorldMessageProvider.java | 29 +
 .../rest/springboot}/HelloWorldResource.java   | 64 ---
 .../examples/rest/springboot/RootResources.java|  4 --
 .../microservice/springboot/template/App.java  | 57 ++---
 .../template/HelloWorldMessageProvider.java| 29 +
 .../springboot/template/HelloWorldResource.java| 58 ++---
 .../springboot/template/RootResources.java | 43 ++---
 .../juneau/rest/springboot/SpringBeanFactory.java  | 19 +++---
 .../juneau/rest/springboot/SpringRestServlet.java  |  8 ++-
 .../java/org/apache/juneau/rest/RestContext.java   |  6 +-
 .../org/apache/juneau/rest/RestContextBuilder.java |  5 +-
 .../java/org/apache/juneau/rest/RestServlet.java   |  5 +-
 18 files changed, 411 insertions(+), 108 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
index a094f23..4368671 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/cp/BeanFactory_Test.java
@@ -15,6 +15,8 @@ package org.apache.juneau.cp;
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.junit.runners.MethodSorters.*;
 
+import java.util.*;
+
 import org.apache.juneau.annotation.*;
 import org.junit.*;
 
@@ -279,7 +281,9 @@ public class BeanFactory_Test {
// Create bean via method.

//-
 
-   public static class E {}
+   public static class E {
+   public A a;
+   }
 
public static class E1 {
 
@@ -338,6 +342,12 @@ public class BeanFactory_Test {
public static E createC2(A a) {
return new E();
}
+
+   public static E createC3(Optional a) {
+   E e = new E();
+   e.a = a.orElse(null);
+   return e;
+   }
}
 
@Test
@@ -365,8 +375,12 @@ public class BeanFactory_Test {
 
assertObject(bf.createBeanViaMethod(E.class, x, 
"createC1")).doesNotExist();
assertObject(bf.createBeanViaMethod(E.class, x, 
"createC2")).doesNotExist();
+   assertObject(bf.createBeanViaMethod(E.class, x, 
"createC3")).exists();
+   assertObject(bf.createBeanViaMethod(E.class, x, 
"createC3").a).doesNotExist();
bf.addBean(A.class, new A());
assertObject(bf.createBeanViaMethod(E.class, x, 
"createC1")).exists();
assertObject(bf.createBeanViaMethod(E.class, x, 
"createC2")).exists();
+   assertObject(bf.createBeanViaMethod(E.class, x, 
"createC3")).exists();
+   assertObject(bf.createBeanViaMethod(E.class, x, 
"createC3").a).exists();
}
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Value.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Value.java
index 37f3b2a..d982e9a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Value.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Value.java
@@ -27,6 +27,16 @@ import org.apache.juneau.reflect.*;
 public class Value {
 
/**
+* Creator.
+*
+* @param object The object being wrapped.
+* @return A new {@link Value} object.
+*/
+   public static  Value of(T object) {
+   return new Value<>(object);
+   }
+
+   /**
 * Returns the generic parameter type of the Value parameter at the 
specified position.
 *
 * Example:
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
index 260fefc..f8bc7f2 100644
--- 

[juneau] branch master updated: REST refactoring.

2021-01-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 f29b9f2  REST refactoring.
f29b9f2 is described below

commit f29b9f2478087cdf9cc82295bdd063b8097c690e
Author: JamesBognar 
AuthorDate: Tue Jan 12 10:41:24 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/rest/mock/MockRestClient.java | 21 +++--
 .../springboot/BasicSpringRestServletGroup.java |  2 --
 .../java/org/apache/juneau/rest/RestContext.java| 18 ++
 .../java/org/apache/juneau/rest/RestServlet.java| 21 -
 4 files changed, 33 insertions(+), 29 deletions(-)

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 7562a03..f47d9d5 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
@@ -32,7 +32,6 @@ import org.apache.http.message.*;
 import org.apache.juneau.*;
 import org.apache.juneau.http.remote.*;
 import org.apache.juneau.parser.*;
-import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.client.*;
@@ -280,19 +279,13 @@ public class MockRestClient extends RestClient implements 
HttpClientConnection {
if (! contexts.containsKey(c)) {
boolean isClass = restBean instanceof Class;
Object o = isClass ? 
((Class)restBean).newInstance() : restBean;
-   RestContextBuilder rcb = 
RestContext.create(o).callLoggerDefault(BasicTestRestLogger.class).debugDefault(CONDITIONAL);
-   RestContext rc = rcb.build();
-   MethodInfo mi = 
ClassInfo.of(o).getMethod("setContext", RestContext.class);
-   if (mi != null)
-   mi.accessible().invoke(o, rc);
-   if (o instanceof RestServlet) {
-   RestServlet rs = (RestServlet)o;
-   if (! rs.isInitialized())
-   rc.postInit();
-   } else {
-   rc.postInit();
-   }
-   rc.postInitChildFirst();
+   RestContext rc = RestContext
+   .create(o)
+   
.callLoggerDefault(BasicTestRestLogger.class)
+   .debugDefault(CONDITIONAL)
+   .build()
+   .postInit()
+   .postInitChildFirst();
contexts.put(c, rc);
}
RestContext restBeanCtx = contexts.get(c);
diff --git 
a/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServletGroup.java
 
b/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServletGroup.java
index 83a6361..a3ab546 100644
--- 
a/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServletGroup.java
+++ 
b/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServletGroup.java
@@ -11,8 +11,6 @@ package org.apache.juneau.rest.springboot;
 // * "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.  *
 // 
***
-
-
 import static org.apache.juneau.http.HttpMethod.*;
 
 import org.apache.juneau.rest.*;
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 8a8c3d4..32cb3b7 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
@@ -29,6 +29,7 @@ import java.nio.charset.*;
 import java.time.*;
 import java.util.*;
 import java.util.concurrent.*;
+import 

[juneau] branch master updated: REST refactoring.

2021-01-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 3190e0c  REST refactoring.
3190e0c is described below

commit 3190e0c567a0d859b757a0144debb96003284ba8
Author: JamesBognar 
AuthorDate: Tue Jan 12 10:12:12 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/rest/RestMethodContext.java  | 46 --
 1 file changed, 34 insertions(+), 12 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
index a6054e9..d8d0e22 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
@@ -581,6 +581,12 @@ public class RestMethodContext extends BeanContext 
implements Comparable

[juneau] branch master updated: REST refactoring.

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

commit 0fbd6e003746512ae234db21822271ad93d4763b
Author: JamesBognar 
AuthorDate: Tue Jan 12 09:45:13 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RestContext.java   |  96 +---
 .../org/apache/juneau/rest/RestMethodContext.java  | 250 ++---
 2 files changed, 285 insertions(+), 61 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 03db723..8a8c3d4 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
@@ -3278,61 +3278,59 @@ public class RestContext extends BeanContext {
this.builder = builder;
 
this.resource = builder.resource instanceof Supplier ? 
(Supplier)builder.resource : ()->builder.resource;
-   Object resource = getResource();
+   Object r = getResource();
 
parentContext = builder.parentContext;
-   ClassInfo rci = ClassInfo.of(resource).resolved();
+   ClassInfo rci = ClassInfo.of(r).resolved();
 
-   rootBeanFactory = createRootBeanFactory(resource);
+   rootBeanFactory = createRootBeanFactory(r);
 
-   beanFactory = createBeanFactory(resource);
+   beanFactory = createBeanFactory(r);
beanFactory.addBean(BeanFactory.class, beanFactory);
 
PropertyStore ps = getPropertyStore();
beanFactory.addBean(PropertyStore.class, ps);
 
-   logger = createLogger(resource, beanFactory);
+   logger = createLogger(r, beanFactory);
beanFactory.addBean(Logger.class, logger);
 
-   stackTraceStore = createStackTraceStore(resource, 
beanFactory);
+   stackTraceStore = createStackTraceStore(r, beanFactory);
beanFactory.addBean(StackTraceStore.class, 
stackTraceStore);
 
-   varResolver = createVarResolver(resource, beanFactory);
+   varResolver = createVarResolver(r, beanFactory);
beanFactory.addBean(VarResolver.class, varResolver);
 
config = 
builder.config.resolving(varResolver.createSession());
beanFactory.addBean(Config.class, config);
 
-   responseHandlers = createResponseHandlers(resource, 
beanFactory);
+   responseHandlers = createResponseHandlers(r, 
beanFactory);
beanFactory.addBean(ResponseHandler[].class, 
responseHandlers);
 
-   callLogger = createCallLogger(resource, beanFactory);
+   callLogger = createCallLogger(r, beanFactory);
beanFactory.addBean(RestLogger.class, callLogger);
 
-   Serializer[] _serializers = createSerializers(resource, 
beanFactory);
-   beanFactory.addBean(Serializer[].class, _serializers);
-   serializers = 
SerializerGroup.create().append(_serializers).build();
+   serializers = createSerializers(r, beanFactory, ps);
+   beanFactory.addBean(SerializerGroup.class, serializers);
 
-   Parser[] _parsers = createParsers(resource, 
beanFactory);
-   beanFactory.addBean(Parser[].class, _parsers);
-   parsers = ParserGroup.create().append(_parsers).build();
+   parsers = createParsers(r, beanFactory, ps);
+   beanFactory.addBean(ParserGroup.class, parsers);
 
-   partSerializer = createPartSerializer(resource, 
beanFactory);
+   partSerializer = createPartSerializer(r, beanFactory);
beanFactory.addBean(HttpPartSerializer.class, 
partSerializer);
 
-   partParser = createPartParser(resource, beanFactory);
+   partParser = createPartParser(r, beanFactory);
beanFactory.addBean(HttpPartParser.class, partParser);
 
-   jsonSchemaGenerator = 
createJsonSchemaGenerator(resource, beanFactory);
+   jsonSchemaGenerator = createJsonSchemaGenerator(r, 
beanFactory);

[juneau] branch master updated: REST refactoring.

2021-01-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 9a825aa  REST refactoring.
9a825aa is described below

commit 9a825aae0ff9123e5a2e839a0241f3868b78a576
Author: JamesBognar 
AuthorDate: Mon Jan 11 19:52:10 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RestMethodContext.java   | 16 
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
index 66bba0c..dff885d 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
@@ -24,6 +24,7 @@ import static org.apache.juneau.rest.HttpRuntimeException.*;
 
 import java.lang.annotation.*;
 import java.lang.reflect.*;
+import java.lang.reflect.Method;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.concurrent.atomic.*;
@@ -46,7 +47,6 @@ import org.apache.juneau.jsonschema.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.annotation.Method;
 import org.apache.juneau.http.exception.*;
 import org.apache.juneau.http.remote.*;
 import org.apache.juneau.rest.guards.*;
@@ -284,7 +284,7 @@ public class RestMethodContext extends BeanContext 
implements Comparable"*"
 *  - Denotes any method.
 *  Use this if you want to capture any HTTP methods in 
a single Java method.
-*  The {@link Method @Method} annotation and/or {@link 
RestRequest#getMethod()} method can be used to
+*  The {@link org.apache.juneau.rest.annotation.Method 
@Method} annotation and/or {@link RestRequest#getMethod()} method can be used to
 *  distinguish the actual HTTP method name.
 *  
 *  ""
@@ -519,7 +519,7 @@ public class RestMethodContext extends BeanContext 
implements ComparableLooks for a static or non-static createConverters() 
method that returns {@link RestConverter}[] on the
 *  resource class with any of the following arguments:
 *  
-*  {@link java.lang.reflect.Method} - The Java 
method this context belongs to.
+*  {@link Method} - The Java method this 
context belongs to.
 *  {@link RestContext}
 *  {@link BeanFactory}
 *  Any {@doc RestInjection injected beans}.
@@ -812,7 +812,7 @@ public class RestMethodContext extends BeanContext 
implements ComparableLooks for a static or non-static createGuards() 
method that returns {@link RestGuard}[] on the
 *  resource class with any of the following arguments:
 *  
-*  {@link java.lang.reflect.Method} - The Java 
method this context belongs to.
+*  {@link Method} - The Java method this 
context belongs to.
 *  {@link RestContext}
 *  {@link BeanFactory}
 *  Any {@doc RestInjection injected beans}.
@@ -869,7 +869,7 @@ public class RestMethodContext extends BeanContext 
implements ComparableLooks for a static or non-static createEncoders() 
method that returns {@link Encoder}[] on the
 *  resource class with any of the following arguments:
 *  
-*  {@link java.lang.reflect.Method} - The Java 
method this context belongs to.
+*  {@link Method} - The Java method this 
context belongs to.
 *  {@link RestContext}
 *  {@link BeanFactory}
 *  Any {@doc RestInjection injected beans}.



[juneau] branch master updated: REST refactoring.

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

commit 2b53e269a684a3c8b931abfb8e6213af00384884
Author: JamesBognar 
AuthorDate: Mon Jan 11 19:40:09 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/cp/BeanFactory.java |   5 +-
 .../java/org/apache/juneau/reflect/MethodInfo.java |  19 
 .../java/org/apache/juneau/rest/RestContext.java   | 114 ++---
 .../org/apache/juneau/rest/RestMethodContext.java  |  29 --
 4 files changed, 97 insertions(+), 70 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
index 572d4ef..260fefc 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
@@ -173,15 +173,16 @@ public class BeanFactory {
 * @param c The bean type to create.
 * @param resource The object where the method is defined.
 * @param methodName The method name on the object to call.
+* @param requiredParams The parameter types that must be present on 
the method.
 * @return A newly-created bean or null if method not found or 
it returns null.
 * @throws ExecutableException If bean could not be created.
 */
-   public  T createBeanViaMethod(Class c, Object resource, String 
methodName) throws ExecutableException {
+   public  T createBeanViaMethod(Class c, Object resource, String 
methodName, Class...requiredParams) throws ExecutableException {
ClassInfo ci = ClassInfo.of(resource);
for (MethodInfo m : ci.getPublicMethods()) {
if (m.isAll(NOT_DEPRECATED) && m.hasReturnType(c) && 
m.getSimpleName().equals(methodName) && (!m.hasAnnotation(BeanIgnore.class))) {
List missing = 
getMissingParamTypes(m.getParamTypes());
-   if (missing.isEmpty())
+   if (missing.isEmpty() && 
m.hasAllArgs(requiredParams))
return m.invoke(resource, 
getParams(m.getParamTypes()));
}
}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
index c2bfe43..1822cbb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
@@ -559,6 +559,25 @@ public final class MethodInfo extends ExecutableInfo 
implements Comparabletrue if this method has at least the specified 
parameters.
+*
+* 
+* Method may or may not have additional parameters besides those 
specified.
+*
+* @param requiredParams The parameter types to check for.
+* @return true if this method has at least the specified 
parameters.
+*/
+   public boolean hasAllArgs(Class...requiredParams) {
+   List> rawParamTypes = getRawParamTypes();
+
+   for (Class c : requiredParams)
+   if (! rawParamTypes.contains(c))
+   return false;
+
+   return true;
+   }
+
+   /**
 * Returns true if this method is a bridge method.
 *
 * @return true if this method is a bridge method.
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 449b06b..03db723 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
@@ -1077,7 +1077,7 @@ public class RestContext extends BeanContext {
 *  
 *  {@link 
org.apache.juneau.rest.RestContextBuilder#fileFinder(Class)}
 *  {@link 
org.apache.juneau.rest.RestContextBuilder#fileFinder(FileFinder)}
-*  {@link 
org.apache.juneau.rest.RestContext#createFileFinder(BeanFactory)}
+*  {@link 
org.apache.juneau.rest.RestContext#createFileFinder(Object,BeanFactory)}
 *  
 * 
 *
@@ -1096,7 +1096,7 @@ public class RestContext extends BeanContext {
 * 
 *
 * 
-* The file finder is instantiated via the {@link 

[juneau] branch master updated: REST refactoring.

2021-01-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 42843cd  REST refactoring.
42843cd is described below

commit 42843cd6c73558806fecddc9809f17bb4c627111
Author: JamesBognar 
AuthorDate: Mon Jan 11 18:36:19 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/cp/BeanFactory.java | 25 +--
 .../java/org/apache/juneau/rest/RestContext.java   | 83 ++
 2 files changed, 58 insertions(+), 50 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
index a1b20a0..572d4ef 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
@@ -35,7 +35,7 @@ public class BeanFactory {
 */
public static final class Null extends BeanFactory {}
 
-   private final Map,Object> beanMap = new ConcurrentHashMap<>();
+   private final Map,Supplier> beanMap = new 
ConcurrentHashMap<>();
private final BeanFactory parent;
private final Object outer;
 
@@ -67,9 +67,10 @@ public class BeanFactory {
 */
@SuppressWarnings("unchecked")
public  Optional getBean(Class c) {
-   T t = (T)beanMap.get(c);
-   if (t == null && parent != null)
+   Supplier o = beanMap.get(c);
+   if (o == null && parent != null)
return parent.getBean(c);
+   T t = (T)(o == null ? null : o.get());
return Optional.ofNullable(t);
}
 
@@ -82,8 +83,22 @@ public class BeanFactory {
 * @return This object (for method chaining).
 */
public  BeanFactory addBean(Class c, T t) {
-   if (t != null && ! c.isInstance(t))
-   throw new BasicRuntimeException("Object not of type 
{0}: {1}", c.getName(), t.getClass().getName());
+   if (t == null)
+   beanMap.remove(c);
+   else
+   beanMap.put(c, ()->t);
+   return this;
+   }
+
+   /**
+* Adds a bean supplier of the specified type to this factory.
+*
+* @param  The class to associate this bean with.
+* @param c The class to associate this bean with.
+* @param t The bean supplier.
+* @return This object (for method chaining).
+*/
+   public  BeanFactory addBean(Class c, Supplier t) {
if (t == null)
beanMap.remove(c);
else
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 1280168..449b06b 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
@@ -29,6 +29,7 @@ import java.nio.charset.*;
 import java.time.*;
 import java.util.*;
 import java.util.concurrent.*;
+import java.util.function.*;
 import java.util.logging.*;
 import java.util.stream.*;
 
@@ -3158,7 +3159,8 @@ public class RestContext extends BeanContext {
// Instance

//---
 
-   private final Object resource;
+   private final Supplier resource;
+
final RestContextBuilder builder;
private final boolean
allowBodyParam,
@@ -3274,7 +3276,10 @@ public class RestContext extends BeanContext {
 
try {
this.builder = builder;
-   resource = builder.resource;
+
+   this.resource = builder.resource instanceof Supplier ? 
(Supplier)builder.resource : ()->builder.resource;
+   Object resource = getResource();
+
parentContext = builder.parentContext;
ClassInfo rci = ClassInfo.of(resource).resolved();
 
@@ -3681,6 +3686,7 @@ public class RestContext extends BeanContext {
 */
protected FileFinder createFileFinder(BeanFactory beanFactory) throws 
Exception {
FileFinder x = null;
+   Object resource = getResource();
if (resource instanceof FileFinder)
x = (FileFinder)resource;
if (x == null)
@@ -3726,6 +3732,7 @@ public class RestContext extends BeanContext {
 */
protected RestInfoProvider createInfoProvider(BeanFactory beanFactory) 
throws Exception {

[juneau] branch master updated: REST refactoring.

2021-01-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 5120823  REST refactoring.
5120823 is described below

commit 5120823f2b47149676ac3be387b899106c072c3a
Author: JamesBognar 
AuthorDate: Mon Jan 11 17:33:27 2021 -0500

REST refactoring.
---
 .../src/main/java/org/apache/juneau/rest/RestObject.java | 5 -
 .../src/main/java/org/apache/juneau/rest/RestServlet.java| 5 -
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestObject.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestObject.java
index 42c2aa8..8e1764b 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestObject.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestObject.java
@@ -39,7 +39,6 @@ import org.apache.juneau.rest.annotation.*;
  */
 public abstract class RestObject {
 
-   private Logger logger = Logger.getLogger(getClass().getName());
private AtomicReference context = new AtomicReference<>();
 

//-
@@ -139,6 +138,10 @@ public abstract class RestObject {
 * @param msg The message to log.
 */
protected void doLog(Level level, Throwable cause, Supplier 
msg) {
+   RestContext c = context.get();
+   Logger logger = c == null ? null : c.getLogger();
+   if (logger == null)
+   logger = Logger.getLogger(getClass().getName());
logger.log(level, cause, msg);
}
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
index 06d0e13..99d9dd8 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
@@ -46,7 +46,6 @@ public abstract class RestServlet extends HttpServlet {
 
private AtomicReference context = new AtomicReference<>();
private AtomicReference initException = new 
AtomicReference<>();
-   private Logger logger = Logger.getLogger(getClass().getName());
 
@Override /* Servlet */
public synchronized void init(ServletConfig servletConfig) throws 
ServletException {
@@ -249,6 +248,10 @@ public abstract class RestServlet extends HttpServlet {
 * @param msg The message to log.
 */
protected void doLog(Level level, Throwable cause, Supplier 
msg) {
+   RestContext c = context.get();
+   Logger logger = c == null ? null : c.getLogger();
+   if (logger == null)
+   logger = Logger.getLogger(getClass().getName());
logger.log(level, cause, msg);
}
 



[juneau] branch master updated: REST refactoring.

2021-01-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 4acaf26  REST refactoring.
4acaf26 is described below

commit 4acaf26c5cd59e7936d3b928bd10c5b41ec33aef
Author: JamesBognar 
AuthorDate: Mon Jan 11 16:41:43 2021 -0500

REST refactoring.
---
 .../src/main/java/org/apache/juneau/rest/RestContext.java |  5 +
 .../java/org/apache/juneau/rest/RestContextBuilder.java   | 15 +--
 .../src/main/java/org/apache/juneau/rest/RestServlet.java |  4 +---
 3 files changed, 7 insertions(+), 17 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 6e3169e..aa8971c 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
@@ -3246,7 +3246,7 @@ public class RestContext extends BeanContext {
 
/**
 * Constructor.
-* 
+*
 * @param parentContext The parent context, or null if there 
is no parent context.
 * @param servletConfig The servlet config passed into the servlet by 
the servlet container.
 * @param resourceClass The class annotated with @Rest.
@@ -3273,8 +3273,6 @@ public class RestContext extends BeanContext {
HttpException _initException = null;
 
try {
-   ServletContext servletContext = builder.servletContext;
-
this.builder = builder;
resource = builder.resource;
parentContext = builder.parentContext;
@@ -3636,7 +3634,6 @@ public class RestContext extends BeanContext {
childBuilder.init(r);
if (r instanceof RestServlet)

((RestServlet)r).innerInit(childBuilder);
-   childBuilder.servletContext(servletContext);
RestContext rc2 = childBuilder.build();
if (r instanceof RestServlet)
((RestServlet)r).setContext(rc2);
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 824af05..567b087 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
@@ -140,6 +140,7 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
beanFactory = createBeanFactory(parentContext, 
resource);
beanFactory.addBean(RestContextBuilder.class, this);
beanFactory.addBean(ServletConfig.class, 
servletConfig.orElse(this));
+   beanFactory.addBean(ServletContext.class, 
servletConfig.orElse(this).getServletContext());
 
varResolverBuilder = new VarResolverBuilder()
.defaultVars()
@@ -279,12 +280,6 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
return this;
}
 
-   RestContextBuilder servletContext(ServletContext servletContext) {
-   this.servletContext = servletContext;
-   beanFactory.addBean(ServletContext.class, servletContext);
-   return this;
-   }
-
/**
 * Adds the specified {@link Var} classes to this config.
 *
@@ -2559,21 +2554,21 @@ public class RestContextBuilder extends 
BeanContextBuilder implements ServletCon
 
@Override /* ServletConfig */
public String getInitParameter(String name) {
-   return inner.getInitParameter(name);
+   return inner == null ? null : inner.getInitParameter(name);
}
 
@Override /* ServletConfig */
public Enumeration getInitParameterNames() {
-   return inner.getInitParameterNames();
+   return inner == null ? new Vector().elements() : 
inner.getInitParameterNames();
}
 
@Override /* ServletConfig */
public ServletContext getServletContext() {
-   return inner.getServletContext();
+   return inner == null ? null : inner.getServletContext();
}
 
@Override /* ServletConfig */
public String getServletName() {
-   return inner.getServletName();
+   return inner == null ? null : inner.getServletName();
}
 }
diff --git 

[juneau] branch master updated: REST refactoring.

2021-01-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 41318a0  REST refactoring.
41318a0 is described below

commit 41318a0c84909037a9ba79f9e44b6da428e4ecf8
Author: JamesBognar 
AuthorDate: Mon Jan 11 12:39:42 2021 -0500

REST refactoring.
---
 .../src/main/java/org/apache/juneau/rest/RestContext.java  | 14 +++---
 .../java/org/apache/juneau/rest/RestContextBuilder.java|  2 +-
 .../src/main/java/org/apache/juneau/rest/RestServlet.java  |  3 +--
 3 files changed, 9 insertions(+), 10 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 42aac79..6e3169e 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
@@ -3241,20 +3241,20 @@ public class RestContext extends BeanContext {
 * @throws ServletException Something bad happened.
 */
public static RestContextBuilder create(Object resource) throws 
ServletException {
-   return new RestContextBuilder(resource.getClass(), 
Optional.empty(), Optional.empty(), Optional.of(resource)).init(resource);
+   return new RestContextBuilder(Optional.empty(), 
Optional.empty(), resource.getClass(), Optional.of(resource)).init(resource);
}
 
/**
 * Constructor.
-*
+* 
+* @param parentContext The parent context, or null if there 
is no parent context.
 * @param servletConfig The servlet config passed into the servlet by 
the servlet container.
 * @param resourceClass The class annotated with @Rest.
-* @param parentContext The parent context, or null if there 
is no parent context.
 * @return A new builder object.
 * @throws ServletException Something bad happened.
 */
-   static RestContextBuilder create(ServletConfig servletConfig, Class 
resourceClass, RestContext parentContext) throws ServletException {
-   return new RestContextBuilder(resourceClass, 
Optional.ofNullable(servletConfig), Optional.ofNullable(parentContext), 
Optional.empty());
+   static RestContextBuilder create(RestContext parentContext, 
ServletConfig servletConfig, Class resourceClass, Object resource) throws 
ServletException {
+   return new 
RestContextBuilder(Optional.ofNullable(parentContext), 
Optional.ofNullable(servletConfig), resourceClass, 
Optional.ofNullable(resource));
}
 
/**
@@ -3626,11 +3626,11 @@ public class RestContext extends BeanContext {
 
if (o instanceof Class) {
Class oc = (Class)o;
-   childBuilder = 
RestContext.create(builder.inner, oc, this);
+   childBuilder = RestContext.create(this, 
builder.inner, oc, null);
r = new BeanFactory(beanFactory, 
resource).addBean(RestContextBuilder.class, childBuilder).createBean(oc);
} else {
r = o;
-   childBuilder = 
RestContext.create(builder.inner, o.getClass(), this);
+   childBuilder = RestContext.create(this, 
builder.inner, o.getClass(), o);
}
 
childBuilder.init(r);
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 4fbe9a0..824af05 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
@@ -109,7 +109,7 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
Config config;
VarResolverBuilder varResolverBuilder;
 
-   RestContextBuilder(Class resourceClass, Optional 
servletConfig, Optional parentContext, Optional resource) 
throws ServletException {
+   RestContextBuilder(Optional parentContext, 
Optional servletConfig, Class resourceClass, Optional 
resource) throws ServletException {
try {
 
this.resourceClass = resourceClass;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
index 470d2c3..9b7d352 100644
--- 

[juneau] branch master updated: REST refactoring.

2021-01-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 fa6edbf  REST refactoring.
fa6edbf is described below

commit fa6edbfc4add296c07f056b61878d064358ee6ea
Author: JamesBognar 
AuthorDate: Mon Jan 11 12:22:52 2021 -0500

REST refactoring.
---
 .../src/main/java/org/apache/juneau/rest/RestServlet.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
index 0b8df53..470d2c3 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
@@ -53,9 +53,9 @@ public abstract class RestServlet extends HttpServlet {
try {
if (context.get() != null)
return;
+   super.init(servletConfig);
RestContextBuilder builder = 
RestContext.create(servletConfig, this.getClass(), null);
builder.init(this);
-   super.init(servletConfig);
builder.servletContext(this.getServletContext());
context.set(builder.build());
context.get().postInit();



[juneau] branch master updated: REST refactoring.

2021-01-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 9f9ec0b  REST refactoring.
9f9ec0b is described below

commit 9f9ec0b9ab0c3cb8a1b64f9dec32751759b21fc6
Author: JamesBognar 
AuthorDate: Mon Jan 11 12:05:51 2021 -0500

REST refactoring.
---
 .../src/main/java/org/apache/juneau/rest/RestServlet.java | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
index 44e9df3..0e0d281 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
@@ -44,7 +44,6 @@ public abstract class RestServlet extends HttpServlet {
 
private static final long serialVersionUID = 1L;
 
-   private RestContextBuilder builder;
private AtomicReference context = new AtomicReference<>();
private AtomicReference initException = new 
AtomicReference<>();
private Logger logger = Logger.getLogger(getClass().getName());
@@ -54,7 +53,7 @@ public abstract class RestServlet extends HttpServlet {
try {
if (context.get() != null)
return;
-   builder = RestContext.create(servletConfig, 
this.getClass(), null);
+   RestContextBuilder builder = 
RestContext.create(servletConfig, this.getClass(), null);
builder.init(this);
super.init(servletConfig);
builder.servletContext(this.getServletContext());
@@ -95,7 +94,6 @@ public abstract class RestServlet extends HttpServlet {
 * @throws ServletException If error occurred during post-initialiation.
 */
public synchronized void setContext(RestContext context) throws 
ServletException {
-   this.builder = context.builder;
this.context.set(context);
context.postInit();
}



[juneau] branch master updated: REST refactoring.

2021-01-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 568c6ba  REST refactoring.
568c6ba is described below

commit 568c6ba85f682893b5927f41bc0371bb6ddb18d2
Author: JamesBognar 
AuthorDate: Mon Jan 11 11:18:47 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/rest/RestServlet.java   | 44 ++
 1 file changed, 20 insertions(+), 24 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
index 2dde88b..13b6e33 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestServlet.java
@@ -20,6 +20,7 @@ import static org.apache.juneau.rest.annotation.HookEvent.*;
 
 import java.io.*;
 import java.text.*;
+import java.util.concurrent.atomic.*;
 import java.util.function.*;
 import java.util.logging.*;
 
@@ -44,28 +45,27 @@ public abstract class RestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
 
private RestContextBuilder builder;
-   private volatile RestContext context;
-   private volatile Exception initException;
-   private boolean isInitialized = false;  // Should not be volatile.
+   private AtomicReference context = new AtomicReference<>();
+   private AtomicReference initException = new 
AtomicReference<>();
private Logger logger = Logger.getLogger(getClass().getName());
 
@Override /* Servlet */
public synchronized void init(ServletConfig servletConfig) throws 
ServletException {
try {
-   if (context != null)
+   if (context.get() != null)
return;
builder = RestContext.create(servletConfig, 
this.getClass(), null);
builder.init(this);
super.init(servletConfig);
builder.servletContext(this.getServletContext());
setContext(builder.build());
-   context.postInitChildFirst();
+   context.get().postInitChildFirst();
} catch (ServletException e) {
-   initException = e;
+   initException.set(e);
log(SEVERE, e, "Servlet init error on class ''{0}''", 
getClass().getName());
throw e;
} catch (Throwable e) {
-   initException = toHttpException(e, 
InternalServerError.class);
+   initException.set(toHttpException(e, 
InternalServerError.class));
log(SEVERE, e, "Servlet init error on class ''{0}''", 
getClass().getName());
}
}
@@ -96,8 +96,7 @@ public abstract class RestServlet extends HttpServlet {
 */
public synchronized void setContext(RestContext context) throws 
ServletException {
this.builder = context.builder;
-   this.context = context;
-   isInitialized = true;
+   this.context.set(context);
context.postInit();
}
 
@@ -107,7 +106,7 @@ public abstract class RestServlet extends HttpServlet {
 * @return true if this servlet has been initialized and 
{@link #getContext()} returns a value.
 */
public synchronized boolean isInitialized() {
-   return isInitialized;
+   return context.get() != null;
}
 
/**
@@ -116,6 +115,7 @@ public abstract class RestServlet extends HttpServlet {
 * @return The path defined on this servlet, or an empty string if not 
specified.
 */
public synchronized String getPath() {
+   RestContext context = this.context.get();
if (context != null)
return context.getPath();
ClassInfo ci = ClassInfo.of(getClass());
@@ -146,16 +146,11 @@ public abstract class RestServlet extends HttpServlet {
@Override /* Servlet */
public void service(HttpServletRequest r1, HttpServletResponse r2) 
throws ServletException, InternalServerError, IOException {
try {
-   // To avoid checking the volatile field context on 
every call, use the non-volatile isInitialized field as a first-check check.
-   if (! isInitialized) {
-   if (initException != null)
-   throw initException;
-   if (context == null)
-   throw new 

[juneau] branch master updated: REST refactoring.

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

commit 8b65e13fed87f222c2970bedca326677e9dd2c58
Author: JamesBognar 
AuthorDate: Mon Jan 11 09:15:19 2021 -0500

REST refactoring.
---
 .../rest/springboot/BasicSpringRestServlet.java|   2 +-
 .../org/apache/juneau/rest/BasicRestObject.java|   2 +-
 .../org/apache/juneau/rest/BasicRestServlet.java   |   2 +-
 .../java/org/apache/juneau/rest/RestContext.java   |  10 --
 .../java/org/apache/juneau/rest/RestObject.java|  93 +---
 .../java/org/apache/juneau/rest/RestServlet.java   | 165 +
 6 files changed, 41 insertions(+), 233 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServlet.java
 
b/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServlet.java
index 587538a..d7dbc0d 100644
--- 
a/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServlet.java
+++ 
b/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServlet.java
@@ -165,7 +165,7 @@ public abstract class BasicSpringRestServlet extends 
SpringRestServlet implement
@Override /* BasicRestConfig */
public Swagger getApi(RestRequest req) {
try {
-   return getSwagger(req);
+   return req.getSwagger();
} catch (Exception e) {
throw new InternalServerError(e);
}
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestObject.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestObject.java
index d94bb90..027683d 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestObject.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestObject.java
@@ -44,7 +44,7 @@ public abstract class BasicRestObject extends RestObject 
implements BasicUnivers
@Override /* BasicRestConfig */
public Swagger getApi(RestRequest req) {
try {
-   return getSwagger(req);
+   return req.getSwagger();
} catch (Exception e) {
throw new InternalServerError(e);
}
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestServlet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestServlet.java
index 70c5623..b837269 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestServlet.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestServlet.java
@@ -164,7 +164,7 @@ public abstract class BasicRestServlet extends RestServlet 
implements BasicUnive
@Override /* BasicRestConfig */
public Swagger getApi(RestRequest req) {
try {
-   return getSwagger(req);
+   return req.getSwagger();
} catch (Exception e) {
throw new InternalServerError(e);
}
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 5932161..42aac79 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
@@ -1077,8 +1077,6 @@ public class RestContext extends BeanContext {
 *  {@link 
org.apache.juneau.rest.RestContextBuilder#fileFinder(Class)}
 *  {@link 
org.apache.juneau.rest.RestContextBuilder#fileFinder(FileFinder)}
 *  {@link 
org.apache.juneau.rest.RestContext#createFileFinder(BeanFactory)}
-*  {@link 
org.apache.juneau.rest.BasicRestObject#createFileFinder()}
-*  {@link 
org.apache.juneau.rest.BasicRestServlet#createFileFinder()}
 *  
 * 
 *
@@ -1103,9 +1101,6 @@ public class RestContext extends BeanContext {
 *  Returns the resource class itself if it's an instance of 
{@link FileFinder}.
 *  Looks for {@link #REST_fileFinder} setting.
 *  Looks for a public createFileFinder() method on the 
resource class with an optional {@link RestContext} argument.
-*  Note that the {@link 

[juneau] branch master updated: REST refactoring.

2021-01-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 cb1b14c  REST refactoring.
cb1b14c is described below

commit cb1b14c13136caf8800a0463bbf93df012202220
Author: JamesBognar 
AuthorDate: Sun Jan 10 13:55:32 2021 -0500

REST refactoring.
---
 .../java/org/apache/juneau/cp/BeanFactory.java |  18 ++-
 .../java/org/apache/juneau/rest/RestContext.java   |   9 +-
 .../org/apache/juneau/rest/RestContextBuilder.java | 174 +
 .../org/apache/juneau/rest/RestParamDefaults.java  |  19 ++-
 4 files changed, 150 insertions(+), 70 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
index 7583549..a1b20a0 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanFactory.java
@@ -82,6 +82,8 @@ public class BeanFactory {
 * @return This object (for method chaining).
 */
public  BeanFactory addBean(Class c, T t) {
+   if (t != null && ! c.isInstance(t))
+   throw new BasicRuntimeException("Object not of type 
{0}: {1}", c.getName(), t.getClass().getName());
if (t == null)
beanMap.remove(c);
else
@@ -171,7 +173,13 @@ public class BeanFactory {
return null;
}
 
-   private List getMissingParamTypes(List 
paramTypes) {
+   /**
+* Given the list of param types, returns a list of types that are 
missing from this factory.
+*
+* @param paramTypes The param types to chec.
+* @return A list of types that are missing from this factory.
+*/
+   public List getMissingParamTypes(List paramTypes) 
{
List l = AList.of();
for (int i = 0; i < paramTypes.size(); i++) {
ClassInfo pt = paramTypes.get(i);
@@ -183,7 +191,13 @@ public class BeanFactory {
return l;
}
 
-   private Object[] getParams(List paramTypes) {
+   /**
+* Returns the corresponding beans in this factory for the specified 
param types.
+*
+* @param paramTypes The param types to get from this factory.
+* @return The corresponding beans in this factory for the specified 
param types.
+*/
+   public Object[] getParams(List paramTypes) {
Object[] o = new Object[paramTypes.size()];
for (int i = 0; i < paramTypes.size(); i++) {
ClassInfo pt = paramTypes.get(i);
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 acadeba..5932161 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
@@ -3208,7 +3208,8 @@ public class RestContext extends BeanContext {
private final RestInfoProvider infoProvider;
private final HttpException initException;
private final RestContext parentContext;
-   private final BeanFactory rootBeanFactory, beanFactory;
+   final BeanFactory rootBeanFactory;
+   private final BeanFactory beanFactory;
private final UriResolution uriResolution;
private final UriRelativity uriRelativity;
private final ConcurrentHashMap methodExecStats 
= new ConcurrentHashMap<>();
@@ -3250,7 +3251,7 @@ public class RestContext extends BeanContext {
 * @throws ServletException Something bad happened.
 */
public static RestContextBuilder create(Object resource) throws 
ServletException {
-   return new RestContextBuilder(null, resource.getClass(), 
null).init(resource);
+   return new RestContextBuilder(resource.getClass(), 
Optional.empty(), Optional.empty(), Optional.of(resource)).init(resource);
}
 
/**
@@ -3263,7 +3264,7 @@ public class RestContext extends BeanContext {
 * @throws ServletException Something bad happened.
 */
static RestContextBuilder create(ServletConfig servletConfig, Class 
resourceClass, RestContext parentContext) throws ServletException {
-   return new RestContextBuilder(servletConfig, resourceClass, 
parentContext);
+   return new RestContextBuilder(resourceClass, 
Optional.ofNullable(servletConfig), Optional.ofNullable(parentContext), 
Optional.empty());
}
 
/**
@@ -5047,6 +5048,8 @@ public class RestContext extends BeanContext {
   

[juneau] branch master updated: REST refactoring.

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

commit 6af640ceba232bdfb87b2728694021b5b6632e18
Author: JamesBognar 
AuthorDate: Sun Jan 10 12:27:15 2021 -0500

REST refactoring.
---
 .../org/apache/juneau/BasicResourceResolver.java   |  31 
 .../src/main/java/org/apache/juneau/Context.java   |  78 --
 .../org/apache/juneau/FuzzyResourceResolver.java   |  31 
 .../main/java/org/apache/juneau/PropertyStore.java | 157 -
 .../java/org/apache/juneau/ResourceResolver.java   |  47 --
 .../rest/springboot/JuneauRestInitializer.java |  54 ---
 .../rest/springboot/JuneauRestPostProcessor.java   |  94 
 .../springboot/SpringRestResourceResolver.java |  75 --
 .../juneau/rest/BasicRestResourceResolver.java |  46 --
 .../apache/juneau/rest/RestResourceResolver.java   |  74 --
 10 files changed, 687 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicResourceResolver.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicResourceResolver.java
deleted file mode 100644
index 65be819..000
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicResourceResolver.java
+++ /dev/null
@@ -1,31 +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.ClassUtils.*;
-
-/**
- * Basic implementation of a resource resolver.
- */
-@Deprecated
-public class BasicResourceResolver implements ResourceResolver {
-
-   @Override /* ResourceResolver */
-   public  T resolve(Object parent, Class c, Object...args) {
-   try {
-   return castOrCreateFromOuter(parent, c, c, false, args);
-   } catch (Exception e) {
-   throw new BeanRuntimeException(e, c, "Could not 
instantiate resource class");
-   }
-   }
-}
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 f363e0e..e5fcb75 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
@@ -716,47 +716,6 @@ public abstract class Context {
 * @param def
 *  The default value if the property doesn't exist.
 *  Can either be an instance of T, or a 
Class? extends T.
-* @param resolver
-*  The resolver to use for instantiating objects.
-* @param args
-*  Arguments to pass to the constructor.
-*  Constructors matching the arguments are always used before 
no-arg constructors.
-* @return A new property instance.
-*/
-   @Deprecated
-   public  T getInstanceProperty(String key, Class type, Object def, 
ResourceResolver resolver, Object...args) {
-   return propertyStore.getInstanceProperty(key, type, def, 
resolver, args);
-   }
-
-   /**
-* Returns an instance of the specified class, string, or object 
property.
-*
-* @param key The property name.
-* @param outer The 

[juneau] branch master updated: REST refactoring.

2021-01-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 4ba1b00  REST refactoring.
4ba1b00 is described below

commit 4ba1b00b4d3934dfc97c1fd2dc51584171c98c15
Author: JamesBognar 
AuthorDate: Fri Jan 8 14:56:59 2021 -0500

REST refactoring.
---
 .../juneau/http/SerializedHttpEntity_Test.java |2 +-
 .../org/apache/juneau/http/remote/Remote_Test.java |4 +-
 .../java/org/apache/juneau/cp/BeanFactory.java |  143 +++
 .../juneau/examples/rest/HelloWorldResource.java   |3 +-
 .../juneau/examples/rest/RequestEchoResource.java  |2 +-
 .../client/BasicHttpRequestRetryHandler_Test.java  |2 +-
 .../juneau/rest/client/RestCallException_Test.java |2 +-
 .../rest/client/RestClient_BasicCalls_Test.java|2 +-
 .../juneau/rest/client/RestClient_Body_Test.java   |2 +-
 .../client/RestClient_Config_BeanContext_Test.java |4 +-
 .../client/RestClient_Config_Context_Test.java |2 +-
 .../client/RestClient_Config_OpenApi_Test.java |2 +-
 .../rest/client/RestClient_Config_Parser_Test.java |2 +-
 .../client/RestClient_Config_RestClient_Test.java  |4 +-
 .../client/RestClient_Config_Serializer_Test.java  |2 +-
 .../rest/client/RestClient_FormData_Test.java  |2 +-
 .../rest/client/RestClient_Headers_Test.java   |2 +-
 .../rest/client/RestClient_Logging_Test.java   |2 +-
 .../rest/client/RestClient_Marshalls_Test.java |2 +-
 .../juneau/rest/client/RestClient_Paths_Test.java  |2 +-
 .../juneau/rest/client/RestClient_Query_Test.java  |2 +-
 .../rest/client/RestClient_Response_Body_Test.java |2 +-
 .../client/RestClient_Response_Headers_Test.java   |2 +-
 .../rest/client/RestClient_Response_Test.java  |6 +-
 .../apache/juneau/rest/client/RestClient_Test.java |4 +-
 .../rest/springboot/BasicSpringRestServlet.java}   |   70 +-
 .../springboot/BasicSpringRestServletGroup.java}   |   20 +-
 .../juneau/rest/springboot/SpringBeanFactory.java} |   91 +-
 .../juneau/rest/springboot/SpringRestServlet.java} |   78 +-
 .../juneau/rest/annotation/Rest_Debug_Test.java|2 +-
 .../org/apache/juneau/rest/BasicRestObject.java|   83 ++
 ...sicRestGroup.java => BasicRestObjectGroup.java} |2 +-
 .../org/apache/juneau/rest/BasicRestServlet.java   |   62 --
 .../java/org/apache/juneau/rest/RestContext.java   |   22 +-
 .../org/apache/juneau/rest/RestContextBuilder.java |4 +-
 .../rest/{BasicRest.java => RestObject.java}   | 1096 ++--
 .../java/org/apache/juneau/rest/RestServlet.java   |   64 +-
 .../org/apache/juneau/rest/annotation/Rest.java|   14 +-
 38 files changed, 951 insertions(+), 861 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/SerializedHttpEntity_Test.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/SerializedHttpEntity_Test.java
index b8bc079..935f5ae 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/SerializedHttpEntity_Test.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/SerializedHttpEntity_Test.java
@@ -38,7 +38,7 @@ import org.junit.*;
 public class SerializedHttpEntity_Test {
 
@Rest
-   public static class A extends BasicRest {
+   public static class A extends BasicRestObject {
@RestMethod
public String[] 
postCheckHeader(org.apache.juneau.rest.RestRequest req) {
return req.getHeaders().get(req.getHeader("Check"));
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/remote/Remote_Test.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/remote/Remote_Test.java
index 4c51368..7f04a11 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/remote/Remote_Test.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/http/remote/Remote_Test.java
@@ -518,7 +518,7 @@ public class Remote_Test {

//-
 
@Rest
-   public static class F extends BasicRest {
+   public static class F extends BasicRestObject {
@RestMethod
public String[] getHeaders(org.apache.juneau.rest.RestRequest 
req) {
return req.getHeaders().get(req.getHeader("Check"));
@@ -566,7 +566,7 @@ public class Remote_Test {

//-
 
@Rest
-   public static class G extends BasicRest {}
+   public static class G extends BasicRestObject {}
 
@Remote
public static interface G1 {
diff 

[juneau] branch master updated: REST refactoring.

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

commit 2cef008ee03059d002f13151f4c448fb0819c2be
Author: JamesBognar 
AuthorDate: Thu Jan 7 18:18:07 2021 -0500

REST refactoring.
---
 .../juneau/config/store/ConfigFileStore.java   |  4 +-
 .../org/apache/juneau/FuzzyResourceResolver.java   |  2 +-
 .../apache/juneau/internal/ReaderInputStream.java  |  9 +--
 .../org/apache/juneau/internal/StringUtils.java|  6 +-
 .../microservice/resources/DirectoryResource.java  | 20 +++--
 .../microservice/resources/LogsResource.java   | 30 +++
 .../org/apache/juneau/rest/jaxrs/BaseProvider.java | 32 +---
 .../apache/juneau/rest/jaxrs/JuneauProvider.java   | 20 -
 .../apache/juneau/rest/annotation/Body_Test.java   | 17 ++--
 .../rest/annotation/RestAnnotation_Test.java   | 10 ---
 .../rest/annotation/RestMethodAnnotation_Test.java | 10 ---
 .../juneau/rest/BasicRestResourceResolver.java |  2 +-
 .../java/org/apache/juneau/rest/RestContext.java   | 75 -
 .../org/apache/juneau/rest/RestContextBuilder.java | 93 +-
 .../apache/juneau/rest/RestContextProperties.java  | 36 -
 .../java/org/apache/juneau/rest/RestServlet.java   | 11 ---
 .../apache/juneau/rest/annotation/Property.java| 49 
 .../org/apache/juneau/rest/annotation/Rest.java| 38 -
 .../juneau/rest/annotation/RestAnnotation.java | 48 +--
 .../apache/juneau/rest/annotation/RestMethod.java  | 17 
 .../rest/annotation/RestMethodAnnotation.java  | 50 +---
 pom.xml| 10 +--
 22 files changed, 47 insertions(+), 542 deletions(-)

diff --git 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
index 2fb5bfe..3ff3148 100644
--- 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
+++ 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
@@ -319,8 +319,8 @@ public class ConfigFileStore extends ConfigStore {
ByteBuffer buf = 
ByteBuffer.allocate(1024);
StringBuilder sb = new 
StringBuilder();
while (fc.read(buf) != 
-1) {
-   
sb.append(charset.decode((ByteBuffer)(buf.flip(;
-   buf.clear();
+   
sb.append(charset.decode((ByteBuffer)((Buffer)buf).flip()));
+   
((Buffer)buf).clear();
}
currentContents = 
sb.toString();
}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/FuzzyResourceResolver.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/FuzzyResourceResolver.java
index 8b12e97..cda1770 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/FuzzyResourceResolver.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/FuzzyResourceResolver.java
@@ -24,7 +24,7 @@ public class FuzzyResourceResolver implements 
ResourceResolver {
try {
return castOrCreateFromOuter(parent, c, c, true, args);
} catch (Exception e) {
-   throw new BeanRuntimeException(e, c, "Could not 
instantiate resource class ''{0}''");
+   throw new BeanRuntimeException(e, c, "Could not 
instantiate resource class");
}
}
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReaderInputStream.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReaderInputStream.java
index 7009016..8d5c4af 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReaderInputStream.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReaderInputStream.java
@@ -120,7 +120,6 @@ public class ReaderInputStream extends InputStream {
 ((Buffer)this.encoderIn).flip(); // Fixes Java 11 issue.
 this.encoderOut = ByteBuffer.allocate(128);
((Buffer)this.encoderOut).flip(); // Fixes Java 11 issue.
-this.encoderOut.flip();
 }
 
 /**
@@ -180,7 +179,7 @@ public class ReaderInputStream 

  1   2   >