[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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