[juneau] branch master updated: RestClient API improvements.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 7f984e1 RestClient API improvements. 7f984e1 is described below commit 7f984e1522bde7a4ef2274fe4140f66f47b50b67 Author: JamesBognar AuthorDate: Sat Jun 12 10:47:07 2021 -0400 RestClient API improvements. --- .../src/main/java/org/apache/juneau/rest/client/RestClient.java | 8 1 file changed, 8 deletions(-) diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java index ab8bf3e..01f369b 100644 --- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java +++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java @@ -3654,14 +3654,6 @@ public class RestClient extends BeanContext implements HttpClient, Closeable, Re // Other methods. //- - HttpPartSerializerSession getPartSerializerSession() { - return partSerializer.createPartSession(null); - } - - HttpPartParserSession getPartParserSession() { - return partParser.createPartSession(null); - } - private Pattern absUrlPattern = Pattern.compile("^\\w+\\:\\/\\/.*"); URI toURI(Object x, String rootUri) throws RestCallException {
[juneau] branch master updated: RestClient API improvements.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new bd0b99d RestClient API improvements. bd0b99d is described below commit bd0b99dd8d3367be58934c78103468ac986f39c5 Author: JamesBognar AuthorDate: Wed Jun 9 16:07:06 2021 -0400 RestClient API improvements. --- .../java/org/apache/juneau/http/remote/Remote.java | 10 ++-- .../11.RestcProxies/01.RestcRemote.html| 8 +-- .../org/apache/juneau/rest/client/RestClient.java | 63 -- .../org/apache/juneau/rest/client/RestRequest.java | 54 +-- .../apache/juneau/rest/ClientVersionMatcher.java | 4 +- .../java/org/apache/juneau/rest/RestContext.java | 4 +- .../org/apache/juneau/rest/RestContextBuilder.java | 2 +- .../apache/juneau/rest/RestOperationContext.java | 12 ++--- .../apache/juneau/rest/annotation/RestDelete.java | 12 ++--- .../org/apache/juneau/rest/annotation/RestGet.java | 12 ++--- .../org/apache/juneau/rest/annotation/RestOp.java | 10 ++-- .../apache/juneau/rest/annotation/RestPost.java| 10 ++-- .../org/apache/juneau/rest/annotation/RestPut.java | 10 ++-- .../rest/annotation/RestOp_ClientVersion_Test.java | 2 +- .../rest/client/RestClient_Headers_Test.java | 4 +- 15 files changed, 77 insertions(+), 140 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/Remote.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/Remote.java index 68fde15..cceae7b 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/Remote.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/Remote.java @@ -82,7 +82,7 @@ public @interface Remote { * Specifies the client version of this interface. * * -* Used to populate the "X-Client-Version" header that identifies what version of client this is +* Used to populate the "Client-Version" header that identifies what version of client this is * so that the server side can handle older versions accordingly. * * @@ -91,16 +91,16 @@ public @interface Remote { * * The server side then uses an OSGi-version matching pattern to identify which methods to call: * -* // Call this method if X-Client-Version is at least 2.0. +* // Call this method if Client-Version is at least 2.0. * // Note that this also matches 2.0.1. * @RestGet(path="/foobar", clientVersion="2.0") * public Object method1() {...} * -* // Call this method if X-Client-Version is at least 1.1, but less than 2.0. +* // Call this method if Client-Version is at least 1.1, but less than 2.0. * @RestGet(path="/foobar", clientVersion="[1.1,2.0)") * public Object method2() {...} * -* // Call this method if X-Client-Version is less than 1.1. +* // Call this method if Client-Version is less than 1.1. * @RestGet(path="/foobar", clientVersion="[0,1.1)") * public Object method3() {...} * @@ -117,7 +117,7 @@ public @interface Remote { * Specifies the client version header name. * * -* The default value is "X-Client-Version". +* The default value is "Client-Version". * * * diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/01.RestcRemote.html b/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/01.RestcRemote.html index 41f4efa..2a04aed 100644 --- a/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/01.RestcRemote.html +++ b/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/01.RestcRemote.html @@ -148,7 +148,7 @@ specific language governing permissions and limitations under the License. @Remote( path="/petstore", - version="1.2.3" // Adds "X-Client-Version: 1.2.3" header to all requests. + version="1.2.3" // Adds "Client-Version: 1.2.3" header to all requests. ) public interface PetStore {...} @@ -157,16 +157,16 @@ specific language governing permissions and limitations under the License. This can be used in conjunction with the server-side client-versioning support. - // Call this method if X-Client-Version is at least 2.0. + // Call this method if Client-Version is at least 2.0. // Note that this also matches 2.0.1. @RestGet(clientVersion="2.0")
[juneau] branch master updated: RestClient API improvements.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 5dac8dd RestClient API improvements. 5dac8dd is described below commit 5dac8dd0b972224997796d9557708660009b5f1c Author: JamesBognar AuthorDate: Wed Jun 9 10:09:16 2021 -0400 RestClient API improvements. --- .../juneau/rest/client/RestClientBuilder.java | 67 -- .../org/apache/juneau/rest/client/RestRequest.java | 146 +++-- .../juneau/rest/mock/MockRestClientBuilder.java| 4 +- .../org/apache/juneau/rest/RestOp_Params_Test.java | 16 ++- .../rest/client/RestClient_Headers_Test.java | 27 ++-- 5 files changed, 124 insertions(+), 136 deletions(-) diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java index a3cbfa0..1dd1867 100644 --- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java +++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java @@ -157,10 +157,10 @@ public class RestClientBuilder extends BeanContextBuilder { * * * Accept request header will be set to "application/json" unless overridden -* by {@link #header(String,Object)} or {@link #accept(String)}, or per-request via {@link RestRequest#header(String,Object)} or {@link RestRequest#accept(Object)}. +* by {@link #header(String,Object)} or {@link #accept(String)}, or per-request via {@link RestRequest#header(String,Object)} or {@link RestRequest#accept(String)}. * * Content-Type request header will be set to "application/json" unless overridden -* by {@link #header(String,Object)} or {@link #contentType(String)}, or per-request via {@link RestRequest#header(String,Object)} or {@link RestRequest#contentType(Object)}. +* by {@link #header(String,Object)} or {@link #contentType(String)}, or per-request via {@link RestRequest#header(String,Object)} or {@link RestRequest#contentType(String)}. * * Can be combined with other marshaller setters such as {@link #xml()} to provide support for multiple languages. * @@ -204,10 +204,10 @@ public class RestClientBuilder extends BeanContextBuilder { * * * Accept request header will be set to "application/json" unless overridden -* by {@link #header(String,Object)} or {@link #accept(String)}, or per-request via {@link RestRequest#header(String,Object)} or {@link RestRequest#accept(Object)}. +* by {@link #header(String,Object)} or {@link #accept(String)}, or per-request via {@link RestRequest#header(String,Object)} or {@link RestRequest#accept(String)}. * * Content-Type request header will be set to "application/json+simple" unless overridden -* by {@link #header(String,Object)} or {@link #contentType(String)}, or per-request via {@link RestRequest#header(String,Object)} or {@link RestRequest#contentType(Object)}. +* by {@link #header(String,Object)} or {@link #contentType(String)}, or per-request via {@link RestRequest#header(String,Object)} or {@link RestRequest#contentType(String)}. * * Can be combined with other marshaller setters such as {@link #xml()} to provide support for multiple languages. * @@ -247,10 +247,10 @@ public class RestClientBuilder extends BeanContextBuilder { * * * Accept request header will be set to "text/xml" unless overridden -* by {@link #header(String,Object)} or {@link #accept(String)}, or per-request via {@link RestRequest#header(String,Object)} or {@link RestRequest#accept(Object)}. +* by {@link #header(String,Object)} or {@link #accept(String)}, or per-request via {@link RestRequest#header(String,Object)} or {@link RestRequest#accept(String)}. * * Content-Type request header will be set to "text/xml" unless overridden -* by {@link #header(String,Object)} or {@link #contentType(String)}, or per-request via {@link RestRequest#header(String,Object)} or {@link RestRequest#contentType(Object)}. +* by {@link #header(String,Object)} or {@link #contentType(String)}, or per-request via {@link RestRequest#header(String,Object)} or {@link RestRequest#contentType(String)}. * * Can be combined with other ma
[juneau] branch master updated: RestClient API improvements.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 3fc6185 RestClient API improvements. 3fc6185 is described below commit 3fc61859869cf4116e8944007270b9cf555e4f54 Author: JamesBognar AuthorDate: Mon Jun 7 12:36:53 2021 -0400 RestClient API improvements. --- .../src/main/java/org/apache/juneau/rest/client/RestRequest.java | 9 + .../main/java/org/apache/juneau/rest/mock/MockRestClient.java| 4 ++-- .../java/org/apache/juneau/rest/mock/MockRestClientBuilder.java | 2 +- .../java/org/apache/juneau/rest/mock/MockServletRequest.java | 4 ++-- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java index 3b7c32a..c38902a 100644 --- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java +++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java @@ -3583,6 +3583,15 @@ public class RestRequest extends BeanSession implements HttpUriRequest, Configur return getPartSerializerSession(client.getPartSerializer()); } + /** +* TEMP +* +* @return TEMP +*/ + public HttpRequest getHttpRequest() { + return this; + } + //- // Other methods //- diff --git a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java index f178b70..80ca44c 100644 --- a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java +++ b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java @@ -38,8 +38,8 @@ import org.apache.juneau.rest.*; import org.apache.juneau.rest.annotation.*; import org.apache.juneau.rest.client.*; import org.apache.juneau.rest.client.RestRequest; -import org.apache.juneau.rest.logging.*; import org.apache.juneau.http.header.ContentType; +import org.apache.juneau.rest.logging.*; /** * Mocked {@link RestClient}. @@ -724,7 +724,7 @@ public class MockRestClient extends RestClient implements HttpClientConnection { */ private HttpRequest findRestRequest(HttpRequest req) { if (req instanceof RestRequestCreated) - return ((RestRequestCreated)req).getRestRequest(); + return ((RestRequestCreated)req).getRestRequest().getHttpRequest(); if (req instanceof HttpRequestWrapper) return findRestRequest(((HttpRequestWrapper) req).getOriginal()); return req; diff --git a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java index 34a00dc..4493513 100644 --- a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java +++ b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java @@ -212,7 +212,7 @@ public class MockRestClientBuilder extends RestClientBuilder { @Override /* ContextBuilder */ public MockRestClientBuilder debug() { - header("Debug", true); + header("Debug", "true"); super.debug(); return this; } diff --git a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java index 4d0ca3a..b56da69 100644 --- a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java +++ b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java @@ -958,7 +958,7 @@ public class MockServletRequest implements HttpServletRequest { */ protected MockServletRequest debug(boolean value) { if (value) - header("Debug", true); + header("Debug", "true"); return this; } @@ -973,7 +973,7 @@ public class MockServletRequest implements HttpServletRequest { */ public MockServl
[juneau] branch master updated: RestClient API improvements.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new ee710a0 RestClient API improvements. ee710a0 is described below commit ee710a0d302b783b1b34d7febce24f17cf52149d Author: JamesBognar AuthorDate: Mon Jun 7 10:12:57 2021 -0400 RestClient API improvements. --- .../33.RestLoggingAndDebugging.html| 2 +- .../org/apache/juneau/rest/client/RestClient.java | 63 ++-- .../juneau/rest/client/RestClientBuilder.java | 368 - .../apache/juneau/rest/mock/MockRestClient.java| 2 +- .../juneau/rest/mock/MockRestClientBuilder.java| 93 +++--- .../juneau/rest/mock/MockServletRequest.java | 4 +- .../java/org/apache/juneau/rest/RestRequest.java | 12 +- .../java/org/apache/juneau/rest/RestResponse.java | 14 +- .../juneau/rest/logging/BasicTestRestLogger.java | 18 +- .../rest/client/RestClient_Headers_Test.java | 23 +- 10 files changed, 335 insertions(+), 264 deletions(-) diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/33.RestLoggingAndDebugging.html b/juneau-doc/docs/Topics/06.juneau-rest-server/33.RestLoggingAndDebugging.html index 0d02030..f626d79 100644 --- a/juneau-doc/docs/Topics/06.juneau-rest-server/33.RestLoggingAndDebugging.html +++ b/juneau-doc/docs/Topics/06.juneau-rest-server/33.RestLoggingAndDebugging.html @@ -273,7 +273,7 @@ Logging / Debugging "true" - Logging disabled. "false" (default) - Logging not disabled. - "per-request" - Logging is disabled only on requests containing a X-NoTrace: true header. + "per-request" - Logging is disabled only on requests containing a No-Trace: true header. Disabled logging is particularly useful when running testcases that are expected to throw exceptions or cause diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java index e5551fe..f4e5ff0 100644 --- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java +++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java @@ -33,6 +33,7 @@ import java.net.*; import java.net.URI; import java.nio.charset.*; import java.text.*; +import java.time.*; import java.util.*; import java.util.concurrent.*; import java.util.function.*; @@ -1289,37 +1290,37 @@ public class RestClient extends BeanContext implements HttpClient, Closeable, Re * {@link org.apache.juneau.rest.client.RestClientBuilder#header(Header) header(Header)} * {@link org.apache.juneau.rest.client.RestClientBuilder#headers(Object...) headers(Object...)} * {@link org.apache.juneau.rest.client.RestClientBuilder#headerPairs(Object...) headerPairs(Object...)} -* {@link org.apache.juneau.rest.client.RestClientBuilder#accept(Object) accept(Object)} -* {@link org.apache.juneau.rest.client.RestClientBuilder#acceptCharset(Object) acceptCharset(Object)} -* {@link org.apache.juneau.rest.client.RestClientBuilder#acceptEncoding(Object) acceptEncoding(Object)} -* {@link org.apache.juneau.rest.client.RestClientBuilder#acceptLanguage(Object) acceptLanguage(Object)} -* {@link org.apache.juneau.rest.client.RestClientBuilder#authorization(Object) authorization(Object)} -* {@link org.apache.juneau.rest.client.RestClientBuilder#cacheControl(Object) cacheControl(Object)} -* {@link org.apache.juneau.rest.client.RestClientBuilder#clientVersion(Object) clientVersion(Object)} -* {@link org.apache.juneau.rest.client.RestClientBuilder#connection(Object) connection(Object)} -* {@link org.apache.juneau.rest.client.RestClientBuilder#contentLength(Object) contentLength(Object)} -* {@link org.apache.juneau.rest.client.RestClientBuilder#contentType(Object) contentType(Object)} -* {@link org.apache.juneau.rest.client.RestClientBuilder#date(Object) date(Object)} -* {@link org.apache.juneau.rest.client.RestClientBuilder#expect(Object) expect(Object)} -* {@link org.apache.juneau.rest.client.RestClientBuilder#forwarded(Object) forwarded(Object)} -
[juneau] branch master updated: Code cleanup.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 0ae7dba Code cleanup. 0ae7dba is described below commit 0ae7dba819945894ba0d225bd138cfb5190784cf Author: JamesBognar AuthorDate: Sun Jun 6 17:59:13 2021 -0400 Code cleanup. --- .../src/main/java/org/apache/juneau/rest/client/RestRequest.java | 2 +- .../src/main/java/org/apache/juneau/rest/mock/MockRestRequest.java| 4 ++-- .../apache/juneau/rest/client/RestClient_Config_RestClient_Test.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java index afae51a..3b7c32a 100644 --- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java +++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java @@ -818,7 +818,7 @@ public class RestRequest extends BeanSession implements HttpUriRequest, Configur * @param scheme The new URI host. * @return This object (for method chaining). */ - public RestRequest scheme(String scheme) { + public RestRequest uriScheme(String scheme) { uriBuilder.setScheme(scheme); return this; } diff --git a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestRequest.java b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestRequest.java index 3c2acc8..99c26de 100644 --- a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestRequest.java +++ b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestRequest.java @@ -221,8 +221,8 @@ public class MockRestRequest extends org.apache.juneau.rest.client.RestRequest { * @return This object (for method chaining). */ @Override - public MockRestRequest scheme(String value) { - super.scheme(value); + public MockRestRequest uriScheme(String value) { + super.uriScheme(value); this.scheme = value; return this; } diff --git a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java index cb6316b..bd431f7 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java @@ -515,10 +515,10 @@ public class RestClient_Config_RestClient_Test { @Test public void a16_request_uriParts() throws Exception { - java.net.URI uri = client().build().get().scheme("http").host("localhost").port(8080).userInfo("foo:bar").uri("/bean").fragment("baz").query("foo","bar").run().assertBody().is("{f:1}").getRequest().getURI(); + java.net.URI uri = client().build().get().uriScheme("http").host("localhost").port(8080).userInfo("foo:bar").uri("/bean").fragment("baz").query("foo","bar").run().assertBody().is("{f:1}").getRequest().getURI(); assertEquals("http://foo:bar@localhost:8080/bean?foo=bar#baz",uri.toString()); - uri = client().build().get().scheme("http").host("localhost").port(8080).userInfo("foo","bar").uri("/bean").fragment("baz").query("foo","bar").run().assertBody().is("{f:1}").getRequest().getURI(); + uri = client().build().get().uriScheme("http").host("localhost").port(8080).userInfo("foo","bar").uri("/bean").fragment("baz").query("foo","bar").run().assertBody().is("{f:1}").getRequest().getURI(); assertEquals("http://foo:bar@localhost:8080/bean?foo=bar#baz",uri.toString()); uri = client().build().get().uri("http://localhost;).uri("http://foo:bar@localhost:8080/bean?foo=bar#baz;).run().assertBody().is("{f:1}").getRequest().getURI();
[juneau] branch master updated: Code cleanup.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new fa7a3b8 Code cleanup. fa7a3b8 is described below commit fa7a3b8b9f8a724e89506ad5d9c4a86e63684223 Author: JamesBognar AuthorDate: Sun Jun 6 17:40:18 2021 -0400 Code cleanup. --- .../org/apache/juneau/http/header/ContentType.java | 1 + .../org/apache/juneau/rest/client/RestClient.java | 56 -- .../apache/juneau/rest/mock/MockRestClient.java| 7 +- .../juneau/rest/Header_ContentType_Test.java | 39 +- .../rest/Rest_PredefinedStatusCodes_Test.java | 21 +++--- .../rest/annotation/BeanConfig_Swaps_Test.java | 9 ++- .../apache/juneau/rest/annotation/Body_Test.java | 87 +++--- .../rest/client/RestClient_BasicCalls_Test.java| 23 +++--- 8 files changed, 112 insertions(+), 131 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/ContentType.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/ContentType.java index 95ab25e..1fb7611 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/ContentType.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/ContentType.java @@ -77,6 +77,7 @@ public class ContentType extends BasicMediaTypeHeader { IMAGE_WEBP = of("image/webp"), MULTIPART_FORM_DATA = of("multipart/form-data"), TEXT_HTML = of("text/html"), + TEXT_OPENAPI = of("text/openapi"), TEXT_PLAIN = of("text/plain"), TEXT_XML = of("text/xml"), WILDCARD = of("*/*"); diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java index 502f013..e5551fe 100644 --- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java +++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java @@ -332,7 +332,6 @@ import org.apache.juneau.http.HttpHeaders; * {@link RestClientBuilder} * * {@link RestClientBuilder#header(String,Object) header(String,Object)} - * {@link RestClientBuilder#header(String,Object,HttpPartSchema) header(String,Object,HttpPartSchema)} * {@link RestClientBuilder#header(String,Supplier) header(String,Supplier?)} * {@link RestClientBuilder#header(String,Supplier,HttpPartSchema) header(String,Supplier?,HttpPartSchema)} * {@link RestClientBuilder#header(Header) header(Header)} @@ -342,32 +341,14 @@ import org.apache.juneau.http.HttpHeaders; * {@link RestRequest} * * {@link RestRequest#header(String,Object) header(String,Object)} - * {@link RestRequest#header(String,Object,HttpPartSchema) header(String,Object,HttpPartSchema)} - * {@link RestRequest#header(ListOperation,String,Object) header(ListOperation,String,Object)} - * {@link RestRequest#header(ListOperation,String,Object,HttpPartSchema) header(ListOperation,String,Object,HttpPartSchema)} + * {@link RestRequest#header(ListOperation,String,Object) header(AddFlag,String,Object)} * {@link RestRequest#header(Header) header(Header)} * {@link RestRequest#headers(Object...) headers(Object...)} - * {@link RestRequest#headers(ListOperation,Object...) headers(ListOperation;Object...)} + * {@link RestRequest#headers(ListOperation,Object...) headers(AddFlag;Object...)} * {@link RestRequest#headerPairs(Object...) headers(Object...)} * * * - * - * Additionally, methods are provided on the client builder and per request for all standard HTTP headers - * such as {@link RestClientBuilder#authorization(Object) authorization(Object)}. - * - * Example: - * - * // Create a client that adds an Authorization header to every request. - * RestClient client = RestClient.create().authorization("Foo").build(); - * - * // Or do it per-request. - * String response = client.get(URI).authorization("Foo").run().getBody().asString(); - * - * // Or use an HttpHeader. - * response = client.get(URI).headers(Authorization.of("Foo")).run().getBody().asString(); - * - * * * The supplier methods are particularly useful for header values whose values may change over time (such as Authorization headers * which may need to change every few minutes). @@ -408,18 +389,15 @@ import org.apache.juneau.http.HttpHeaders; * {@link RestClient
[juneau] branch master updated: Code cleanup.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 3828830 Code cleanup. 3828830 is described below commit 3828830f06b76cbc608bd541e8b69389132b4278 Author: JamesBognar AuthorDate: Sun Jun 6 16:41:55 2021 -0400 Code cleanup. --- .../src/main/java/org/apache/juneau/rest/RestContext.java | 4 ++-- .../src/main/java/org/apache/juneau/rest/RestOperationContext.java| 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java index 5059360..30bb3a1 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java @@ -1181,7 +1181,7 @@ public class RestContext extends BeanContext { * * Methods: * -* {@link org.apache.juneau.rest.RestContextBuilder#defaultRequestHeader(String,Object)} +* {@link org.apache.juneau.rest.RestContextBuilder#defaultRequestHeader(String,String)} * {@link org.apache.juneau.rest.RestContextBuilder#defaultRequestHeader(String,Supplier)} * {@link org.apache.juneau.rest.RestContextBuilder#defaultRequestHeaders(org.apache.http.Header...)} * @@ -1252,7 +1252,7 @@ public class RestContext extends BeanContext { * * Methods: * -* {@link org.apache.juneau.rest.RestContextBuilder#defaultResponseHeader(String,Object)} +* {@link org.apache.juneau.rest.RestContextBuilder#defaultResponseHeader(String,String)} * {@link org.apache.juneau.rest.RestContextBuilder#defaultResponseHeader(String,Supplier)} * {@link org.apache.juneau.rest.RestContextBuilder#defaultResponseHeaders(org.apache.http.Header...)} * diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java index 91ba4d8..07a372f 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java @@ -415,7 +415,7 @@ public class RestOperationContext extends BeanContext implements Comparable * Methods: * -* {@link org.apache.juneau.rest.RestOperationContextBuilder#defaultRequestHeader(String,Object)} +* {@link org.apache.juneau.rest.RestOperationContextBuilder#defaultRequestHeader(String,String)} * {@link org.apache.juneau.rest.RestOperationContextBuilder#defaultRequestHeader(String,Supplier)} * {@link org.apache.juneau.rest.RestOperationContextBuilder#defaultRequestHeaders(org.apache.http.Header...)} * @@ -460,7 +460,7 @@ public class RestOperationContext extends BeanContext implements Comparable * Methods: * -* {@link org.apache.juneau.rest.RestOperationContextBuilder#defaultResponseHeader(String,Object)} +* {@link org.apache.juneau.rest.RestOperationContextBuilder#defaultResponseHeader(String,String)} * {@link org.apache.juneau.rest.RestOperationContextBuilder#defaultResponseHeader(String,Supplier)} * {@link org.apache.juneau.rest.RestOperationContextBuilder#defaultResponseHeaders(org.apache.http.Header...)} *
[juneau] branch master updated: Code cleanup.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 60d138d Code cleanup. 60d138d is described below commit 60d138d854671defc27b928833cc98d39f8dc322 Author: JamesBognar AuthorDate: Sun Jun 6 16:40:12 2021 -0400 Code cleanup. --- .../java/org/apache/juneau/rest/RestContextBuilder.java | 16 .../apache/juneau/rest/RestOperationContextBuilder.java | 16 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java index 566f19e..feafa5e 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java @@ -1022,8 +1022,8 @@ public class RestContextBuilder extends BeanContextBuilder implements ServletCon * @return This object (for method chaining). */ @FluentSetter - public RestContextBuilder defaultRequestHeader(String name, Object value) { - return defaultRequestHeaders(basicHeader(name, value)); + public RestContextBuilder defaultRequestHeader(String name, String value) { + return defaultRequestHeaders(stringHeader(name, value)); } /** @@ -1041,8 +1041,8 @@ public class RestContextBuilder extends BeanContextBuilder implements ServletCon * @return This object (for method chaining). */ @FluentSetter - public RestContextBuilder defaultRequestHeader(String name, Supplier value) { - return defaultRequestHeaders(basicHeader(name, value)); + public RestContextBuilder defaultRequestHeader(String name, Supplier value) { + return defaultRequestHeaders(stringHeader(name, value)); } /** @@ -1079,8 +1079,8 @@ public class RestContextBuilder extends BeanContextBuilder implements ServletCon * @return This object (for method chaining). */ @FluentSetter - public RestContextBuilder defaultResponseHeader(String name, Object value) { - return defaultResponseHeaders(basicHeader(name, value)); + public RestContextBuilder defaultResponseHeader(String name, String value) { + return defaultResponseHeaders(stringHeader(name, value)); } /** @@ -1098,8 +1098,8 @@ public class RestContextBuilder extends BeanContextBuilder implements ServletCon * @return This object (for method chaining). */ @FluentSetter - public RestContextBuilder defaultResponseHeader(String name, Supplier value) { - return defaultResponseHeaders(basicHeader(name, value)); + public RestContextBuilder defaultResponseHeader(String name, Supplier value) { + return defaultResponseHeaders(stringHeader(name, value)); } /** diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java index 357e59b..af5741c 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java @@ -377,8 +377,8 @@ public class RestOperationContextBuilder extends BeanContextBuilder { * @return This object (for method chaining). */ @FluentSetter - public RestOperationContextBuilder defaultRequestHeader(String name, Object value) { - return defaultRequestHeaders(basicHeader(name, value)); + public RestOperationContextBuilder defaultRequestHeader(String name, String value) { + return defaultRequestHeaders(stringHeader(name, value)); } /** @@ -396,8 +396,8 @@ public class RestOperationContextBuilder extends BeanContextBuilder { * @return This object (for method chaining). */ @FluentSetter - public RestOperationContextBuilder defaultRequestHeader(String name, Supplier value) { - return defaultRequestHeaders(basicHeader(name, value)); + public RestOperationContextBuilder defaultRequestHeader(String name, Supplier value) { + return defaultRequestHeaders(stringHeader(name, value)); } /** @@ -434,8 +434,8 @@ public class RestOperationContextBuilder extends BeanContextBuilder { * @return This object (for method chaining). */ @FluentSetter - public RestOperationContextBuilder
[juneau] branch master updated: Code cleanup.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new e59c7e8 Code cleanup. e59c7e8 is described below commit e59c7e8e190c95e237c5f0cbc17bd70943886e21 Author: JamesBognar AuthorDate: Sun Jun 6 16:01:21 2021 -0400 Code cleanup. --- .../httppart/bean/RequestBeanPropertyMeta.java | 11 ++- .../juneau/httppart/bean/ResponseBeanMeta.java | 13 +-- .../httppart/bean/ResponseBeanPropertyMeta.java| 21 +++-- .../org/apache/juneau/rest/client/RestClient.java | 92 --- .../org/apache/juneau/rest/client/RestRequest.java | 101 ++--- .../apache/juneau/rest/client/RestResponse.java| 43 +++-- .../rest/client/remote/RemoteOperationArg.java | 12 ++- .../java/org/apache/juneau/rest/RestRequest.java | 38 +--- .../rest/processors/ResponseBeanProcessor.java | 21 + 9 files changed, 242 insertions(+), 110 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java index 204e826..f5e98ed 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java @@ -13,9 +13,11 @@ package org.apache.juneau.httppart.bean; import static org.apache.juneau.internal.ClassUtils.*; +import static java.util.Optional.*; import java.lang.annotation.*; import java.lang.reflect.*; +import java.util.*; import org.apache.juneau.*; import org.apache.juneau.http.annotation.*; @@ -40,7 +42,7 @@ public class RequestBeanPropertyMeta { private final Method getter; private final HttpPartType partType; - private final HttpPartSerializer serializer; + private final Optional serializer; private final HttpPartParser parser; private final HttpPartSchema schema; @@ -48,7 +50,7 @@ public class RequestBeanPropertyMeta { this.partType = b.partType; this.schema = b.schema; this.getter = b.getter; - this.serializer = schema.getSerializer() == null ? serializer : castOrCreate(HttpPartSerializer.class, schema.getSerializer(), true, b.cp); + this.serializer = ofNullable(schema.getSerializer() == null ? serializer : castOrCreate(HttpPartSerializer.class, schema.getSerializer(), true, b.cp)); this.parser = schema.getParser() == null ? parser : castOrCreate(HttpPartParser.class, schema.getParser(), true, b.cp); } @@ -112,11 +114,10 @@ public class RequestBeanPropertyMeta { /** * Returns the serializer to use for serializing the bean property value. * -* @param _default The default serializer to use if not defined on the annotation. * @return The serializer to use for serializing the bean property value. */ - public HttpPartSerializerSession getSerializer(HttpPartSerializerSession _default) { - return serializer == null ? _default : serializer.createPartSession(null); + public Optional getSerializer() { + return serializer; } /** diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java index d4d865d..b4ada18 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java @@ -16,6 +16,7 @@ import static org.apache.juneau.internal.ClassUtils.*; import static org.apache.juneau.httppart.bean.Utils.*; import static org.apache.juneau.httppart.HttpPartType.*; import static org.apache.juneau.annotation.InvalidAnnotationException.*; +import static java.util.Optional.*; import java.io.*; import java.lang.reflect.*; @@ -104,15 +105,15 @@ public class ResponseBeanMeta { private final int code; private final Map headerMethods; private final ResponseBeanPropertyMeta statusMethod, bodyMethod; - private final HttpPartSerializer partSerializer; - private final HttpPartParser partParser; + private final Optional partSerializer; + private final Optional partParser; private final HttpPartSchema schema; ResponseBeanMeta(Builder b) { this.cm = b.cm; this.code = b.code; - this.partSerializer = castOrCreate(HttpPartSerializer.class, b.partSerializer, true, b.cp
[juneau] branch master updated: Code cleanup.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new a7d0740 Code cleanup. a7d0740 is described below commit a7d07401d3d64266789faaf04088188ec24a330a Author: JamesBognar AuthorDate: Sun Jun 6 14:08:11 2021 -0400 Code cleanup. --- .../main/java/org/apache/juneau/BeanSession.java | 21 ++ .../main/java/org/apache/juneau/ListOperation.java | 9 ++--- .../org/apache/juneau/httppart/HttpPartSchema.java | 46 -- 3 files changed, 25 insertions(+), 51 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java index 32a7116..98ff9b6 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java @@ -782,6 +782,27 @@ public class BeanSession extends Session { } /** +* Wraps an object inside a {@link BeanMap} object (a modifiable {@link Map}). +* +* +* Same as {@link #toBeanMap(Object)} but allows you to specify a property namer instance. +* +* Example: +* +* // Construct a bean map around a bean instance +* BeanMapPerson bm = BeanContext.DEFAULT.toBeanMap(new Person(), PropertyNamerDLC.INSTANCE); +* +* +* @param The class of the object being wrapped. +* @param o The object to wrap in a map interface. Must not be null. +* @param propertyNamer The property namer to use. +* @return The wrapped object. +*/ + public final BeanMap toBeanMap(T o, PropertyNamer propertyNamer) { + return this.toBeanMap(o, (Class)o.getClass()); + } + + /** * Determines whether the specified object matches the requirements on this context of being a bean. * * @param o The object being tested. diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java index aaf0157..3ccfebc 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java @@ -43,29 +43,28 @@ public enum ListOperation { /** * Don't add the value if it's null or an empty string. */ + @Deprecated SKIP_IF_EMPTY; - public static final boolean NEEDS_CLEANUP = true; - /** * Default flags. -* Needs to be removed. */ + @Deprecated public static final EnumSet DEFAULT_FLAGS = EnumSet.of(APPEND); /** * Default skip-if-empty flags. -* Needs to be removed. */ + @Deprecated public static final EnumSet SKIP_IF_EMPTY_FLAGS = EnumSet.of(APPEND, SKIP_IF_EMPTY); /** * Returns {@link #DEFAULT_FLAGS} if the enum set is null or empty. -* Needs to be removed. * * @param s The set to check. * @return Either the same set or {@link #DEFAULT_FLAGS}. Never null. */ + @Deprecated public static EnumSet orDefault(EnumSet s) { return s == null || s.isEmpty() ? DEFAULT_FLAGS : s; } diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java index f4410d5..2cbfa30 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java @@ -147,7 +147,6 @@ public class HttpPartSchema { final String name; - final Set codes; final String _default; final Set _enum; final Map properties; @@ -643,7 +642,6 @@ public class HttpPartSchema { HttpPartSchema(HttpPartSchemaBuilder b) { this.name = b.name; - this.codes = copy(b.codes); this._default = b._default; this._enum = copy(b._enum); this.properties = build(b.properties, b.noValidate); @@ -873,49 +871,6 @@ public class HttpPartSchema { } /** -* Returns the HTTP status code or codes defined on a schema. -* -* @return -* The list of HTTP status codes. -* Never null. -* @see HttpPartSchemaBuilder#code(int) -* @see HttpPartSchemaBuilder#codes(int[]) -*/ - public Set getCodes() { - return codes
[juneau] branch master updated: Cleanup.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 4ff8362 Cleanup. 4ff8362 is described below commit 4ff836265265feb383beafd0a4d3fa35771dfc8b Author: JamesBognar AuthorDate: Mon May 10 08:36:47 2021 -0400 Cleanup. --- .../test/java/org/apache/juneau/rest/test/TestMicroservice.java | 2 +- .../java/org/apache/juneau/rest/client/RestClientBuilder.java | 2 +- .../src/main/java/org/apache/juneau/rest/mock/MockRestClient.java | 8 .../java/org/apache/juneau/rest/mock/MockRestClientBuilder.java | 4 ++-- .../apache/juneau/http/remote/Remote_CommonInterfaces_Test.java | 6 +++--- .../src/test/java/org/apache/juneau/http/remote/Remote_Test.java | 4 ++-- .../java/org/apache/juneau/http/remote/RrpcInterfaceTest.java | 2 +- .../java/org/apache/juneau/http/response/BadRequest_Test.java | 2 +- .../test/java/org/apache/juneau/http/response/Conflict_Test.java | 2 +- .../org/apache/juneau/http/response/ExpectationFailed_Test.java | 2 +- .../org/apache/juneau/http/response/FailedDependency_Test.java| 2 +- .../test/java/org/apache/juneau/http/response/Forbidden_Test.java | 2 +- .../src/test/java/org/apache/juneau/http/response/Gone_Test.java | 2 +- .../apache/juneau/http/response/HttpVersionNotSupported_Test.java | 2 +- .../org/apache/juneau/http/response/InsufficentStorage_Test.java | 2 +- .../org/apache/juneau/http/response/InternalServerError_Test.java | 2 +- .../java/org/apache/juneau/http/response/LengthRequired_Test.java | 2 +- .../test/java/org/apache/juneau/http/response/Locked_Test.java| 2 +- .../java/org/apache/juneau/http/response/LoopDetected_Test.java | 2 +- .../org/apache/juneau/http/response/MethodNotAllowed_Test.java| 2 +- .../org/apache/juneau/http/response/MisdirectedRequest_Test.java | 2 +- .../juneau/http/response/NetworkAuthenticationRequired_Test.java | 2 +- .../java/org/apache/juneau/http/response/NotAcceptable_Test.java | 2 +- .../java/org/apache/juneau/http/response/NotExtended_Test.java| 2 +- .../test/java/org/apache/juneau/http/response/NotFound_Test.java | 2 +- .../java/org/apache/juneau/http/response/NotImplemented_Test.java | 2 +- .../org/apache/juneau/http/response/PayloadTooLarge_Test.java | 2 +- .../org/apache/juneau/http/response/PreconditionFailed_Test.java | 2 +- .../apache/juneau/http/response/PreconditionRequired_Test.java| 2 +- .../org/apache/juneau/http/response/RangeNotSatisfiable_Test.java | 2 +- .../juneau/http/response/RequestHeaderFieldsTooLarge_Test.java| 2 +- .../org/apache/juneau/http/response/ServiceUnavailable_Test.java | 2 +- .../org/apache/juneau/http/response/TooManyRequests_Test.java | 2 +- .../java/org/apache/juneau/http/response/Unauthorized_Test.java | 2 +- .../juneau/http/response/UnavailableForLegalReasons_Test.java | 2 +- .../org/apache/juneau/http/response/UnprocessableEntity_Test.java | 2 +- .../apache/juneau/http/response/UnsupportedMediaType_Test.java| 2 +- .../org/apache/juneau/http/response/UpgradeRequired_Test.java | 2 +- .../java/org/apache/juneau/http/response/UriTooLong_Test.java | 2 +- .../apache/juneau/http/response/VariantAlsoNegotiates_Test.java | 2 +- .../org/apache/juneau/rest/client/RestCallException_Test.java | 2 +- .../org/apache/juneau/rest/client/RestClient_Headers_Test.java| 4 ++-- .../apache/juneau/rest/client/RestClient_Response_Body_Test.java | 4 ++-- .../test/java/org/apache/juneau/rest/client/RestClient_Test.java | 2 +- 44 files changed, 53 insertions(+), 53 deletions(-) diff --git a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java index 55bae24..f42786a 100644 --- a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java +++ b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java @@ -103,7 +103,7 @@ public class TestMicroservice { RestClientBuilder rc = RestClient.create() .json() .rootUri(microserviceURI) - .noLog(); + .noTrace(); rc.retryHandler( new HttpRequestRetryHandler() { @Override diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java index 67f62b4..3e20ccf 100644 --- a/juneau-rest
[juneau] branch master updated: Cleanup.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new c6b127f Cleanup. c6b127f is described below commit c6b127fee8379f3e2d0045352f1af3d2308a8a2e Author: JamesBognar AuthorDate: Sun May 9 12:28:52 2021 -0400 Cleanup. --- .../java/org/apache/juneau/PropertyNamerDLC.java | 19 +- ...ropertyNamerDLC.java => PropertyNamerDUCS.java} | 46 ++-- .../java/org/apache/juneau/PropertyNamerULC.java | 19 +- .../java/org/apache/juneau/http/HttpParts.java | 42 .../http/entity/SerializedEntityBuilder.java | 54 +++- .../apache/juneau/http/part/PartListBuilder.java | 280 +++-- .../org/apache/juneau/http/response/Accepted.java | 2 - .../juneau/http/response/AlreadyReported.java | 2 - .../org/apache/juneau/http/response/Continue.java | 2 - .../org/apache/juneau/http/response/Created.java | 2 - .../apache/juneau/http/response/EarlyHints.java| 2 - .../org/apache/juneau/http/response/Found.java | 2 - .../org/apache/juneau/http/response/IMUsed.java| 2 - .../juneau/http/response/MovedPermanently.java | 2 - .../apache/juneau/http/response/MultiStatus.java | 2 - .../juneau/http/response/MultipleChoices.java | 2 - .../org/apache/juneau/http/response/NoContent.java | 2 - .../http/response/NonAuthoritiveInformation.java | 2 - .../apache/juneau/http/response/NotModified.java | 2 - .../java/org/apache/juneau/http/response/Ok.java | 2 - .../juneau/http/response/PartialContent.java | 2 - .../juneau/http/response/PermanentRedirect.java| 2 - .../apache/juneau/http/response/Processing.java| 2 - .../apache/juneau/http/response/ResetContent.java | 2 - .../org/apache/juneau/http/response/SeeOther.java | 2 - .../juneau/http/response/SwitchingProtocols.java | 2 - .../juneau/http/response/TemporaryRedirect.java| 2 - .../org/apache/juneau/http/response/UseProxy.java | 2 - 28 files changed, 404 insertions(+), 100 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDLC.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDLC.java index 43d0e5f..97b6c2c 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDLC.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDLC.java @@ -12,6 +12,9 @@ // *** package org.apache.juneau; +import static java.lang.Character.*; +import static org.apache.juneau.internal.StringUtils.*; + /** * Converts property names to dashed-lower-case format. * @@ -24,16 +27,19 @@ package org.apache.juneau; */ public final class PropertyNamerDLC implements PropertyNamer { + /** Reusable instance. */ + public static final PropertyNamer INSTANCE = new PropertyNamerDLC(); + @Override /* PropertyNamer */ public String getPropertyName(String name) { - if (name == null || name.isEmpty()) + if (isEmpty(name)) return name; int numUCs = 0; - boolean isPrevUC = Character.isUpperCase(name.charAt(0)); + boolean isPrevUC = isUpperCase(name.charAt(0)); for (int i = 1; i < name.length(); i++) { char c = name.charAt(i); - if (Character.isUpperCase(c)) { + if (isUpperCase(c)) { if (! isPrevUC) numUCs++; isPrevUC = true; @@ -43,16 +49,15 @@ public final class PropertyNamerDLC implements PropertyNamer { } char[] name2 = new char[name.length() + numUCs]; - isPrevUC = Character.isUpperCase(name.charAt(0)); - name2[0] = Character.toLowerCase(name.charAt(0)); + isPrevUC = isUpperCase(name.charAt(0)); int ni = 0; for (int i = 0; i < name.length(); i++) { char c = name.charAt(i); - if (Character.isUpperCase(c)) { + if (isUpperCase(c)) { if (! isPrevUC) name2[ni++] = '-'; isPrevUC = true; - name2[ni++] = Character.toLowerCase(c); + name2[ni++] = toLowerCase(c); } else { isPrevUC = false; name2[ni++] = c; diff --git a/juneau-core/juneau-marshall/src/main/java/org/apac
[juneau] branch master updated: MessagePack improvements.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 8ed6644 MessagePack improvements. 8ed6644 is described below commit 8ed6644bb0420b1f3db910e410d9abdd23b9431e Author: JamesBognar AuthorDate: Sun May 9 11:13:14 2021 -0400 MessagePack improvements. 1) Byte array serialized to bin entries. 2) Strings serialized without intermediate byte array allocations. --- .../apache/juneau/msgpack/MsgPackOutputStream.java | 113 +++-- .../juneau/msgpack/MsgPackParserSession.java | 2 +- .../juneau/msgpack/MsgPackSerializerSession.java | 3 + 3 files changed, 109 insertions(+), 9 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java index 4ded995..8436050 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java @@ -12,12 +12,15 @@ // *** package org.apache.juneau.msgpack; +import static org.apache.juneau.internal.ExceptionUtils.*; import static org.apache.juneau.msgpack.DataType.*; import java.io.*; import java.math.*; import java.util.concurrent.atomic.*; +import org.apache.juneau.internal.*; + /** * Specialized output stream for serializing MessagePack streams. * @@ -214,14 +217,22 @@ public final class MsgPackOutputStream extends OutputStream { // * ___ is a 32-bit big-endian unsigned integer which represents N // * N is the length of data - byte[] b = cs.toString().getBytes("UTF-8"); - if (b.length < 32) - return append1(0xA0 + b.length).append(b); - if (b.length < (1<<8)) - return append1(STR8).append1(b.length).append(b); - if (b.length < (1<<16)) - return append1(STR16).append2(b.length).append(b); - return append1(STR32).append4(b.length).append(b); + int length = getUtf8ByteLength(cs); + if (length < 32) + append1(0xA0 + length); + else if (length < (1<<8)) + append1(STR8).append1(length); + else if (length < (1<<16)) + append1(STR16).append2(length); + else + append1(STR32).append4(length); + + int length2 = writeUtf8To(cs, os); + + if (length != length2) + throw ioException("Unexpected length. Expected={0}, Actual={1}", length, length2); + + return this; } /** @@ -257,6 +268,44 @@ public final class MsgPackOutputStream extends OutputStream { } /** +* Appends a binary field to the stream. +*/ + final MsgPackOutputStream appendBinary(InputStream is) throws IOException { + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + IOUtils.pipe(is, baos); + + byte[] b = baos.toByteArray(); + + // bin 8 stores a byte array whose length is up to (2^8)-1 bytes: + // ++++ + // | 0xc4 || data | + // ++++ + // + // bin 16 stores a byte array whose length is up to (2^16)-1 bytes: + // +++++ + // | 0xc5 ||| data | + // +++++ + // + // bin 32 stores a byte array whose length is up to (2^32)-1 bytes: + // +++++++ + // | 0xc6 ||||| data | + // +++++++ + // + // where + // * is a 8-bit unsigned integer which represents N + // * _ is a 16-bit big-endian unsigned integer which represents N + // * ___ is a 32-bit big-endian unsigned integer which represents N + // * N is the length of data + + if (b.length < (1<<8)) + return append1(BIN8).append1(b.length).append(b); + if (b.length &l
[juneau] branch master updated: Remove deprecated AddFlag references.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 3c495f6 Remove deprecated AddFlag references. 3c495f6 is described below commit 3c495f6ee6614721af22de590382c0462c96573b Author: JamesBognar AuthorDate: Fri Apr 23 09:25:11 2021 -0400 Remove deprecated AddFlag references. --- .../src/main/java/org/apache/juneau/AddFlag.java | 61 -- .../main/java/org/apache/juneau/ListOperation.java | 9 +- .../org/apache/juneau/rest/client/RestClient.java | 32 +++--- .../org/apache/juneau/rest/client/RestRequest.java | 128 ++--- .../client/RestClient_Config_RestClient_Test.java | 2 +- .../rest/client/RestClient_FormData_Test.java | 8 +- .../rest/client/RestClient_Headers_Test.java | 8 +- .../juneau/rest/client/RestClient_Query_Test.java | 10 +- .../apache/juneau/rest/client/RestClient_Test.java | 2 +- 9 files changed, 100 insertions(+), 160 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AddFlag.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AddFlag.java deleted file mode 100644 index cbc..000 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AddFlag.java +++ /dev/null @@ -1,61 +0,0 @@ -// *** -// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file * -// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file* -// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance* -// * with the License. You may obtain a copy of the License at * -// * * -// * http://www.apache.org/licenses/LICENSE-2.0 * -// * * -// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an * -// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the* -// * specific language governing permissions and limitations under the License. * -// *** -package org.apache.juneau; - -import java.util.*; - -/** - * Identifies how to add elements to a list. - */ -public enum AddFlag { - - /** -* Any previous value(s) should be overwritten/replaced. -*/ - APPEND, - - /** -* Any previous value(s) should be overwritten/replaced. -*/ - PREPEND, - - /** -* Any previous value(s) should be overwritten/replaced. -*/ - REPLACE, - - /** -* Don't add the value if it's null or an empty string. -*/ - SKIP_IF_EMPTY; - - /** -* Default flags. -*/ - public static final EnumSet DEFAULT_FLAGS = EnumSet.of(APPEND); - - /** -* Default skip-if-empty flags. -*/ - public static final EnumSet SKIP_IF_EMPTY_FLAGS = EnumSet.of(APPEND, SKIP_IF_EMPTY); - - /** -* Returns {@link #DEFAULT_FLAGS} if the enum set is null or empty. -* -* @param s The set to check. -* @return Either the same set or {@link #DEFAULT_FLAGS}. Never null. -*/ - public static EnumSet orDefault(EnumSet s) { - return s == null || s.isEmpty() ? DEFAULT_FLAGS : s; - } -} diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java index 3ccfebc..aaf0157 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ListOperation.java @@ -43,28 +43,29 @@ public enum ListOperation { /** * Don't add the value if it's null or an empty string. */ - @Deprecated SKIP_IF_EMPTY; + public static final boolean NEEDS_CLEANUP = true; + /** * Default flags. +* Needs to be removed. */ - @Deprecated public static final EnumSet DEFAULT
[juneau] branch master updated: Remove non-fluent classes from ConfigurablePropertyCodeGenerator.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 6d2f3d3 Remove non-fluent classes from ConfigurablePropertyCodeGenerator. 6d2f3d3 is described below commit 6d2f3d354091c3d75dd335a5c96f24092eb94f74 Author: JamesBognar AuthorDate: Thu Apr 22 09:34:45 2021 -0400 Remove non-fluent classes from ConfigurablePropertyCodeGenerator. --- .../main/ConfigurablePropertyCodeGenerator.java| 23 ++ 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java index 86ce143..b02302f 100644 --- a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java +++ b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java @@ -59,13 +59,10 @@ import org.apache.juneau.xml.*; public class ConfigurablePropertyCodeGenerator { static Class[] classes = new Class[]{ - Accepted.class, - AlreadyReported.class, AnnotationBuilder.class, ArrayAssertion.class, Assertion.class, BasicHeader.class, - BasicHttpResponse.class, BasicRuntimeExceptionBuilder.class, BasicStatusLineBuilder.class, BeanAssertion.class, @@ -84,12 +81,9 @@ public class ConfigurablePropertyCodeGenerator { ConfigStoreBuilder.class, ConstructorInfo.class, ContextBuilder.class, - Continue.class, - Created.class, CsvParserBuilder.class, CsvSerializerBuilder.class, DateAssertion.class, - EarlyHints.class, ExecutableInfo.class, FileFinderBuilder.class, FluentArrayAssertion.class, @@ -116,8 +110,8 @@ public class ConfigurablePropertyCodeGenerator { FluentResponseHeaderAssertion.class, FluentStringAssertion.class, FluentThrowableAssertion.class, + FluentVersionAssertion.class, FluentZonedDateTimeAssertion.class, - Found.class, HeaderListBuilder.class, HtmlDocSerializerBuilder.class, HtmlParserBuilder.class, @@ -128,7 +122,6 @@ public class ConfigurablePropertyCodeGenerator { HttpExceptionBuilder.class, HttpResourceBuilder.class, HttpResponseBuilder.class, - IMUsed.class, InputStreamParserBuilder.class, IntegerAssertion.class, JsonParserBuilder.class, @@ -144,16 +137,9 @@ public class ConfigurablePropertyCodeGenerator { MethodExecStoreBuilder.class, MethodInfo.class, MockRestClientBuilder.class, - MovedPermanently.class, MsgPackParserBuilder.class, MsgPackSerializerBuilder.class, - MultipleChoices.class, - MultiStatus.class, - NoContent.class, - NonAuthoritiveInformation.class, - NotModified.class, ObjectAssertion.class, - Ok.class, OpenApiParserBuilder.class, OpenApiSerializerBuilder.class, OutputStreamSerializerBuilder.class, @@ -164,16 +150,13 @@ public class ConfigurablePropertyCodeGenerator { PermanentRedirect.class, PlainTextParserBuilder.class, PlainTextSerializerBuilder.class, - Processing.class, RdfParserBuilder.class, RdfSerializerBuilder.class, ReaderParserBuilder.class, RequestHttpPart.class, - ResetContent.class, RestClientBuilder.class, RestContextBuilder.class, RestOperationContextBuilder.class, - SeeOther.class, SerializedEntity.class, SerializedEntityBuilder.class, SerializedHeader.class, @@ -187,7 +170,6 @@ public class ConfigurablePropertyCodeGenerator { SoapXmlSerializerBuilder.class, StaticFilesBuilder.class, StringAssertion.class, - SwitchingProtocols.class, TargetedAnnotationBuilder.class, TargetedAnnotationCBuilder.class, TargetedAnnotationMBuilder.class, @@ -197,7 +179,6 @@ public class ConfigurablePropertyCodeGenerator { TargetedAnnotationTMBuilder.class, TargetedAnnotationTMFBuilder.class, TargetedAnnotationTMFCBuilder.class
[juneau] branch master updated: Clean up ExceptionUtils.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new e3c2bdf Clean up ExceptionUtils. e3c2bdf is described below commit e3c2bdfbbd51586252f67fe592c556db993e1741 Author: JamesBognar AuthorDate: Wed Apr 21 17:06:50 2021 -0400 Clean up ExceptionUtils. --- .../java/org/apache/juneau/BasicException.java | 2 +- .../juneau/BasicIllegalArgumentException.java | 72 -- .../main/java/org/apache/juneau/BeanSession.java | 5 +- .../org/apache/juneau/assertions/Assertions.java | 21 +-- .../org/apache/juneau/http/header/EntityTag.java | 9 ++- .../org/apache/juneau/http/header/HeaderList.java | 4 +- .../apache/juneau/http/part/BasicIntegerPart.java | 4 +- .../org/apache/juneau/http/part/BasicLongPart.java | 4 +- .../java/org/apache/juneau/http/part/PartList.java | 4 +- .../org/apache/juneau/internal/ExceptionUtils.java | 21 +++ .../java/org/apache/juneau/internal/SimpleMap.java | 13 ++-- .../org/apache/juneau/internal/StringUtils.java| 5 +- .../org/apache/juneau/internal/ThrowableUtils.java | 15 - .../java/org/apache/juneau/reflect/ClassInfo.java | 16 +++-- .../main/java/org/apache/juneau/svl/MapVar.java| 6 +- .../src/main/java/org/apache/juneau/svl/Var.java | 13 ++-- .../java/org/apache/juneau/svl/vars/IfVar.java | 6 +- .../java/org/apache/juneau/svl/vars/LenVar.java| 6 +- .../apache/juneau/svl/vars/PatternExtractVar.java | 6 +- .../apache/juneau/svl/vars/PatternMatchVar.java| 6 +- .../apache/juneau/svl/vars/PatternReplaceVar.java | 6 +- .../org/apache/juneau/svl/vars/SubstringVar.java | 7 +-- .../java/org/apache/juneau/svl/vars/SwitchVar.java | 9 +-- .../org/apache/juneau/http/EntityTag_Test.java | 2 +- .../apache/juneau/reflection/ClassInfoTest.java| 2 +- 25 files changed, 87 insertions(+), 177 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicException.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicException.java index 39343bc..b60f5d7 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicException.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicException.java @@ -21,7 +21,7 @@ import org.apache.juneau.internal.*; /** * Subclass of non-runtime exceptions that take in a message and zero or more arguments. */ -public class BasicException extends Exception { +public abstract class BasicException extends Exception { private static final long serialVersionUID = 1L; diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicIllegalArgumentException.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicIllegalArgumentException.java deleted file mode 100644 index 08b408d..000 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BasicIllegalArgumentException.java +++ /dev/null @@ -1,72 +0,0 @@ -// *** -// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file * -// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file* -// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance* -// * with the License. You may obtain a copy of the License at * -// * * -// * http://www.apache.org/licenses/LICENSE-2.0 * -// * * -// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an * -// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the* -// * specific language governing permissions and limitations under the License. * -// *** -package org.apache.juneau; - -import static org.apache.juneau.internal.StringUtils.*; - -import java.text.*; - -import org.apache.juneau.internal.*; -import org.apache.juneau.reflect.*; - -/** - * Subclass of illegal-argument exceptions that take in a message and zer
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 0f1b357 REST refactoring. 0f1b357 is described below commit 0f1b35716961989733cf6da09a008d5f0d053e17 Author: JamesBognar AuthorDate: Fri Mar 12 14:49:38 2021 -0500 REST refactoring. --- .../apache/juneau/config/event/ConfigEvents.java | 4 +- .../apache/juneau/config/internal/ConfigMap.java | 4 +- .../juneau/config/store/ConfigClasspathStore.java | 4 +- .../juneau/config/store/ConfigFileStore.java | 6 +- .../juneau/config/store/ConfigMemoryStore.java | 4 +- .../java/org/apache/juneau/dto/html5/Select.java | 5 +- .../org/apache/juneau/dto/swagger/Operation.java | 4 +- .../apache/juneau/annotation/NotThreadSafe.java} | 43 +--- .../org/apache/juneau/annotation/ThreadSafe.java} | 43 +--- .../juneau/assertions/FluentBaseAssertion.java | 4 +- .../juneau/assertions/FluentStringAssertion.java | 12 +- .../juneau/http/header/BasicCsvArrayHeader.java| 4 +- .../org/apache/juneau/http/header/BasicHeader.java | 2 +- .../org/apache/juneau/http/header/HeaderList.java | 68 +-- .../juneau/http/header/HeaderListBuilder.java | 223 - .../juneau/http/header/SerializedHeader.java | 21 ++ .../apache/juneau/http/part/BasicCsvArrayPart.java | 4 +- .../juneau/http/resource/HttpResourceBuilder.java | 18 +- .../juneau/http/response/BasicHttpException.java | 10 +- .../juneau/http/response/BasicHttpResponse.java| 10 +- .../juneau/http/response/HttpExceptionBuilder.java | 18 +- .../juneau/http/response/HttpResponseBuilder.java | 18 +- .../org/apache/juneau/internal/ArrayUtils.java | 2 +- .../org/apache/juneau/internal/StringUtils.java| 21 +- .../org/apache/juneau/utils/ReflectionMap.java | 12 +- .../apache/juneau/xml/XmlSerializerSession.java| 4 +- .../org/apache/juneau/rest/client/RestClient.java | 4 +- .../apache/juneau/rest/client/RestResponse.java| 8 +- .../juneau/rest/client/remote/RemoteMeta.java | 6 +- .../java/org/apache/juneau/rest/RestContext.java | 4 +- .../apache/juneau/rest/RestOperationContext.java | 10 +- .../apache/juneau/config/ConfigImportsTest.java| 4 +- .../org/apache/juneau/http/HeaderList_Test.java| 37 ++-- .../org/apache/juneau/http/remote/Remote_Test.java | 4 +- .../juneau/transforms/OneWayStringSwapTest.java| 2 +- .../juneau/transforms/RoundTripStringSwapTest.java | 4 +- 36 files changed, 350 insertions(+), 301 deletions(-) diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java index 2aea3d6..f671885 100644 --- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java +++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java @@ -30,7 +30,7 @@ public class ConfigEvents extends ArrayList { */ public boolean isSectionModified(String name) { for (ConfigEvent ce : this) - if (isEquals(name, ce.getSection())) + if (eq(name, ce.getSection())) return true; return false; } @@ -44,7 +44,7 @@ public class ConfigEvents extends ArrayList { */ public boolean isKeyModified(String section, String key) { for (ConfigEvent ce : this) - if (isEquals(section, ce.getSection()) && isEquals(key, ce.getKey())) + if (eq(section, ce.getSection()) && eq(key, ce.getKey())) return true; return false; } diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java index 105fe3f..318e3bc 100644 --- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java +++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java @@ -613,7 +613,7 @@ public class ConfigMap implements ConfigStoreListener { ConfigEvents changes = null; writeLock(); try { - if (! StringUtils.isEquals(contents, newContents)) { + if (ne(contents, newContents)) { changes = findDiffs(newContents); load(newContents); @@ -831,7 +831,7 @@ public class ConfigMap implements ConfigStoreListener { } else { for
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 09d8ab4 REST refactoring. 09d8ab4 is described below commit 09d8ab4bef2307e8108ee42498024381dd18333c Author: JamesBognar AuthorDate: Fri Mar 12 12:53:17 2021 -0500 REST refactoring. --- .../org/apache/juneau/rest/client/RestClient.java | 4 +- .../org/apache/juneau/rest/client/RestRequest.java | 88 -- .../org/apache/juneau/rest/RequestHeaders.java | 27 --- .../client/RestClient_Config_RestClient_Test.java | 17 +++-- .../rest/client/RestClient_Headers_Test.java | 54 ++--- .../apache/juneau/rest/client/RestClient_Test.java | 3 +- 6 files changed, 135 insertions(+), 58 deletions(-) diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java index 868664e..0c9a1df 100644 --- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java +++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java @@ -2900,7 +2900,7 @@ public class RestClient extends BeanContext implements HttpClient, Closeable, Re RestRequest req = createRequest(toURI(op.getUri(), rootUri), op.getMethod(), op.hasBody()); for (Object o : headers) - req.header(BasicHeader.cast(o)); + req.header(APPEND, BasicHeader.cast(o)); for (Object o : query) req.query(BasicPart.cast(o)); @@ -3084,7 +3084,7 @@ public class RestClient extends BeanContext implements HttpClient, Closeable, Re rc.parser(parser); for (Header h : rm.getHeaders()) - rc.header(h); + rc.header(APPEND, h); for (RemoteOperationArg a : rom.getPathArgs()) rc.pathArg(a.getName(), args[a.getIndex()], a.getSchema(), a.getSerializer(s)); diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java index 9442560..3ee14fd 100644 --- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java +++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java @@ -2032,7 +2032,10 @@ public class RestRequest extends BeanSession implements HttpUriRequest, Configur } /** -* Appends a header on the request. +* Adds or replaces a header on the request. +* +* +* Replaces the header if it already exists, or appends it to the end of the headers if it doesn't. * * Example: * @@ -2057,9 +2060,12 @@ public class RestRequest extends BeanSession implements HttpUriRequest, Configur } /** -* Appends a header on the request. +* Adds or replaces a header on the request. * * +* Replaces the header if it already exists, or appends it to the end of the headers if it doesn't. +* +* * The optional schema allows for specifying how part should be serialized (as a pipe-delimited list for example). * * Example: @@ -2089,7 +2095,7 @@ public class RestRequest extends BeanSession implements HttpUriRequest, Configur } /** -* Adds a header to the request. +* Adds or replaces a header to the request. * * Example: * @@ -2123,8 +2129,11 @@ public class RestRequest extends BeanSession implements HttpUriRequest, Configur } /** -* Appends a header on the request. +* Adds or replaces a header on the request. * +* +* Replaces the header if it already exists, or appends it to the end of the headers if it doesn't. +* * Example: * * // Adds header "Foo: bar". @@ -2143,8 +2152,37 @@ public class RestRequest extends BeanSession implements HttpUriRequest, Configur } /** -* Appends multiple headers to the request. +* Adds or replaces a header on the request. +* +* Example: +* +* // Adds header "Foo: bar". +* client +* .get(URI) +* .header(APPEND, BasicHeader.of("Foo", "bar")) +* .run(); +
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 7843bba REST refactoring. 7843bba is described below commit 7843bba10aed3fc8f2179a9ea74984b0b0462d93 Author: JamesBognar AuthorDate: Thu Mar 11 18:17:23 2021 -0500 REST refactoring. --- .../juneau/http/header/HeaderListBuilder.java | 12 ++ .../apache/juneau/rest/client/RestResponse.java| 49 -- .../rest/client/RestClient_Response_Test.java | 2 +- 3 files changed, 41 insertions(+), 22 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java index 7609560..e1736b8 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java @@ -325,6 +325,18 @@ public class HeaderListBuilder { /** * Replaces the first occurrence of the headers with the same name. * +* @param name The header name. +* @param value The header value. +* @return This object (for method chaining). +*/ + public HeaderListBuilder update(String name, String value) { + Header x = isResolving() ? new BasicHeader(name, resolver(value)) : new BasicHeader(name, value); + return update(x); + } + + /** +* Replaces the first occurrence of the headers with the same name. +* * * If no header with the same name is found the given header is added to the end of the list. * diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java index 3b2328a..94f0d4c 100644 --- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java +++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java @@ -54,6 +54,7 @@ public class RestResponse implements HttpResponse { HttpPartParserSession partParser; private ResponseBody responseBody; private boolean isClosed; + private HeaderList headers; /** * Constructor. @@ -70,6 +71,7 @@ public class RestResponse implements HttpResponse { this.response = response == null ? new BasicHttpResponse(null, 0, null) : response; this.responseBody = new ResponseBody(client, request, this, parser); this.partParser = client.getPartParserSession(); + this.headers = HeaderList.of(this.response.getAllHeaders()); } /** @@ -638,10 +640,10 @@ public class RestResponse implements HttpResponse { */ @Override /* HttpMessage */ public ResponseHeader[] getHeaders(String name) { - Header[] a = response.getHeaders(name); - ResponseHeader[] b = new ResponseHeader[a.length]; - for (int i = 0; i < a.length; i++) - b[i] = new ResponseHeader(request, this, a[i]).parser(partParser); + List a = headers.get(name); + ResponseHeader[] b = new ResponseHeader[a.size()]; + for (int i = 0; i < b.length; i++) + b[i] = new ResponseHeader(request, this, a.get(i)).parser(partParser); return b; } @@ -658,7 +660,7 @@ public class RestResponse implements HttpResponse { */ @Override /* HttpMessage */ public ResponseHeader getFirstHeader(String name) { - return new ResponseHeader(request, this, response.getFirstHeader(name)).parser(partParser); + return new ResponseHeader(request, this, headers.getFirst(name)).parser(partParser); } /** @@ -674,17 +676,22 @@ public class RestResponse implements HttpResponse { */ @Override /* HttpMessage */ public ResponseHeader getLastHeader(String name) { - return new ResponseHeader(request, this, response.getLastHeader(name)).parser(partParser); + return new ResponseHeader(request, this, headers.getLast(name)).parser(partParser); } /** -* A synonym for {@link #getLastHeader(String)}. +* Returns the response header with the specified name. +* +* +* If more than one header with the name exists, it is condensed into a comma-delimited list per +* RFC2616 +* which governs multiple message header fields. * * @param name The name of the header to
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 38b2fa1 REST refactoring. 38b2fa1 is described below commit 38b2fa1d7984ae5709ce3954c9b662941eb3241a Author: JamesBognar AuthorDate: Thu Mar 11 17:37:17 2021 -0500 REST refactoring. --- .../juneau/http/header/HeaderListBuilder.java | 55 -- .../java/org/apache/juneau/rest/RestContext.java | 12 ++--- .../apache/juneau/rest/RestOperationContext.java | 10 ++-- 3 files changed, 11 insertions(+), 66 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java index 7145c09..7609560 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java @@ -370,61 +370,6 @@ public class HeaderListBuilder { return this; } - /** -* Appends or replaces the header values in this list. -* -* -* If the header already exists in this list, it will be replaced with the new value. -* Otherwise it will be appended to the end of this list. -* -* @param values The values to append or replace in this list. -* @return This object (for method chaining). -*/ - public HeaderListBuilder appendUnique(Header...values) { - for (Header h : values) { - boolean replaced = false; - for (ListIterator li = headers.listIterator(); li.hasNext();) { - Header h2 = li.next(); - if (h2.getName().equalsIgnoreCase(h.getName())) { - li.set(h); - replaced = true; - break; - } - } - if (! replaced) - add(h); - } - return this; - } - - - /** -* Appends or replaces the header values in this list. -* -* -* If the header already exists in this list, it will be replaced with the new value. -* Otherwise it will be appended to the end of this list. -* -* @param values The values to append or replace in this list. -* @return This object (for method chaining). -*/ - public HeaderListBuilder appendUnique(Collection values) { - for (Header h : values) { - boolean replaced = false; - for (ListIterator li = headers.listIterator(); li.hasNext();) { - Header h2 = li.next(); - if (h2.getName().equalsIgnoreCase(h.getName())) { - li.set(h); - replaced = true; - break; - } - } - if (! replaced) - add(h); - } - return this; - } - private boolean isResolving() { return varResolver != null; } diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java index 3f37ccc..8c57a94 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java @@ -2314,17 +2314,17 @@ public class RestContext extends BeanContext { * * @Override * public int process(RestCall call) throws IOException { -* +* * RestResponse res = call.getRestResponse(); * Foo foo = res.getOutput(Foo.class); -* +* * if (foo == null) * return NEXT; // Let the next processor handle it. -* +* * try (Writer w = res.getNegotiatedWriter()) { * //Pipe it to the writer ourselves. * } -* +* * return FINISHED; // We handled
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 04e6e0e REST refactoring. 04e6e0e is described below commit 04e6e0e7e722f8bcf65ebcf565e4c9046a46d57d Author: JamesBognar AuthorDate: Thu Mar 11 15:53:49 2021 -0500 REST refactoring. --- .../java/org/apache/juneau/http/header/Thrown.java | 119 +++-- .../juneau/http/response/HttpExceptionBuilder.java | 2 +- .../org/apache/juneau/rest/client/RestRequest.java | 8 +- 3 files changed, 66 insertions(+), 63 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java index 354f161..a0545b9 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java @@ -13,6 +13,7 @@ package org.apache.juneau.http.header; import static org.apache.juneau.internal.StringUtils.*; +import static java.util.Collections.*; import java.util.*; @@ -26,15 +27,28 @@ import org.apache.juneau.http.annotation.*; * * Example * - * Thrown: org.apache.juneau.http.response.NotFound, Resource was not found + * Thrown: org.apache.juneau.http.response.NotFound;Resource was not found * * * * This header isn't part of the RFC2616 specification, but is provided to allow for Java exception information * to be delivered to remote REST Java interfaces. + * + * + * This header supports comma-delimited values for multiple thrown values. + * + * Thrown: org.apache.juneau.http.response.NotFound;Resource was not found,java.lang.RuntimeException;foo + * + * + * + * Note that this is equivalent to specifying multiple header values. + * + * Thrown: org.apache.juneau.http.response.NotFound;Resource was not found + * Thrown: java.lang.RuntimeException;foo + * */ @Header("Thrown") -public class Thrown extends BasicHeader { +public class Thrown extends BasicCsvArrayHeader { private static final long serialVersionUID = 1L; @@ -43,19 +57,24 @@ public class Thrown extends BasicHeader { */ public static final Thrown EMPTY = new Thrown((String)null); - private final String className, message; + private final List parts; /** * Convenience creator. * -* @param value +* @param values * The header value. * @return A new {@link Exception} object. */ - public static Thrown of(Throwable value) { - if (value == null) - return null; - return new Thrown(value); + public static Thrown of(Throwable...values) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < values.length; i++) { + if (i > 0) + sb.append(", "); + Throwable t = values[i]; + sb.append(urlEncode(t.getClass().getName())).append(";").append(urlEncode(t.getMessage())); + } + return new Thrown(sb.toString()); } /** @@ -77,40 +96,18 @@ public class Thrown extends BasicHeader { * @param value * The header value. */ - public Thrown(Throwable value) { - super("Thrown", value); - className = stripInvalidHttpHeaderChars(value.getClass().getName()); - message = stripInvalidHttpHeaderChars(value.getMessage()); - } - - @Override /* Header */ - public String getValue() { - if (message == null) - return className; - return className + ", " + message; - } - - /** -* Constructor. -* -* @param value -* The header value. -*/ public Thrown(String value) { super("Thrown", value); - if (value != null) { - int i = value.indexOf(','); + List l = new ArrayList<>(); + for (String s : asList().orElse(emptyList())) { + int i = value.indexOf(';'); if (i != -1) { - className = value.substring(0, i).trim(); - message = value.substring(i+1).trim(); + l.add(new Part(urlDecode(s.substring(0, i).trim()), urlDecode(s.substring(i+1).trim(; } else { - className = value; - message =
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 3fd6ba6 REST refactoring. 3fd6ba6 is described below commit 3fd6ba6c7141a85b53f651dc263d16deeb7905e3 Author: JamesBognar AuthorDate: Thu Mar 11 15:19:11 2021 -0500 REST refactoring. --- .../java/org/apache/juneau/http/HttpHeaders.java | 63 ++ .../org/apache/juneau/http/header/HeaderList.java | 50 + 2 files changed, 113 insertions(+) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java index 82a0aa5..6f4acfb 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java @@ -12,13 +12,18 @@ // *** package org.apache.juneau.http; +import static org.apache.juneau.internal.StringUtils.*; + +import java.lang.reflect.*; import java.time.*; import java.util.*; +import java.util.concurrent.*; import java.util.function.*; import org.apache.http.*; import org.apache.juneau.http.header.*; import org.apache.juneau.http.header.Date; +import org.apache.juneau.reflect.*; /** * Standard predefined HTTP headers. @@ -3157,6 +3162,44 @@ public class HttpHeaders { } /** +* Creates a new {@link Header} of the specified type. +* +* +* The implementation class must have a public constructor taking in one of the following argument lists: +* +* X(String value) +* X(Object value) +* X(String name, String value) +* X(String name, Object value) +* +* +* @param type The header implementation class. +* @param name The header name. +* @param value The header value. +* @return A new unmodifiable instance, never null. +*/ + public static final T header(Class type, String name, Object value) { + Constructor c = findConstructor(type); + if (c == null) + throw new UnsupportedOperationException("Constructor for type "+type.getClass().getName()+" could not be found."); + + Class[] pt = c.getParameterTypes(); + Object[] args = new Object[pt.length]; + if (pt.length == 1) { + args[0] = pt[0] == String.class ? stringify(value) : value; + } else { + args[0] = name; + args[1] = pt[1] == String.class ? stringify(value) : value; + } + + try { + return c.newInstance(args); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + /** * Instantiates a new {@link HeaderListBuilder}. * * @return A new empty builder. @@ -3197,4 +3240,24 @@ public class HttpHeaders { public static HeaderList headerList(Object...pairs) { return HeaderList.ofPairs(pairs); } + + private static final ConcurrentHashMap,Optional>> HEADER_CONSTRUCTORS = new ConcurrentHashMap<>(); + + @SuppressWarnings("unchecked") + private static final Constructor findConstructor(Class c) { + Optional> o = HEADER_CONSTRUCTORS.get(c); + if (o == null) { + ClassInfo ci = ClassInfo.of(c); + ConstructorInfo cci = ci.getPublicConstructor(String.class); + if (cci == null) + cci = ci.getPublicConstructor(Object.class); + if (cci == null) + cci = ci.getPublicConstructor(String.class, String.class); + if (cci == null) + cci = ci.getPublicConstructor(String.class, Object.class); + o = Optional.ofNullable(cci == null ? null : cci.inner()); + HEADER_CONSTRUCTORS.put(c, o); + } + return (Constructor)o.orElse(null); + } } diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java index 43db16a..a2f8a5a 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/he
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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 b/juneau-co
[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); +
[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 +++ b/juneau-rest/juneau-res
[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 HttpEntity
[juneau] branch master updated: New Thrown header bean.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 9b049e4 New Thrown header bean. 9b049e4 is described below commit 9b049e47091a099c0b1581d2ca97e1ea0f3eb027 Author: JamesBognar AuthorDate: Tue Mar 9 11:26:23 2021 -0500 New Thrown header bean. --- .../java/org/apache/juneau/http/HttpHeaders.java | 22 +++ .../java/org/apache/juneau/http/header/Thrown.java | 151 + .../juneau/http/response/HttpExceptionBuilder.java | 5 +- .../apache/juneau/rest/client/ResponseBody.java| 4 +- .../juneau/rest/client/RestCallException.java | 22 ++- .../org/apache/juneau/rest/client/RestClient.java | 6 +- .../org/apache/juneau/rest/client/RestRequest.java | 11 +- .../apache/juneau/rest/client/RestResponse.java| 38 +++--- .../java/org/apache/juneau/rest/RestContext.java | 4 +- .../juneau/rest/reshandlers/DefaultHandler.java| 3 +- .../juneau/rest/client/RestCallException_Test.java | 4 +- .../client/RestClient_Config_BeanContext_Test.java | 28 ++-- .../client/RestClient_Config_RestClient_Test.java | 6 +- .../client/RestClient_Response_Headers_Test.java | 90 ++-- .../rest/client/RestClient_Response_Test.java | 6 +- 15 files changed, 280 insertions(+), 120 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java index f847d5d..82a0aa5 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java @@ -2036,6 +2036,28 @@ public class HttpHeaders { } /** +* Creates a new {@link Thrown} header. +* +* @param value +* The header value. +* @return A new header bean, or null if the value was null. +*/ + public static final Thrown thrown(Throwable value) { + return Thrown.of(value); + } + + /** +* Creates a new {@link Thrown} header. +* +* @param value +* The header value. +* @return A new header bean, or null if the value was null. +*/ + public static final Thrown thrown(String value) { + return Thrown.of(value); + } + + /** * Creates a new {@link Trailer} header. * * @param value The header value. diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java new file mode 100644 index 000..354f161 --- /dev/null +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java @@ -0,0 +1,151 @@ +// *** +// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file * +// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file* +// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance* +// * with the License. You may obtain a copy of the License at * +// * * +// * http://www.apache.org/licenses/LICENSE-2.0 * +// * * +// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an * +// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the* +// * specific language governing permissions and limitations under the License. * +// *** +package org.apache.juneau.http.header; + +import static org.apache.juneau.internal.StringUtils.*; + +import java.util.*; + +import org.apache.juneau.http.annotation.*; + +/** + * Represents a parsed Thrown HTTP request header. + * + * + * Contains exception information including name and optionally a message. + * + * Example + * + * Thrown: org.apache.juneau.http.response.NotFound, Re
[juneau] branch master updated: Remove duplicate methods in ThrowableUtils.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 7087776 Remove duplicate methods in ThrowableUtils. 7087776 is described below commit 7087776ca66fbca1cb574228737f229a9b7c15d5 Author: JamesBognar AuthorDate: Mon Mar 8 14:15:45 2021 -0500 Remove duplicate methods in ThrowableUtils. --- .../main/java/org/apache/juneau/config/Config.java | 24 ++--- .../main/java/org/apache/juneau/BeanSession.java | 7 +- .../org/apache/juneau/internal/ArrayUtils.java | 9 +- .../java/org/apache/juneau/internal/FileUtils.java | 6 +- .../org/apache/juneau/internal/FilteredMap.java| 7 +- .../org/apache/juneau/internal/MultiIterable.java | 5 +- .../java/org/apache/juneau/internal/MultiSet.java | 5 +- .../java/org/apache/juneau/internal/SimpleMap.java | 5 +- .../org/apache/juneau/internal/StringUtils.java| 5 +- .../org/apache/juneau/internal/ThrowableUtils.java | 100 - .../java/org/apache/juneau/ComboRoundTripTest.java | 18 ++-- .../java/org/apache/juneau/ComboSerializeTest.java | 5 +- .../java/org/apache/juneau/config/ConfigTest.java | 18 ++-- 13 files changed, 55 insertions(+), 159 deletions(-) diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java index 5664d42..b206060 100644 --- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java +++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java @@ -12,9 +12,9 @@ // *** package org.apache.juneau.config; +import static org.apache.juneau.assertions.Assertions.*; import static org.apache.juneau.config.ConfigMod.*; import static org.apache.juneau.internal.StringUtils.*; -import static org.apache.juneau.internal.ThrowableUtils.*; import static org.apache.juneau.internal.IOUtils.*; import java.beans.*; @@ -572,7 +572,7 @@ public final class Config extends Context implements ConfigEventListener, Writab */ public Config set(String key, String value) { checkWrite(); - assertFieldNotNull(key, "key"); + assertArgNotNull("key", key); String sname = sname(key); String skey = skey(key); @@ -679,7 +679,7 @@ public final class Config extends Context implements ConfigEventListener, Writab */ public Config set(String key, Object value, Serializer serializer, ConfigMod[] modifiers, String comment, List preLines) throws SerializeException { checkWrite(); - assertFieldNotNull(key, "key"); + assertArgNotNull("key", key); String sname = sname(key); String skey = skey(key); @@ -1117,7 +1117,7 @@ public final class Config extends Context implements ConfigEventListener, Writab * @return The value, or null if the section or key does not exist. */ public T getObject(String key, Parser parser, Type type, Type...args) throws ParseException { - assertFieldNotNull(type, "type"); + assertArgNotNull("type", type); return parse(getString(key), parser, type, args); } @@ -1172,7 +1172,7 @@ public final class Config extends Context implements ConfigEventListener, Writab * @see BeanSession#getClassMeta(Type,Type...) for argument syntax for maps and collections. */ public T getObject(String key, Parser parser, Class type) throws ParseException { - assertFieldNotNull(type, "c"); + assertArgNotNull("c", type); return parse(getString(key), parser, type); } @@ -1206,7 +1206,7 @@ public final class Config extends Context implements ConfigEventListener, Writab * @return The value, or null if the section or key does not exist. */ public T getObjectWithDefault(String key, Parser parser, T def, Class type) throws ParseException { - assertFieldNotNull(type, "c"); + assertArgNotNull("type", type); T t = parse(getString(key), parser, type); return (t == null ? def : t); } @@ -1253,7 +1253,7 @@ public final class Config extends Context implements ConfigEventListener, Writab * @return The value, or null if the section or key does not exist. */ public T getObjectWithDefault(String key, Parser parser, T def, Type type, Type...args) throws ParseException { - assertFie
[juneau] branch master updated: Add byte buffer reuse to IOUtils.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 7625cfb Add byte buffer reuse to IOUtils. 7625cfb is described below commit 7625cfbe85fbe5ca2886fb274eb26077eead2bb2 Author: JamesBognar AuthorDate: Mon Mar 8 13:55:31 2021 -0500 Add byte buffer reuse to IOUtils. --- .../src/main/java/org/apache/juneau/internal/IOUtils.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java index c95ac5f..1f099db 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java @@ -33,6 +33,7 @@ public final class IOUtils { } }; + private static final int BUFF_SIZE = 1024; private static final ThreadLocal BYTE_BUFFER_CACHE = (Boolean.getBoolean("juneau.disableIoBufferReuse") ? null : new ThreadLocal<>()); private static final ThreadLocal CHAR_BUFFER_CACHE = (Boolean.getBoolean("juneau.disableIoBufferReuse") ? null : new ThreadLocal<>()); @@ -61,8 +62,6 @@ public final class IOUtils { public void close() throws IOException {} }; - private static final int BUFF_SIZE = 1024; - //- // Piping utilities. //-
[juneau] branch master updated: Add byte buffer reuse to IOUtils.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 182dcdb Add byte buffer reuse to IOUtils. 182dcdb is described below commit 182dcdbc0799797c9a66697b4708832e18c80730 Author: JamesBognar AuthorDate: Mon Mar 8 13:53:29 2021 -0500 Add byte buffer reuse to IOUtils. --- .../apache/juneau/internal/FileWriterBuilder.java | 17 - .../java/org/apache/juneau/internal/IOUtils.java | 88 -- 2 files changed, 64 insertions(+), 41 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FileWriterBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FileWriterBuilder.java index 1e63f8f..0c3e5af 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FileWriterBuilder.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FileWriterBuilder.java @@ -22,7 +22,7 @@ public final class FileWriterBuilder { private File file; private Charset cs = Charset.defaultCharset(); - private boolean append; + private boolean append, buffered; /** * Creates a new builder. @@ -112,12 +112,25 @@ public final class FileWriterBuilder { } /** +* Sets the buffer mode on the writer to true. +* +* @return This object (for method chaining). +*/ + public FileWriterBuilder buffered() { + this.buffered = true; + return this; + } + + /** * Creates a new File writer. * * @return A new File writer. * @throws FileNotFoundException If file could not be found. */ public Writer build() throws FileNotFoundException { - return new OutputStreamWriter(new FileOutputStream(file, append), cs); + OutputStream os = new FileOutputStream(file, append); + if (buffered) + os = new BufferedOutputStream(os); + return new OutputStreamWriter(os, cs); } } diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java index 11760d0..c95ac5f 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/IOUtils.java @@ -15,6 +15,7 @@ package org.apache.juneau.internal; import java.io.*; import java.nio.charset.*; import java.util.*; +import java.util.concurrent.atomic.*; /** * Various I/O related utility methods. @@ -32,6 +33,20 @@ public final class IOUtils { } }; + private static final ThreadLocal BYTE_BUFFER_CACHE = (Boolean.getBoolean("juneau.disableIoBufferReuse") ? null : new ThreadLocal<>()); + private static final ThreadLocal CHAR_BUFFER_CACHE = (Boolean.getBoolean("juneau.disableIoBufferReuse") ? null : new ThreadLocal<>()); + + static final AtomicInteger cacheHits = new AtomicInteger(); + + static { + Runtime.getRuntime().addShutdownHook(new Thread() { + @Override + public void run() { + System.out.println("I/O buffer cache hits: " + cacheHits.get()); + } + }); + } + /** Reusable empty reader. */ public static final Reader EMPTY_READER = new Reader() { @Override @@ -69,7 +84,7 @@ public final class IOUtils { public static long pipe(Reader in, File out) throws IOException { if (out == null || in == null) return 0; - try (Writer w = FileWriterBuilder.create(out).build()) { + try (Writer w = FileWriterBuilder.create(out).buffered().build()) { return pipe(in, w); } } @@ -94,7 +109,7 @@ public final class IOUtils { return 0; long total = 0; try (Reader in2 = in) { - char[] buffer = new char[buffSize(-1)]; + char[] buffer = charBuffer(-1); int readLen; while ((readLen = in.read(buffer)) != -1) { out.write(buffer, 0, readLen); @@ -209,7 +224,7 @@ public final class IOUtils { public static long pipe(InputStream in, OutputStream out, long maxBytes) throws IOException { if (in == null || out == null) return 0; - byte[] buffer = new byte[buffSize(maxBytes)]; +
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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.cl
[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)}. -* -
[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: Fix NPE seen at LogParser$Entry.getText() line: 173.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new f6ece51 Fix NPE seen at LogParser$Entry.getText() line: 173. new 65f6bd4 Merge pull request #56 from garydgregory/npe_LogParser_Entry.getText f6ece51 is described below commit f6ece510a518c09785cef00dba3876dd09c62017 Author: Gary Gregory AuthorDate: Fri Mar 5 12:31:27 2021 -0500 Fix NPE seen at LogParser$Entry.getText() line: 173. --- .../main/java/org/apache/juneau/microservice/resources/LogParser.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogParser.java b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogParser.java index 170917a..84916d2 100644 --- a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogParser.java +++ b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogParser.java @@ -170,6 +170,8 @@ public final class LogParser implements Iterable, Iterator
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new d063c8d REST refactoring. d063c8d is described below commit d063c8d02b8006bb239d02090cd9c45e50e2286d Author: JamesBognar AuthorDate: Fri Mar 5 15:05:02 2021 -0500 REST refactoring. --- .../main/ConfigurablePropertyCodeGenerator.java| 3 +- .../java/org/apache/juneau/http/HttpEntities.java | 120 ++-- .../apache/juneau/http/entity/BasicHttpEntity.java | 3 +- .../juneau/http/entity/BasicHttpResource.java | 1 + .../apache/juneau/http/entity/ByteArrayEntity.java | 14 +- .../org/apache/juneau/http/entity/FileEntity.java | 12 +- .../juneau/http/entity/InputStreamEntity.java | 19 +- .../{InputStreamEntity.java => ReaderEntity.java} | 83 ...alizedHttpEntity.java => SerializedEntity.java} | 140 +++--- .../apache/juneau/http/entity/StringEntity.java| 58 +++--- .../java/org/apache/juneau/internal/IOUtils.java | 14 ++ .../org/apache/juneau/rest/client/RestClient.java | 20 +- .../org/apache/juneau/rest/client/RestRequest.java | 6 +- .../apache/juneau/http/BasicHttpEntity_Test.java | 212 - .../apache/juneau/http/BasicHttpResource_Test.java | 1 + .../juneau/http/SerializedHttpEntity_Test.java | 17 +- .../http/remote/Remote_CommonInterfaces_Test.java | 1 + .../rest/client/RestClient_BasicCalls_Test.java| 4 +- .../juneau/rest/client/RestClient_Body_Test.java | 88 ++--- 19 files changed, 335 insertions(+), 481 deletions(-) diff --git a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java index f79f317..40e2be1 100644 --- a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java +++ b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java @@ -64,7 +64,6 @@ public class ConfigurablePropertyCodeGenerator { ArrayAssertion.class, Assertion.class, BasicHeader.class, - BasicHttpEntity.class, BasicHttpResource.class, HttpResponseBuilder.class, Part.class, @@ -175,7 +174,7 @@ public class ConfigurablePropertyCodeGenerator { RestOperationContextBuilder.class, SeeOther.class, SerializedHeader.class, - SerializedHttpEntity.class, + SerializedEntity.class, SerializedPart.class, SerializerBuilder.class, SerializerGroupBuilder.class, diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java index 21c588b..d3b27d2 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java @@ -13,10 +13,11 @@ package org.apache.juneau.http; import java.io.*; -import java.nio.charset.*; +import java.util.function.*; import org.apache.juneau.http.entity.*; import org.apache.juneau.http.header.*; +import org.apache.juneau.serializer.*; /** * Standard predefined HTTP entities. @@ -24,28 +25,102 @@ import org.apache.juneau.http.header.*; public class HttpEntities { /** -* Creates a new {@link StringEntity} object. +* Creates a new {@link ByteArrayEntity} object. * * -* Assumes {@link ContentType#TEXT_PLAIN TEXT/PLAIN} content type and "UTF-8" encoding. +* Assumes no content type. +* +* @param content The entity content. Can be null. +* @return A new {@link ByteArrayEntity} object. +*/ + public static final ByteArrayEntity byteArrayEntity(byte[] content) { + return ByteArrayEntity.of(content); + } + + /** +* Creates a new {@link ByteArrayEntity} object. +* +* @param content The entity content. Can be null. +* @param contentType The entity content type, or null if not specified. +* @return A new {@link ByteArrayEntity} object. +*/ + public static final ByteArrayEntity byteArrayEntity(byte[] content, ContentType contentType) { + return ByteArrayEntity.of(content, contentType); + } + + /** +* Creates a new {@link FileEntity} object. +* +* +* Assumes no content type. +* +* @param content The entity content. Can be null. +* @return A new {@link FileEntity} object. +*/ + public static final FileEntity fileEntity(File content) { + return FileEntity.of(content); + } + + /** +
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new acf5994 REST refactoring. acf5994 is described below commit acf59946f90ebf9c4b0bfa45258b9f6277a948c1 Author: JamesBognar AuthorDate: Fri Mar 5 13:45:28 2021 -0500 REST refactoring. --- TODO.txt | 1 + .../main/ConfigurablePropertyCodeGenerator.java| 6 +- .../main/java/org/apache/juneau/config/Config.java | 4 +- .../juneau/config/store/ConfigClasspathStore.java | 2 +- .../apache/juneau/jena/RdfSerializerSession.java | 9 +- .../main/java/org/apache/juneau/BeanSession.java | 11 +- .../org/apache/juneau/assertions/Assertions.java | 74 ++- .../java/org/apache/juneau/cp/BasicFileFinder.java | 9 +- .../main/java/org/apache/juneau/cp/LocalFile.java | 5 +- .../apache/juneau/html/HtmlSerializerSession.java | 7 +- .../juneau/http/entity/AbstractHttpEntity.java | 8 +- .../apache/juneau/http/entity/BasicHttpEntity.java | 2 + ...InputStreamEntity.java => ByteArrayEntity.java} | 100 ++- .../{InputStreamEntity.java => FileEntity.java}| 83 ++- .../juneau/http/entity/InputStreamEntity.java | 47 +- .../apache/juneau/http/entity/StringEntity.java| 8 +- .../java/org/apache/juneau/internal/IOUtils.java | 714 +++-- .../apache/juneau/json/JsonSerializerSession.java | 9 +- .../juneau/msgpack/MsgPackSerializerSession.java | 12 +- .../java/org/apache/juneau/parser/ParserPipe.java | 6 +- .../apache/juneau/transforms/InputStreamSwap.java | 9 +- .../org/apache/juneau/transforms/ReaderSwap.java | 5 +- .../apache/juneau/uon/UonSerializerSession.java| 9 +- .../urlencoding/UrlEncodingSerializerSession.java | 10 +- .../java/org/apache/juneau/utils/ManifestFile.java | 3 +- .../apache/juneau/xml/XmlSerializerSession.java| 9 +- .../microservice/resources/DirectoryResource.java | 4 +- .../apache/juneau/rest/test/TestMicroservice.java | 8 +- .../jetty/JettyMicroserviceBuilder.java| 11 +- .../jetty/resources/DebugResource.java | 3 +- .../apache/juneau/rest/client/ResponseBody.java| 17 +- .../org/apache/juneau/rest/client/RestRequest.java | 8 +- .../juneau/rest/mock/MockServletRequest.java | 14 +- .../java/org/apache/juneau/rest/RequestBody.java | 2 +- .../juneau/rest/reshandlers/DefaultHandler.java| 8 +- .../rest/reshandlers/InputStreamHandler.java | 7 +- .../juneau/rest/reshandlers/ReaderHandler.java | 7 +- .../rest/util/CachingHttpServletRequest.java | 6 +- .../apache/juneau/rest/widget/MenuItemWidget.java | 3 +- .../juneau/config/store/ConfigFileStoreTest.java | 9 +- .../http/remote/Remote_BodyAnnotation_Test.java| 11 +- .../http/remote/Remote_CommonInterfaces_Test.java | 8 +- .../remote/Remote_RemoteOpAnnotation_Test.java | 56 +- .../http/remote/Remote_RequestAnnotation_Test.java | 12 +- .../remote/Remote_ResponseAnnotation_Test.java | 6 +- .../juneau/httppart/OpenApiPartParser_Test.java| 14 +- .../apache/juneau/rest/annotation/Body_Test.java | 22 +- .../rest/client/RestClient_Response_Body_Test.java | 10 +- .../transforms/InputStreamBase64SwapTest.java | 2 +- .../juneau/utils/ByteArrayInOutStreamTest.java | 2 +- .../java/org/apache/juneau/utils/IOPipeTest.java | 285 .../java/org/apache/juneau/utils/IOUtilsTest.java | 2 +- 52 files changed, 740 insertions(+), 959 deletions(-) diff --git a/TODO.txt b/TODO.txt index 5d3bc3b..b47edb0 100644 --- a/TODO.txt +++ b/TODO.txt @@ -16,3 +16,4 @@ HttpRuntimeException? Add ExceptionHeader REST query/formdata/path parts should extend from PartGroup class. Eliminate PartSupplier and HeaderSupplier? +Replace ThrowableUtils.assertFieldNotNull() and other methods. diff --git a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java index 7d69922..f79f317 100644 --- a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java +++ b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java @@ -11,6 +11,8 @@ // * specific language governing permissions and limitations under the License. * // *** +import static org.apache.juneau.internal.IOUtils.*; + import java.io.*; import java.lang.reflect.*; import java.lang.reflect.Method; @@ -251,7 +253,7 @@ public class ConfigurablePropertyCodeGenerator { System.err.println("@FluentSetters not present on class " + c.getName()); System.out.pri
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new c22d4ea REST refactoring. c22d4ea is described below commit c22d4ea8b3301af4a2a90f7e7302a532188c3772 Author: JamesBognar AuthorDate: Thu Mar 4 19:54:28 2021 -0500 REST refactoring. --- .../java/org/apache/juneau/http/HttpEntities.java | 58 +- .../juneau/http/entity/AbstractHttpEntity.java | 195 + .../juneau/http/entity/InputStreamEntity.java | 135 ++ .../apache/juneau/http/entity/StringEntity.java| 131 ++ .../org/apache/juneau/http/header/MediaType.java | 59 ++- .../juneau/http/response/BasicHttpException.java | 12 +- .../juneau/http/response/BasicHttpResponse.java| 12 +- .../juneau/http/response/HttpExceptionBuilder.java | 8 +- .../juneau/http/response/HttpResponseBuilder.java | 11 +- .../java/org/apache/juneau/internal/IOUtils.java | 8 + .../org/apache/juneau/rest/client/RestClient.java | 2 - .../org/apache/juneau/rest/client/RestRequest.java | 13 +- .../rest/client/RestClient_BasicCalls_Test.java| 15 +- 13 files changed, 604 insertions(+), 55 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java index 43d30f6..21c588b 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpEntities.java @@ -12,8 +12,64 @@ // *** package org.apache.juneau.http; +import java.io.*; +import java.nio.charset.*; + +import org.apache.juneau.http.entity.*; +import org.apache.juneau.http.header.*; + /** - * Standard predefined HTTP headers. + * Standard predefined HTTP entities. */ public class HttpEntities { + + /** +* Creates a new {@link StringEntity} object. +* +* +* Assumes {@link ContentType#TEXT_PLAIN TEXT/PLAIN} content type and "UTF-8" encoding. +* +* @param content The entity content. Can be null. +* @return A new {@link StringEntity} object. +*/ + public static final StringEntity stringEntity(String content) { + return StringEntity.of(content); + } + + /** +* Creates a new {@link StringEntity} object. +* +* @param content The entity content. Can be null. +* @param contentType The entity content type, or {@link ContentType#TEXT_PLAIN} if not specified. +* @param charset The content character encoding, or "UTF-8" if not specified. +* @return A new {@link StringEntity} object. +*/ + public static final StringEntity stringEntity(String content, ContentType contentType, Charset charset) { + return StringEntity.of(content, contentType, charset); + } + + /** +* Creates a new {@link InputStreamEntity} object. +* +* +* Assumes no content type. +* +* @param content The entity content. Can be null. +* @return A new {@link InputStreamEntity} object. +*/ + public static final InputStreamEntity streamEntity(InputStream content) { + return InputStreamEntity.of(content); + } + + /** +* Creates a new {@link InputStreamEntity} object. +* +* @param content The entity content. Can be null. +* @param contentType The entity content type, or null if not specified. +* @param length The content length, or -1 if not known. +* @return A new {@link InputStreamEntity} object. +*/ + public static final InputStreamEntity streamEntity(InputStream content, long length, ContentType contentType) { + return InputStreamEntity.of(content, length, contentType); + } } diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/AbstractHttpEntity.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/AbstractHttpEntity.java new file mode 100644 index 000..e11ec9c --- /dev/null +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/AbstractHttpEntity.java @@ -0,0 +1,195 @@ +// *** +// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file * +// * distributed with this work for additional information regarding copyright ownership. The AS
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 6d9bc19 REST refactoring. 6d9bc19 is described below commit 6d9bc1997fccc7fee6f6c4d8faecee7bfbaf6d04 Author: JamesBognar AuthorDate: Thu Mar 4 14:54:38 2021 -0500 REST refactoring. --- .../java/org/apache/juneau/http/{ => entity}/BasicHttpResource.java | 3 +-- .../main/java/org/apache/juneau/http/{ => entity}/HttpResource.java | 2 +- .../src/main/java/org/apache/juneau/http/header/Accept.java | 2 +- .../src/main/java/org/apache/juneau/http/header/AcceptCharset.java| 2 +- .../src/main/java/org/apache/juneau/http/header/AcceptEncoding.java | 2 +- .../src/main/java/org/apache/juneau/http/header/AcceptLanguage.java | 2 +- .../src/main/java/org/apache/juneau/http/header/ClientVersion.java| 2 +- .../src/main/java/org/apache/juneau/http/header/Connection.java | 2 +- .../src/main/java/org/apache/juneau/http/{ => header}/Constants.java | 4 ++-- .../main/java/org/apache/juneau/http/header/ContentDisposition.java | 2 +- .../src/main/java/org/apache/juneau/http/header/ContentType.java | 2 +- .../src/main/java/org/apache/juneau/http/header/MediaRanges.java | 2 +- .../src/main/java/org/apache/juneau/http/header/MediaType.java| 2 +- .../src/main/java/org/apache/juneau/http/header/StringRanges.java | 2 +- .../src/main/java/org/apache/juneau/http/header/TE.java | 2 +- .../src/main/java/org/apache/juneau/rest/client/ResponseBody.java | 2 +- .../src/main/java/org/apache/juneau/rest/client/RestClient.java | 1 - .../src/main/java/org/apache/juneau/rest/client/RestRequest.java | 1 - .../org/apache/juneau/rest/springboot/BasicSpringRestServlet.java | 2 +- .../src/main/java/org/apache/juneau/rest}/BasicNamedAttribute.java| 2 +- .../src/main/java/org/apache/juneau/rest/BasicRestObject.java | 2 +- .../src/main/java/org/apache/juneau/rest/BasicRestOperations.java | 2 +- .../src/main/java/org/apache/juneau/rest/BasicRestServlet.java| 2 +- .../src/main/java/org/apache/juneau/rest/BasicStaticFiles.java| 2 +- .../src/main/java/org/apache/juneau/rest}/NamedAttribute.java | 2 +- .../src/main/java/org/apache/juneau/rest}/NamedAttributeList.java | 2 +- .../src/main/java/org/apache/juneau/rest/RequestAttribute.java| 1 - .../src/main/java/org/apache/juneau/rest/RequestAttributes.java | 1 - .../src/main/java/org/apache/juneau/rest/RestContext.java | 1 - .../src/main/java/org/apache/juneau/rest/RestContextBuilder.java | 1 - .../src/main/java/org/apache/juneau/rest/RestOperationContext.java| 1 - .../main/java/org/apache/juneau/rest/RestOperationContextBuilder.java | 1 - .../src/main/java/org/apache/juneau/rest/StaticFiles.java | 2 +- .../main/java/org/apache/juneau/rest/annotation/RestAnnotation.java | 1 - .../java/org/apache/juneau/rest/annotation/RestDeleteAnnotation.java | 1 - .../java/org/apache/juneau/rest/annotation/RestGetAnnotation.java | 1 - .../main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java | 1 - .../java/org/apache/juneau/rest/annotation/RestPostAnnotation.java| 1 - .../java/org/apache/juneau/rest/annotation/RestPutAnnotation.java | 1 - .../src/test/java/org/apache/juneau/http/BasicHttpResource_Test.java | 3 ++- .../test/java/org/apache/juneau/http/{ => header}/Constants_Test.java | 2 +- .../org/apache/juneau/http/remote/Remote_CommonInterfaces_Test.java | 2 +- .../src/test/java/org/apache/juneau/rest/RestOp_Returns_Test.java | 2 +- .../org/apache/juneau/rest/client/RestClient_BasicCalls_Test.java | 2 +- .../test/java/org/apache/juneau/rest/client/RestClient_Body_Test.java | 1 - 45 files changed, 32 insertions(+), 47 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHttpResource.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/BasicHttpResource.java similarity index 99% rename from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHttpResource.java rename to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/BasicHttpResource.java index 0bd98ef..33ee3c6 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHttpResource.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/entity/BasicHttpResource.java @@ -10,7 +10,7 @@ // * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the* // * specific language governing permissions and limitati
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new e68fae5 REST refactoring. e68fae5 is described below commit e68fae5500ca5acc9356b3f37fb27a019b589671 Author: JamesBognar AuthorDate: Thu Mar 4 14:38:43 2021 -0500 REST refactoring. --- .../java/org/apache/juneau/http/HttpParts.java | 42 ++ .../rest/test/client/ThirdPartyProxyTest.java | 5 +-- .../org/apache/juneau/rest/client/RestClient.java | 3 +- .../java/org/apache/juneau/http/PartList_Test.java | 8 ++--- .../http/remote/Remote_BodyAnnotation_Test.java| 7 ++-- .../remote/Remote_FormDataAnnotation_Test.java | 2 +- .../http/remote/Remote_PathAnnotation_Test.java| 2 +- .../http/remote/Remote_QueryAnnotation_Test.java | 2 +- .../rest/client/RestClient_BasicCalls_Test.java| 2 +- .../rest/client/RestClient_FormData_Test.java | 2 +- .../juneau/rest/client/RestClient_Paths_Test.java | 2 +- .../juneau/rest/client/RestClient_Query_Test.java | 2 +- 12 files changed, 62 insertions(+), 17 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpParts.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpParts.java index 09cd078..d9e61a6 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpParts.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpParts.java @@ -358,4 +358,46 @@ public class HttpParts { public static final SerializedPart serializedPart(String name, Supplier value) { return SerializedPart.of(name, value); } + + /** +* Instantiates a new {@link PartListBuilder}. +* +* @return A new empty builder. +*/ + public static final PartListBuilder partListBuilder() { + return PartList.create(); + } + + /** +* Creates a new {@link PartList} initialized with the specified parts. +* +* @param parts The parts to add to the list. Can be null. null entries are ignored. +* @return A new unmodifiable instance, never null. +*/ + public static final PartList partList(List parts) { + return PartList.of(parts); + } + + /** +* Creates a new {@link PartList} initialized with the specified parts. +* +* @param parts The parts to add to the list. null entries are ignored. +* @return A new unmodifiable instance, never null. +*/ + public static final PartList partList(Part...parts) { + return PartList.of(parts); + } + + /** +* Creates a new {@link PartList} initialized with the specified name/value pairs. +* +* @param pairs +* Initial list of pairs. +* Must be an even number of parameters representing key/value pairs. +* @throws RuntimeException If odd number of parameters were specified. +* @return A new instance. +*/ + public static PartList partList(Object...pairs) { + return PartList.ofPairs(pairs); + } } diff --git a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java index 9cd8096..f412d33 100644 --- a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java +++ b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java @@ -18,6 +18,7 @@ import static org.junit.Assert.*; import static org.junit.Assert.assertEquals; import static org.junit.runners.MethodSorters.*; import static org.apache.juneau.http.HttpHeaders.*; +import static org.apache.juneau.http.HttpParts.*; import java.util.*; import java.util.concurrent.atomic.*; @@ -376,7 +377,7 @@ public class ThirdPartyProxyTest extends RestTestcase { @Test public void b12_partListQuery() throws Exception { String r = proxy.partListQuery( - PartList.ofPairs("a","foo","b","","c",null) + partList("a","foo","b","","c",null) ); assertEquals("OK", r); } @@ -505,7 +506,7 @@ public class ThirdPartyProxyTest extends RestTestcase { @Test public void c10_partListFormData() throws Exception { String r = proxy.partListFormData( - PartList.ofPairs("a","foo",&q
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new e8018c0 REST refactoring. e8018c0 is described below commit e8018c071b26da45686e0f087f0fda8831015814 Author: JamesBognar AuthorDate: Thu Mar 4 14:30:27 2021 -0500 REST refactoring. --- .../java/org/apache/juneau/http/part/PartList.java | 98 ++- .../apache/juneau/http/part/PartListBuilder.java | 209 +++--- .../org/apache/juneau/http/part/PartSupplier.java | 305 - .../rest/test/client/ThirdPartyProxyResource.java | 8 +- .../rest/test/client/ThirdPartyProxyTest.java | 24 +- .../org/apache/juneau/rest/client/RestClient.java | 34 +-- .../juneau/rest/client/RestClientBuilder.java | 8 +- .../org/apache/juneau/rest/client/RestRequest.java | 56 ++-- .../{PartSupplier_Test.java => PartList_Test.java} | 62 ++--- .../http/remote/Remote_BodyAnnotation_Test.java| 12 +- .../remote/Remote_FormDataAnnotation_Test.java | 20 +- .../http/remote/Remote_PathAnnotation_Test.java| 20 +- .../http/remote/Remote_QueryAnnotation_Test.java | 24 +- .../rest/client/RestClient_BasicCalls_Test.java| 12 +- .../rest/client/RestClient_FormData_Test.java | 4 +- .../juneau/rest/client/RestClient_Paths_Test.java | 4 +- .../juneau/rest/client/RestClient_Query_Test.java | 4 +- 17 files changed, 402 insertions(+), 502 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/PartList.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/PartList.java index fc8a473..342d4e6 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/PartList.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/PartList.java @@ -13,14 +13,21 @@ package org.apache.juneau.http.part; import static java.util.Collections.*; +import static org.apache.juneau.internal.StringUtils.*; +import static java.util.Arrays.*; import java.util.*; +import org.apache.juneau.*; + /** * An unmodifiable list of HTTP parts. */ public class PartList implements Iterable { + /** Represents no part supplier in annotations. */ + public static final class Null extends PartList {} + /** Predefined instance. */ public static final PartList EMPTY = create().build(); @@ -36,6 +43,46 @@ public class PartList implements Iterable { } /** +* Creates a new {@link PartList} initialized with the specified parts. +* +* @param parts The parts to add to the list. Can be null. null entries are ignored. +* @return A new unmodifiable instance, never null. +*/ + public static PartList of(List parts) { + return parts == null || parts.isEmpty() ? EMPTY : new PartList(parts); + } + + /** +* Creates a new {@link PartList} initialized with the specified parts. +* +* @param parts The parts to add to the list. null entries are ignored. +* @return A new unmodifiable instance, never null. +*/ + public static PartList of(Part...parts) { + return parts == null || parts.length == 0 ? EMPTY : new PartList(asList(parts)); + } + + /** +* Creates a new {@link PartList} initialized with the specified name/value pairs. +* +* @param pairs +* Initial list of pairs. +* Must be an even number of parameters representing key/value pairs. +* @throws RuntimeException If odd number of parameters were specified. +* @return A new instance. +*/ + public static PartList ofPairs(Object...pairs) { + if (pairs.length == 0) + return EMPTY; + if (pairs.length % 2 != 0) + throw new BasicRuntimeException("Odd number of parameters passed into PartList.ofPairs()"); + PartListBuilder b = create(); + for (int i = 0; i < pairs.length; i+=2) + b.add(stringify(pairs[i]), pairs[i+1]); + return new PartList(b); + } + + /** * Constructor. * * @param builder The builder containing the settings for this bean. @@ -45,6 +92,32 @@ public class PartList implements Iterable { } /** +* Constructor. +* +* @param parts The initial list of parts. null entries are ignored. +*/ + protected PartList(List parts) { + if (parts == null || parts.isEmpty()) + this.parts = emptyList(); + else { + List l = new ArrayList<>(); + for (int i =
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 85d641c REST refactoring. 85d641c is described below commit 85d641c3fc5ad992f07844affc4d128a3d01c270 Author: JamesBognar AuthorDate: Thu Mar 4 13:46:41 2021 -0500 REST refactoring. --- .../org/apache/juneau/http/header/HeaderList.java | 2 +- .../rest/test/client/ThirdPartyProxyResource.java | 313 ++--- .../rest/test/client/ThirdPartyProxyTest.java | 11 +- .../org/apache/juneau/http/HeaderList_Test.java| 10 +- .../http/remote/Remote_HeaderAnnotation_Test.java | 2 +- 5 files changed, 169 insertions(+), 169 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java index 153e0a8..c05d086 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java @@ -103,7 +103,7 @@ public class HeaderList implements Iterable { * * @param headers The initial list of headers. null entries are ignored. */ - public HeaderList(List headers) { + protected HeaderList(List headers) { if (headers == null || headers.isEmpty()) this.headers = emptyList(); else { diff --git a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyResource.java b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyResource.java index 4f437d3..28ee2ae 100644 --- a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyResource.java +++ b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyResource.java @@ -15,7 +15,6 @@ package org.apache.juneau.rest.test.client; import static java.util.Arrays.*; import static org.junit.Assert.*; import static org.apache.juneau.assertions.Assertions.*; -import static org.apache.juneau.http.HttpMethod.*; import static org.apache.juneau.testutils.Constants.*; import java.io.*; @@ -101,7 +100,7 @@ public class ThirdPartyProxyResource extends BasicRestServletJena { // Header tests //- - @RestOp(method=GET, path="/primitiveHeaders") + @RestGet(path="/primitiveHeaders") public String primitiveHeaders( @Header("a") String a, @Header("an") String an, @@ -124,7 +123,7 @@ public class ThirdPartyProxyResource extends BasicRestServletJena { return "OK"; } - @RestOp(method=GET, path="/primitiveCollectionHeaders") + @RestGet(path="/primitiveCollectionHeaders") public String primitiveCollectionHeaders( @Header("a") int[][][] a, @Header("b") Integer[][][] b, @@ -153,7 +152,7 @@ public class ThirdPartyProxyResource extends BasicRestServletJena { return "OK"; } - @RestOp(method=GET, path="/beanHeaders") + @RestGet(path="/beanHeaders") public String beanHeaders( @Header(name="a",cf="uon") ABean a, @Header(name="an",cf="uon") ABean an, @@ -186,7 +185,7 @@ public class ThirdPartyProxyResource extends BasicRestServletJena { return "OK"; } - @RestOp(method=GET, path="/typedBeanHeaders") + @RestGet(path="/typedBeanHeaders") public String typedBeanHeaders( @Header(n="a",cf="uon") TypedBean a, @Header(n="an",cf="uon") TypedBean an, @@ -222,7 +221,7 @@ public class ThirdPartyProxyResource extends BasicRestServletJena { return "OK"; } - @RestOp(method=GET, path="/swappedPojoHeaders") + @RestGet(path="/swappedPojoHeaders") public String swappedPojoHeaders( @Header(n="a",cf="uon") SwappedPojo a, @Header(n="b",cf="uon") SwappedPojo[][][] b, @@ -245,7 +244,7 @@ public class ThirdPartyProxyResource extends BasicRestServletJena { return "OK"; } -
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 852a97c REST refactoring. 852a97c is described below commit 852a97c7d611b24c2ba52ca036f99dbae71fe738 Author: JamesBognar AuthorDate: Thu Mar 4 13:36:32 2021 -0500 REST refactoring. --- .../java/org/apache/juneau/http/HttpHeaders.java | 42 +++ .../org/apache/juneau/http/header/HeaderList.java | 79 +- .../juneau/http/header/HeaderListBuilder.java | 134 +- .../apache/juneau/http/header/HeaderSupplier.java | 292 - .../java/org/apache/juneau/http/remote/Remote.java | 6 +- .../rest/test/client/ThirdPartyProxyTest.java | 4 +- .../org/apache/juneau/rest/client/RestClient.java | 9 +- .../juneau/rest/client/RestClientBuilder.java | 4 +- .../org/apache/juneau/rest/client/RestRequest.java | 16 +- .../juneau/rest/client/remote/RemoteMeta.java | 17 +- ...aderSupplier_Test.java => HeaderList_Test.java} | 59 ++--- .../http/remote/Remote_HeaderAnnotation_Test.java | 20 +- .../org/apache/juneau/http/remote/Remote_Test.java | 15 +- .../rest/client/RestClient_Headers_Test.java | 2 +- 14 files changed, 326 insertions(+), 373 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java index 289a2bf..2c3cc5a 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java @@ -3133,4 +3133,46 @@ public class HttpHeaders { public static final BasicUriHeader uriHeader(String name, Supplier value) { return BasicUriHeader.of(name, value); } + + /** +* Instantiates a new {@link HeaderListBuilder}. +* +* @return A new empty builder. +*/ + public static final HeaderListBuilder headerListBuilder() { + return HeaderList.create(); + } + + /** +* Creates a new {@link HeaderList} initialized with the specified headers. +* +* @param headers The headers to add to the list. Can be null. null entries are ignored. +* @return A new unmodifiable instance, never null. +*/ + public static final HeaderList headerList(List headers) { + return HeaderList.of(headers); + } + + /** +* Creates a new {@link HeaderList} initialized with the specified headers. +* +* @param headers The headers to add to the list. null entries are ignored. +* @return A new unmodifiable instance, never null. +*/ + public static final HeaderList headerList(Header...headers) { + return HeaderList.of(headers); + } + + /** +* Creates a new {@link HeaderList} initialized with the specified name/value pairs. +* +* @param pairs +* Initial list of pairs. +* Must be an even number of parameters representing key/value pairs. +* @throws RuntimeException If odd number of parameters were specified. +* @return A new instance. +*/ + public static HeaderList headerList(Object...pairs) { + return HeaderList.ofPairs(pairs); + } } diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java index 97b6d81..153e0a8 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java @@ -13,12 +13,16 @@ package org.apache.juneau.http.header; import static java.util.Collections.*; +import static org.apache.juneau.internal.StringUtils.*; +import static java.util.Arrays.*; + import java.util.*; import org.apache.http.*; import org.apache.http.message.*; import org.apache.http.message.BasicHeader; import org.apache.http.util.*; +import org.apache.juneau.*; /** * An unmodifiable list of HTTP headers. @@ -28,8 +32,11 @@ import org.apache.http.util.*; */ public class HeaderList implements Iterable { + /** Represents no header supplier in annotations. */ + public static final class Null extends HeaderList {} + /** Predefined instance. */ - public static final HeaderList EMPTY = create().build(); + public static final HeaderList EMPTY = new HeaderList(); private final List headers; @@ -43,12 +50,78 @@ public class HeaderList implements Iterable { } /** +* Creates a new {@link HeaderList} initiali
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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 +- .../java/org/apache
[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-core/juneau-marshall/src/main/java/org/apa
[juneau] branch master updated: Look for createConfig() method on REST classes.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new a5f0224 Look for createConfig() method on REST classes. a5f0224 is described below commit a5f0224381de30c98bef940f0dd532c897a777f9 Author: JamesBognar AuthorDate: Tue Feb 23 11:53:58 2021 -0500 Look for createConfig() method on REST classes. --- TODO.txt | 5 - .../main/java/org/apache/juneau/rest/RestContextBuilder.java | 11 ++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/TODO.txt b/TODO.txt index a07a6b4..bc99b12 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,12 +1,7 @@ -Replace @Rest(paths) with just @Rest(path) ClassInfo improvements to getMethod (e.g. getMethodExact vs getMethod).Re-add @PathRemainder annotation. -Add a createConfig() method on RestContext. Thrown NotFound causes - javax.servlet.ServletException: Invalid method response: 200 -Instead of PropertyStores, builders should produce settings which are passed to contexts. - Replace @Bean(findFluentSetters) with @FluentSetters. -Remove @BeanIgnore annotations from classes. HttpResponse should use list of Headers and have a headers(Header...) method. HttpResponse should allow you to set code. HttpException subclasses can set status, but does it use code? diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java index da5f92d..58baa52 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java @@ -238,6 +238,15 @@ public class RestContextBuilder extends BeanContextBuilder implements ServletCon Object o = resource == null ? null : resource.get(); if (o instanceof Config) x = (Config)o; + + if (x == null) { + x = BeanStore + .of(beanStore) + .beanCreateMethodFinder(Config.class, resourceClass) + .find("createConfig") + .run(); + } + if (x == null) x = beanStore.getBean(Config.class).orElse(null); @@ -249,7 +258,7 @@ public class RestContextBuilder extends BeanContextBuilder implements ServletCon VarResolver vr = beanStore.getBean(VarResolver.class).orElseThrow(()->new RuntimeException("VarResolver not found.")); String cf = vr.resolve(configPath); - if ("SYSTEM_DEFAULT".equals(cf)) + if (x == null && "SYSTEM_DEFAULT".equals(cf)) x = Config.getSystemDefault(); if (x == null) {
[juneau] branch master updated: Assertions should display to stderr by default.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new afde3b9 Assertions should display to stderr by default. afde3b9 is described below commit afde3b9fafa5f8c97ad23c6e8ed67e74303b4fc8 Author: JamesBognar AuthorDate: Tue Feb 23 10:09:19 2021 -0500 Assertions should display to stderr by default. --- TODO.txt | 2 +- .../apache/juneau/assertions/ArrayAssertion.java | 12 ++-- .../org/apache/juneau/assertions/Assertion.java| 33 ++ .../apache/juneau/assertions/BeanAssertion.java| 12 ++-- .../apache/juneau/assertions/BooleanAssertion.java | 12 ++-- .../juneau/assertions/ByteArrayAssertion.java | 12 ++-- .../juneau/assertions/CollectionAssertion.java | 11 ++-- .../juneau/assertions/ComparableAssertion.java | 12 ++-- .../apache/juneau/assertions/DateAssertion.java| 11 ++-- .../juneau/assertions/FluentArrayAssertion.java| 11 ++-- .../apache/juneau/assertions/FluentAssertion.java | 12 ++-- .../juneau/assertions/FluentBaseAssertion.java | 11 ++-- .../juneau/assertions/FluentBeanAssertion.java | 12 ++-- .../juneau/assertions/FluentBooleanAssertion.java | 12 ++-- .../assertions/FluentByteArrayAssertion.java | 11 ++-- .../assertions/FluentCollectionAssertion.java | 11 ++-- .../assertions/FluentComparableAssertion.java | 12 ++-- .../juneau/assertions/FluentDateAssertion.java | 11 ++-- .../juneau/assertions/FluentIntegerAssertion.java | 12 ++-- .../juneau/assertions/FluentListAssertion.java | 11 ++-- .../juneau/assertions/FluentLongAssertion.java | 12 ++-- .../juneau/assertions/FluentMapAssertion.java | 11 ++-- .../juneau/assertions/FluentObjectAssertion.java | 11 ++-- .../juneau/assertions/FluentStringAssertion.java | 11 ++-- .../assertions/FluentThrowableAssertion.java | 12 ++-- .../assertions/FluentZonedDateTimeAssertion.java | 11 ++-- .../apache/juneau/assertions/IntegerAssertion.java | 12 ++-- .../apache/juneau/assertions/ListAssertion.java| 11 ++-- .../apache/juneau/assertions/LongAssertion.java| 12 ++-- .../org/apache/juneau/assertions/MapAssertion.java | 11 ++-- .../apache/juneau/assertions/ObjectAssertion.java | 12 ++-- .../apache/juneau/assertions/StringAssertion.java | 12 ++-- .../juneau/assertions/ThrowableAssertion.java | 12 ++-- .../juneau/assertions/ZonedDateTimeAssertion.java | 11 ++-- .../assertion/FluentResponseBodyAssertion.java | 11 ++-- .../assertion/FluentResponseHeaderAssertion.java | 12 ++-- .../assertions/FluentProtocolVersionAssertion.java | 12 ++-- .../assertions/FluentRequestBodyAssertion.java | 10 +-- .../FluentRequestFormParamAssertion.java | 12 ++-- .../assertions/FluentRequestHeaderAssertion.java | 12 ++-- .../assertions/FluentRequestLineAssertion.java | 12 ++-- .../FluentRequestQueryParamAssertion.java | 12 ++-- .../java/org/apache/juneau/PojoExamplesTest.java | 2 +- .../juneau/assertions/ArrayAssertion_Test.java | 2 +- .../apache/juneau/assertions/Assertions_Test.java | 4 +-- .../juneau/assertions/BeanAssertion_Test.java | 2 +- .../juneau/assertions/BooleanAssertion_Test.java | 2 +- .../juneau/assertions/ByteArrayAssertion_Test.java | 2 +- .../assertions/CollectionAssertion_Test.java | 2 +- .../assertions/ComparableAssertion_Test.java | 2 +- .../juneau/assertions/DateAssertion_Test.java | 2 +- .../juneau/assertions/IntegerAssertion_Test.java | 2 +- .../juneau/assertions/ListAssertion_Test.java | 2 +- .../juneau/assertions/LongAssertion_Test.java | 2 +- .../juneau/assertions/MapAssertion_Test.java | 6 ++-- .../juneau/assertions/ObjectAssertion_Test.java| 18 ++-- .../juneau/assertions/StringAssertion_Test.java| 28 +- .../juneau/assertions/ThrowableAssertion_Test.java | 2 +- .../assertions/ZonedDateTimeAssertion_Test.java| 2 +- .../java/org/apache/juneau/cp/BeanStore_Test.java | 24 .../apache/juneau/http/HeaderSupplier_Test.java| 2 +- .../juneau/http/NameValuePairSupplier_Test.java| 2 +- .../apache/juneau/http/header/RetryAfter_Test.java | 2 +- .../org/apache/juneau/mstat/ThrownStore_Test.java | 8 +++--- .../rest/annotation/RestAnnotation_Test.java | 2 +- .../juneau/rest/annotation/Rest_Messages_Test.java | 4 +-- .../rest/client/RestClient_Logging_Test.java | 4 +-- 67 files changed, 469 insertions(+), 158 deletions(-) diff --git a/TODO.txt b/TODO.txt index 6dd1bce..a07a6b4 100644 --- a/TODO.txt +++ b/TODO.txt @@ -13,4
[juneau] branch master updated: Clean up unnecessary @BeanIgnore annotations.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 5b4ebb4 Clean up unnecessary @BeanIgnore annotations. 5b4ebb4 is described below commit 5b4ebb47fcfb37d29a598d1439805fb0acf10db9 Author: JamesBognar AuthorDate: Tue Feb 23 09:39:41 2021 -0500 Clean up unnecessary @BeanIgnore annotations. --- TODO.txt | 3 ++ .../apache/juneau/config/event/ConfigEvent.java| 2 - .../apache/juneau/dto/jsonschema/JsonSchema.java | 10 .../src/main/java/org/apache/juneau/BeanMeta.java | 1 - .../java/org/apache/juneau/BeanPropertyMeta.java | 1 - .../src/main/java/org/apache/juneau/ClassMeta.java | 4 +- .../src/main/java/org/apache/juneau/Context.java | 1 - .../java/org/apache/juneau/http/BasicHeader.java | 2 +- .../org/apache/juneau/http/BasicHttpEntity.java| 2 + .../org/apache/juneau/http/BasicNameValuePair.java | 2 +- .../apache/juneau/http/BasicNamedAttribute.java| 2 + .../java/org/apache/juneau/http/MediaRange.java| 2 - .../juneau/http/exception/HttpException.java | 2 +- .../apache/juneau/http/header/BasicDateHeader.java | 2 - .../org/apache/juneau/http/header/ContentType.java | 2 - .../org/apache/juneau/http/response/Found.java | 2 - .../apache/juneau/http/response/HttpResponse.java | 2 +- .../juneau/http/response/MovedPermanently.java | 2 - .../juneau/http/response/PermanentRedirect.java| 2 - .../org/apache/juneau/http/response/SeeOther.java | 2 - .../juneau/http/response/TemporaryRedirect.java| 2 - .../java/org/apache/juneau/reflect/ClassInfo.java | 1 - .../org/apache/juneau/reflect/ConstructorInfo.java | 2 - .../java/org/apache/juneau/reflect/FieldInfo.java | 2 - .../java/org/apache/juneau/reflect/MethodInfo.java | 1 - .../java/org/apache/juneau/reflect/ParamInfo.java | 3 +- .../java/org/apache/juneau/transform/PojoSwap.java | 1 - .../org/apache/juneau/rest/RequestPathParams.java | 2 - .../java/org/apache/juneau/rest/RestContext.java | 4 -- .../apache/juneau/rest/util/UrlPathMatcher.java| 2 - .../java/org/apache/juneau/PojoExamplesTest.java | 2 +- .../juneau/config/ConfigMapListenerTest.java | 62 +++--- 32 files changed, 45 insertions(+), 87 deletions(-) diff --git a/TODO.txt b/TODO.txt index 5051df9..6dd1bce 100644 --- a/TODO.txt +++ b/TODO.txt @@ -11,3 +11,6 @@ HttpResponse should use list of Headers and have a headers(Header...) method. HttpResponse should allow you to set code. HttpException subclasses can set status, but does it use code? HttpException should use list of Headers and have a headers(Header...) method. + +JsonSchema should have fluent getters and setters. +Assertions should display to stderr by default. diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvent.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvent.java index 22ecee9..3acfc7b 100644 --- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvent.java +++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvent.java @@ -17,13 +17,11 @@ import static org.apache.juneau.config.event.ConfigEventType.*; import java.util.*; -import org.apache.juneau.annotation.*; import org.apache.juneau.internal.*; /** * Represents a change to a config. */ -@BeanIgnore public class ConfigEvent { private final ConfigEventType type; diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/JsonSchema.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/JsonSchema.java index 1fbf719..e323c9e 100644 --- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/JsonSchema.java +++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/JsonSchema.java @@ -95,7 +95,6 @@ public class JsonSchema { * * @return The value of the name property on this bean, or null if it is not set. */ - @BeanIgnore public String getName() { return name; } @@ -106,7 +105,6 @@ public class JsonSchema { * @param name The new value for the name property on this bean. * @return This object (for method chaining). */ - @BeanIgnore public JsonSchema setName(String name) { this.name = name; return this; @@ -231,7 +229,6 @@ public class JsonSchema { * @return * The currently set value, or null if the property is not set, or is set as a {@link JsonTypeArray}. */ - @BeanIgnore public JsonType getTypeAsJsonType() { return typeJsonType; } @@ -244,7 +241,6
[juneau] branch master updated: Assertion.assertNotNull methods should be generic.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 786bf27 Assertion.assertNotNull methods should be generic. 786bf27 is described below commit 786bf272666dac7afb8b1c941f1c54f3ae9098b3 Author: JamesBognar AuthorDate: Tue Feb 23 08:59:59 2021 -0500 Assertion.assertNotNull methods should be generic. --- TODO.txt| 13 + .../main/java/org/apache/juneau/assertions/Assertion.java | 4 ++-- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/TODO.txt b/TODO.txt index 1f4543a..5051df9 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,13 +1,5 @@ -RestCall.exception(...) should accumulate exceptions, not just one. -Replace RestInfoProvider with Swagger. -xxx Rework RestCallLogger. -xxx @Rest(path) should allow you to match against file name (e.g. "favicon.ico") Replace @Rest(paths) with just @Rest(path) -Auto-injection into REST interfaces (via providers?) -ClassInfo improvements to getMethod (e.g. getMethodExact vs getMethod). -Re-add @PathRemainder annotation. -xxx Replace RestResourceResolver with ObjectFactory (or something already predefined?). -xxx Remove @Rest(properties) and all that stuff. +ClassInfo improvements to getMethod (e.g. getMethodExact vs getMethod).Re-add @PathRemainder annotation. Add a createConfig() method on RestContext. Thrown NotFound causes - javax.servlet.ServletException: Invalid method response: 200 @@ -17,8 +9,5 @@ Replace @Bean(findFluentSetters) with @FluentSetters. Remove @BeanIgnore annotations from classes. HttpResponse should use list of Headers and have a headers(Header...) method. HttpResponse should allow you to set code. -Assertion.assertNotNull methods should be generic? HttpException subclasses can set status, but does it use code? HttpException should use list of Headers and have a headers(Header...) method. -Add Named bean support by looking for @Named annotations. -Rename BeanFactory to BeanStore. \ No newline at end of file diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java index ae19473..f05aeb1 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java @@ -149,7 +149,7 @@ public class Assertion { * @param args The message arguments. * @return The value. */ - protected Object assertNotNull(Object value, String msg, Object...args) { + protected T assertNotNull(T value, String msg, Object...args) { if (value == null) throw new BasicAssertionError(format(msg, args)); return value; @@ -162,7 +162,7 @@ public class Assertion { * @param value The value to check. * @return The value. */ - protected Object assertNotNull(String parameter, Object value) { + protected T assertNotNull(String parameter, T value) { return assertNotNull(value, "Parameter ''{0}'' cannot be null.", parameter); }
[juneau] branch master updated: Add support for named beans in BeanStore.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new d7cd102 Add support for named beans in BeanStore. d7cd102 is described below commit d7cd1024e967e23720ddf6b227ba9be3a7c92930 Author: JamesBognar AuthorDate: Mon Feb 22 19:43:01 2021 -0500 Add support for named beans in BeanStore. --- .../apache/juneau/cp/BeanCreateMethodFinder.java | 4 +- .../main/java/org/apache/juneau/cp/BeanStore.java | 124 ++--- .../org/apache/juneau/utils/MethodInvoker.java | 4 +- .../juneau/rest/springboot/SpringBeanStore.java| 9 +- .../org/apache/juneau/rest/RestContextBuilder.java | 6 +- .../{BeanFactory_Test.java => BeanStore_Test.java} | 73 ++-- 6 files changed, 163 insertions(+), 57 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreateMethodFinder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreateMethodFinder.java index 138b52b..d52596f 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreateMethodFinder.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreateMethodFinder.java @@ -76,10 +76,10 @@ public class BeanCreateMethodFinder { ClassInfo ci = ClassInfo.of(resource); for (MethodInfo m : ci.getPublicMethods()) { if (m.isAll(NOT_DEPRECATED) && m.hasReturnType(beanType) && m.getSimpleName().equals(methodName) && (!m.hasAnnotation(BeanIgnore.class))) { - List missing = beanStore.getMissingParamTypes(m.getParamTypes()); + List missing = beanStore.getMissingParamTypes(m.getParams()); if (missing.isEmpty() && m.hasAllArgs(requiredParams)) { this.method = m; - this.args = beanStore.getParams(m.getParamTypes()); + this.args = beanStore.getParams(m.getParams()); } } } diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java index 16e2af5..dc564e1 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java @@ -15,6 +15,7 @@ package org.apache.juneau.cp; import static org.apache.juneau.internal.StringUtils.*; import static org.apache.juneau.reflect.ReflectFlags.*; +import java.lang.annotation.*; import java.util.*; import java.util.concurrent.*; import java.util.function.*; @@ -28,7 +29,7 @@ import org.apache.juneau.reflect.*; /** * Java bean store. - * + * * * Used for bean injection. */ @@ -39,7 +40,7 @@ public class BeanStore { */ public static final class Null extends BeanStore {} - private final Map,Supplier> beanMap = new ConcurrentHashMap<>(); + private final Map> beanMap = new ConcurrentHashMap<>(); private final Optional parent; private final Optional outer; @@ -92,17 +93,19 @@ public class BeanStore { } /** -* Returns the bean of the specified type. +* Returns the named bean of the specified type. * * @param The type of bean to return. * @param c The type of bean to return. +* @param name The bean name. * @return The bean. */ @SuppressWarnings("unchecked") - public Optional getBean(Class c) { - Supplier o = beanMap.get(c); + public Optional getBean(String name, Class c) { + String key = name == null ? c.getName() : name; + Supplier o = beanMap.get(key); if (o == null && parent.isPresent()) - return parent.get().getBean(c); + return parent.get().getBean(name, c); T t = (T)(o == null ? null : o.get()); return Optional.ofNullable(t); } @@ -110,11 +113,12 @@ public class BeanStore { /** * Returns the bean of the specified type. * +* @param The type of bean to return. * @param c The type of bean to return. * @return The bean. */ - public Optional getBean(ClassInfo c) { - return getBean(c.inner()); + public Optional getBean(Class c) { + return getBean(c.getName(), c); }
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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); }
[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 t
[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] 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. -
[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 Optional#empty
[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
[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 b/juneau-examples/juneau-examples-rest/src/main/java/org/apache
[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(
[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() { +
[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 Stat
[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.as
[juneau] branch master updated: Fluent assertion improvements.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 106a9a0 Fluent assertion improvements. 106a9a0 is described below commit 106a9a0c80f998585f9aaa25022188f58d49d9ef Author: JamesBognar AuthorDate: Tue Feb 16 17:35:56 2021 -0500 Fluent assertion improvements. --- .../org/apache/juneau/assertions/Assertions.java | 37 + .../apache/juneau/assertions/BeanAssertion.java| 16 .../juneau/assertions/FluentArrayAssertion.java| 22 ++- .../juneau/assertions/FluentBaseAssertion.java | 17 .../juneau/assertions/FluentBeanAssertion.java | 43 +++- .../juneau/assertions/FluentListAssertion.java | 22 ++- .../juneau/assertions/FluentMapAssertion.java | 28 - .../juneau/assertions/FluentObjectAssertion.java | 15 +++ .../assertions/FluentThrowableAssertion.java | 46 -- .../apache/juneau/assertions/ObjectAssertion.java | 18 + .../juneau/assertions/ThrowableAssertion.java | 18 + .../apache/juneau/http/BasicNamedAttribute.java| 2 +- .../apache/juneau/rest/client/ResponseBody.java| 2 +- .../apache/juneau/rest/client/RestResponse.java| 2 +- .../rest/logging/BasicTestCaptureRestLogger.java | 4 +- .../juneau/assertions/ObjectAssertion_Test.java| 4 +- .../juneau/assertions/ThrowableAssertion_Test.java | 7 ++-- .../client/RestClient_Response_Headers_Test.java | 1 - 18 files changed, 211 insertions(+), 93 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertions.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertions.java index 9e26969..8daac05 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertions.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertions.java @@ -184,7 +184,7 @@ public class Assertions { * @param value The object being wrapped. * @return A new {@link ObjectAssertion} object. Never null. */ - public static ObjectAssertion assertObject(Object value) { + public static ObjectAssertion assertObject(V value) { return ObjectAssertion.create(value); } @@ -200,7 +200,7 @@ public class Assertions { * @param value The object being wrapped. * @return A new {@link ObjectAssertion} object. Never null. */ - public static ObjectAssertion assertObject(Optional value) { + public static ObjectAssertion assertObject(Optional value) { assertArgNotNull("value", value); return assertObject(value.orElse(null)); } @@ -217,7 +217,7 @@ public class Assertions { * @param value The object being wrapped. * @return A new {@link BeanAssertion} object. Never null. */ - public static BeanAssertion assertBean(Object value) { + public static BeanAssertion assertBean(V value) { return BeanAssertion.create(value); } @@ -233,7 +233,7 @@ public class Assertions { * @param value The object being wrapped. * @return A new {@link BeanAssertion} object. Never null. */ - public static BeanAssertion assertBean(Optional value) { + public static BeanAssertion assertBean(Optional value) { assertArgNotNull("value", value); return assertBean(value.orElse(null)); } @@ -316,7 +316,7 @@ public class Assertions { * @param value The throwable being wrapped. * @return A new {@link ThrowableAssertion} object. Never null. */ - public static ThrowableAssertion assertThrowable(Throwable value) { + public static ThrowableAssertion assertThrowable(V value) { return ThrowableAssertion.create(value); } @@ -400,11 +400,34 @@ public class Assertions { * @param snippet The snippet of code to execute. * @return A new assertion object. Never null. */ - public static ThrowableAssertion assertThrown(Snippet snippet) { + public static ThrowableAssertion assertThrown(Snippet snippet) { + return assertThrown(Throwable.class, snippet); + } + + /** +* Executes an arbitrary snippet of code and captures anything thrown from it. +* +* Example: +* +* // Asserts that the specified method throws a RuntimeException containing "Foobar" in the message. +* assertThrown(()-foo.getBar()) +* .exists() +* .isType(RuntimeException.class) +*
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new ffb7dbc REST refactoring. ffb7dbc is described below commit ffb7dbc613b70a9d947c2978472d2a8a214d1e6f Author: JamesBognar AuthorDate: Tue Feb 16 13:36:40 2021 -0500 REST refactoring. --- .../juneau/assertions/ComparableAssertion.java | 2 +- .../juneau/assertions/FluentArrayAssertion.java| 2 +- ...jectAssertion.java => FluentBaseAssertion.java} | 140 +--- .../juneau/assertions/FluentBeanAssertion.java | 2 +- .../juneau/assertions/FluentBooleanAssertion.java | 2 +- .../assertions/FluentCollectionAssertion.java | 2 +- .../assertions/FluentComparableAssertion.java | 16 +- .../juneau/assertions/FluentDateAssertion.java | 2 +- .../juneau/assertions/FluentIntegerAssertion.java | 2 +- .../juneau/assertions/FluentLongAssertion.java | 3 +- .../juneau/assertions/FluentMapAssertion.java | 2 +- .../juneau/assertions/FluentObjectAssertion.java | 387 + .../juneau/assertions/FluentStringAssertion.java | 2 +- .../assertions/FluentThrowableAssertion.java | 39 +-- .../assertions/FluentZonedDateTimeAssertion.java | 2 +- .../assertion/FluentResponseHeaderAssertion.java | 7 +- .../assertions/FluentRequestHeaderAssertion.java | 18 +- .../FluentRequestQueryParamAssertion.java | 7 +- 18 files changed, 41 insertions(+), 596 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/ComparableAssertion.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/ComparableAssertion.java index ec62f71..350df8d 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/ComparableAssertion.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/ComparableAssertion.java @@ -19,7 +19,7 @@ import org.apache.juneau.internal.*; */ @FluentSetters(returns="ComparableAssertion") @SuppressWarnings("rawtypes") -public class ComparableAssertion extends FluentComparableAssertion { +public class ComparableAssertion extends FluentComparableAssertion { /** * Creator. diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentArrayAssertion.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentArrayAssertion.java index e0b3383..3468ec9 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentArrayAssertion.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentArrayAssertion.java @@ -26,7 +26,7 @@ import org.apache.juneau.marshall.*; * @param The return type. */ @FluentSetters(returns="FluentArrayAssertion") -public class FluentArrayAssertion extends FluentObjectAssertion { +public class FluentArrayAssertion extends FluentBaseAssertion { private Object value; diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentObjectAssertion.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentBaseAssertion.java similarity index 78% copy from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentObjectAssertion.java copy to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentBaseAssertion.java index f67f853..26dc70e 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentObjectAssertion.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentBaseAssertion.java @@ -12,11 +12,8 @@ // *** package org.apache.juneau.assertions; -import java.time.*; -import java.util.*; import java.util.function.*; -import org.apache.juneau.*; import org.apache.juneau.internal.*; import org.apache.juneau.json.*; import org.apache.juneau.marshall.*; @@ -26,12 +23,13 @@ import org.apache.juneau.serializer.*; /** * Used for fluent assertion calls against POJOs. * + * @param The object type. * @param The return type. */ -@FluentSetters(returns="FluentObjectAssertion") -public class FluentObjectAssertion extends FluentAssertion { +@FluentSetters(returns="FluentBaseAssertion") +public class FluentBaseAssertion extends FluentAssertion { - private final Object value; + private final V value; private static JsonSerializer JSON = JsonSerializer.create() .ssq() @@ -50,7 +48,7 @@ public class FluentObjectAssertion extends FluentAssertion { * @param value The object being tested.
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 33ac3bd REST refactoring. 33ac3bd is described below commit 33ac3bd77e755252784ed6a433b89a8c0549e016 Author: JamesBognar AuthorDate: Tue Feb 16 11:17:27 2021 -0500 REST refactoring. --- .../apache/juneau/rest/client/ResponseHeader.java | 89 +-- .../apache/juneau/rest/client/RestResponse.java| 167 +++-- .../assertion/FluentResponseHeaderAssertion.java} | 39 ++- .../assertions/FluentRequestHeaderAssertion.java | 10 +- .../FluentRequestQueryParamAssertion.java | 19 +- .../juneau/http/exception/BadRequest_Test.java | 2 +- .../juneau/http/exception/Conflict_Test.java | 2 +- .../http/exception/ExpectationFailed_Test.java | 2 +- .../http/exception/FailedDependency_Test.java | 2 +- .../juneau/http/exception/Forbidden_Test.java | 2 +- .../apache/juneau/http/exception/Gone_Test.java| 2 +- .../juneau/http/exception/HttpException_Test.java | 2 +- .../exception/HttpVersionNotSupported_Test.java| 2 +- .../http/exception/InsufficentStorage_Test.java| 2 +- .../http/exception/InternalServerError_Test.java | 2 +- .../juneau/http/exception/LengthRequired_Test.java | 2 +- .../apache/juneau/http/exception/Locked_Test.java | 2 +- .../juneau/http/exception/LoopDetected_Test.java | 2 +- .../http/exception/MethodNotAllowed_Test.java | 2 +- .../http/exception/MisdirectedRequest_Test.java| 2 +- .../NetworkAuthenticationRequired_Test.java| 2 +- .../juneau/http/exception/NotAcceptable_Test.java | 2 +- .../juneau/http/exception/NotExtended_Test.java| 2 +- .../juneau/http/exception/NotFound_Test.java | 2 +- .../juneau/http/exception/NotImplemented_Test.java | 2 +- .../http/exception/PayloadTooLarge_Test.java | 2 +- .../http/exception/PreconditionFailed_Test.java| 2 +- .../http/exception/PreconditionRequired_Test.java | 2 +- .../http/exception/RangeNotSatisfiable_Test.java | 2 +- .../RequestHeaderFieldsTooLarge_Test.java | 2 +- .../http/exception/ServiceUnavailable_Test.java| 2 +- .../http/exception/TooManyRequests_Test.java | 2 +- .../juneau/http/exception/Unauthorized_Test.java | 2 +- .../exception/UnavailableForLegalReasons_Test.java | 2 +- .../http/exception/UnprocessableEntity_Test.java | 2 +- .../http/exception/UnsupportedMediaType_Test.java | 2 +- .../http/exception/UpgradeRequired_Test.java | 2 +- .../juneau/http/exception/UriTooLong_Test.java | 2 +- .../http/exception/VariantAlsoNegotiates_Test.java | 2 +- .../apache/juneau/http/response/Accepted_Test.java | 2 +- .../juneau/http/response/AlreadyReported_Test.java | 2 +- .../apache/juneau/http/response/Continue_Test.java | 2 +- .../apache/juneau/http/response/Created_Test.java | 2 +- .../juneau/http/response/EarlyHints_Test.java | 2 +- .../apache/juneau/http/response/Found_Test.java| 4 +- .../apache/juneau/http/response/IMUsed_Test.java | 2 +- .../http/response/MovedPermanently_Test.java | 4 +- .../juneau/http/response/MultiStatus_Test.java | 2 +- .../juneau/http/response/MultipleChoices_Test.java | 2 +- .../juneau/http/response/NoContent_Test.java | 2 +- .../response/NonAuthoritativeInformation_Test.java | 2 +- .../juneau/http/response/NotModified_Test.java | 2 +- .../org/apache/juneau/http/response/Ok_Test.java | 2 +- .../juneau/http/response/PartialContent_Test.java | 2 +- .../http/response/PermanentRedirect_Test.java | 4 +- .../juneau/http/response/Processing_Test.java | 2 +- .../juneau/http/response/ResetContent_Test.java| 2 +- .../apache/juneau/http/response/SeeOther_Test.java | 4 +- .../http/response/SwitchingProtocols_Test.java | 2 +- .../http/response/TemporaryRedirect_Test.java | 4 +- .../apache/juneau/http/response/UseProxy_Test.java | 2 +- .../juneau/rest/Header_AcceptEncoding_Test.java| 20 +- .../apache/juneau/rest/RestOp_Returns_Test.java| 4 +- .../rest/annotation/ResponseHeader_Test.java | 6 +- .../juneau/rest/annotation/RestHook_Test.java | 8 +- .../juneau/rest/client/RestClient_Body_Test.java | 116 - .../client/RestClient_Config_BeanContext_Test.java | 264 ++--- .../client/RestClient_Config_RestClient_Test.java | 12 +- .../rest/client/RestClient_Response_Test.java | 14 +- .../apache/juneau/rest/client/RestClient_Test.java | 8 +- 70 files changed, 523 insertions(+), 375 deletions(-) diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseHeader.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 75930c3 REST refactoring. 75930c3 is described below commit 75930c37c63023e1ee974b3ba820e6688eb0afcd Author: JamesBognar AuthorDate: Sun Feb 14 13:42:50 2021 -0500 REST refactoring. --- .../src/main/java/org/apache/juneau/rest/RequestHeaders.java | 10 -- .../juneau/http/remote/Remote_HeaderAnnotation_Test.java | 2 +- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java index ffd5ffe..785651e 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeaders.java @@ -343,16 +343,6 @@ public class RequestHeaders { } /** -* Same as {@link #subset(String...)} but allows you to specify header names as a comma-delimited list. -* -* @param headers The headers to include in the copy. -* @return A new headers object. -*/ - public RequestHeaders subset(String headers) { - return subset(split(headers)); - } - - /** * Returns the Accept header on the request. * * diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_HeaderAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_HeaderAnnotation_Test.java index 7f1a478..21916de 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_HeaderAnnotation_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_HeaderAnnotation_Test.java @@ -678,7 +678,7 @@ public class Remote_HeaderAnnotation_Test { public static class K { @RestOp public String get(RestRequest req) throws Exception { - return req.getRequestHeaders().subset("a,b,c,d,e,f,g,h,i,i1,i2,i3,a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4,e1,e2,e3,e4,f1,f2,f3,f4").toString(true); + return req.getRequestHeaders().subset("a,b,c,d,e,f,g,h,i,i1,i2,i3,a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4,e1,e2,e3,e4,f1,f2,f3,f4".split("\\,")).toString(true); } }
[juneau] branch master updated: Javadocs.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 9da1112 Javadocs. 9da1112 is described below commit 9da1112f75212fe9670e2985bc326217c97f8764 Author: JamesBognar AuthorDate: Sun Feb 14 13:37:34 2021 -0500 Javadocs. --- .../java/org/apache/juneau/http/annotation/FormData.java | 2 +- .../main/java/org/apache/juneau/http/annotation/Header.java | 2 +- .../main/java/org/apache/juneau/http/annotation/Path.java| 2 +- .../main/java/org/apache/juneau/http/annotation/Query.java | 2 +- .../main/java/org/apache/juneau/http/annotation/Request.java | 2 +- .../main/java/org/apache/juneau/http/remote/RemoteOp.java| 6 ++ juneau-doc/docs/Topics/09.juneau-rest-client.html| 2 +- .../docs/Topics/09.juneau-rest-client/11.RestcProxies.html | 2 +- .../11.RestcProxies/02.RestcRemoteMethod.html| 6 +++--- .../09.juneau-rest-client/11.RestcProxies/03.RestcBody.html | 8 .../11.RestcProxies/04.RestcFormData.html| 12 ++-- .../09.juneau-rest-client/11.RestcProxies/05.RestcQuery.html | 12 ++-- .../11.RestcProxies/06.RestcHeader.html | 8 .../09.juneau-rest-client/11.RestcProxies/07.RestcPath.html | 8 .../11.RestcProxies/08.RestcRequest.html | 2 +- .../11.RestcProxies/09.RestcResponse.html| 2 +- .../11.RestcProxies/10.RestcDualPurposeInterfaces.html | 4 ++-- .../docs/Topics/10.juneau-rest-mock/01.MockRestClient.html | 2 +- .../main/java/org/apache/juneau/rest/client/RestClient.java | 4 ++-- .../java/org/apache/juneau/rest/mock/MockRestClient.java | 2 +- 20 files changed, 44 insertions(+), 46 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java index ad74094..697427e 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java @@ -879,7 +879,7 @@ public @interface FormData { * public interface MyProxy { * * // Equivalent to @FormData("*") -* @RemoteOp(path="/mymethod") +* @RemotePost("/mymethod") * String myProxyMethod1(@FormData MapString,Object allFormDataParameters); * } * diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java index 97b40f7..5a793d5 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java @@ -853,7 +853,7 @@ public @interface Header { * public interface MyProxy { * * // Equivalent to @Header("*") -* @RemoteOp(path="/mymethod") +* @RemoteGet("/mymethod") * String myProxyMethod1(@Header MapString,Object allHeaderParameters); * } * diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java index 8bf8e22..654d369 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java @@ -798,7 +798,7 @@ public @interface Path { * public interface MyProxy { * * // Equivalent to @Path("*") -* @RemoteOp(path="/mymethod/{foo}/{bar}") +* @RemoteGet("/mymethod/{foo}/{bar}") * String myProxyMethod1(@Path MapString,Object allPathParameters); * } * diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java index 0742e44..99e0d71 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java @@ -877,7 +877,7 @@ public @interface Query { * public interface MyProxy { * *
[juneau] branch master updated: Add RemoteGet/RemotePut/RemotePost/RemoteDelete annotations.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new ab2137f Add RemoteGet/RemotePut/RemotePost/RemoteDelete annotations. ab2137f is described below commit ab2137f090bc904e9a210a1b98c04d876110984d Author: JamesBognar AuthorDate: Sun Feb 14 11:57:03 2021 -0500 Add RemoteGet/RemotePut/RemotePost/RemoteDelete annotations. --- .../remote/{RemoteOp.java => RemoteDelete.java}| 41 + .../http/remote/{RemoteOp.java => RemoteGet.java} | 41 + .../org/apache/juneau/http/remote/RemoteOp.java| 6 ++- .../http/remote/{RemoteOp.java => RemotePost.java} | 43 +- .../http/remote/{RemoteOp.java => RemotePut.java} | 42 + .../org/apache/juneau/reflect/AnnotationList.java | 12 ++ .../rest/client/remote/RemoteOperationMeta.java| 30 --- .../rest/client/remote/RemoteOperationReturn.java | 10 ++--- 8 files changed, 75 insertions(+), 150 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteOp.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteDelete.java similarity index 78% copy from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteOp.java copy to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteDelete.java index 9ce91eb..e44b6e6 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteOp.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteDelete.java @@ -18,6 +18,7 @@ import static java.lang.annotation.RetentionPolicy.*; import java.io.*; import java.lang.annotation.*; +import org.apache.juneau.annotation.*; import org.apache.juneau.http.annotation.*; /** @@ -34,7 +35,8 @@ import org.apache.juneau.http.annotation.*; @Target(METHOD) @Retention(RUNTIME) @Inherited -public @interface RemoteOp { +@AnnotationGroup(RemoteOp.class) +public @interface RemoteDelete { /** * REST service path. @@ -53,36 +55,16 @@ public @interface RemoteOp { * Example: * * // POST /pet -* @RemoteOp +* @RemoteDelete * public void postPet(...) {...} * * * -* Note that you can also use {@link #value()} to specify the method name and path in shortened form. +* Note that you can also use {@link #value()} to specify the path in shortened form. */ String path() default ""; /** -* Defines the HTTP method to use for REST calls. -* -* -* If not specified, then the method is inferred from the Java method name. -* -* Example: -* -* // POST /pet -* @RemoteOp -* public void postPet(...) {...} -* -* -* If the method cannot be inferred, then the default is "GET". -* -* -* Note that you can also use {@link #value()} to specify the method name and path in shortened form. -*/ - String method() default ""; - - /** * The value the remote method returns. * * @@ -121,25 +103,20 @@ public @interface RemoteOp { RemoteReturn returns() default RemoteReturn.BODY; /** -* REST method name and path. +* REST path. * * -* Can be used to provide a shortened combined form for the {@link #method()} and {@link #path()} values. +* Can be used to provide a shortened form for the {@link #path()} value. * * * The following examples are considered equivalent. * * // Normal form -* @RemoteOp(method=PUT, path="/{propertyName}") +* @RemoteDelete(path="/{propertyName}") * * // Shortened form -* @RemoteOp("PUT /{propertyName}") +* @RemoteDelete("/{propertyName}") * -* -* -* -* The path portion is optional. -* */ String value() default ""; } diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteOp.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteGet.java similarity index 79% copy from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteOp.java copy to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteGet.java index 9ce91eb..d375a7a 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/
[juneau] branch master updated: Update docs.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 56ae132 Update docs. 56ae132 is described below commit 56ae132afee047c615c6b39b374d8cd1274dec69 Author: JamesBognar AuthorDate: Sat Feb 13 20:02:45 2021 -0500 Update docs. --- .../13.DynamicallyAppliedAnnotations.html | 2 +- .../28.OpenApiDetails/02.OpenApiSerializers.html | 4 +- .../01.RestHelloWorldExample.html | 2 +- .../05.BasicRestServletGroup.html | 2 +- .../03.RestInstantiation/06.BasicRestGroup.html| 2 +- .../04.RestAnnotation/02.RestPath.html | 10 +-- .../06.RestMethod/01.RestmParameters.html | 34 +- .../06.RestMethod/02.RestmRestRequest.html | 4 +- .../06.RestMethod/03.RestmRestResponse.html| 4 +- .../06.RestMethod/04.RestmRequestBody.html | 10 +-- .../06.RestMethod/05.RestmRequestHeaders.html | 14 ++-- .../06.RestMethod/06.RestmRequestAttributes.html | 12 ++-- .../06.RestMethod/07.RestmRequestQuery.html| 14 ++-- .../06.RestMethod/08.RestmRequestFormData.html | 14 ++-- .../06.RestMethod/09.RestmPath.html| 32 -- .../06.RestMethod/10.RestmRequestPathMatch.html| 16 ++--- .../06.RestMethod/11.RestmReturnTypes.html | 32 +- .../06.RestMethod/12.RestmReaderResource.html | 6 +- .../06.RestMethod/13.RestmStreamResource.html | 4 +- .../06.RestMethod/14.RestmMatchers.html| 8 +-- .../06.RestMethod/15.RestmPredefinedResponses.html | 20 +++--- .../16.RestmPredefinedExceptions.html | 8 +-- .../17.RestmPredefinedHelperBeans.html | 36 +-- .../Topics/06.juneau-rest-server/07.RestRpc.html | 16 ++--- .../08.RestOpenApiSchemaPartParsing.html | 26 .../09.RestOpenApiSchemaPartSerializing.html | 10 +-- .../01.RestBodyAnnotation.html | 19 +++--- .../02.RestFormDataAnnotation.html | 36 +-- .../03.RestHasFormDataAnnotation.html | 10 +-- .../04.RestQueryAnnotation.html| 36 +-- .../05.RestHasQueryAnnotation.html | 10 +-- .../06.RestHeaderAnnotation.html | 26 .../07.RestPathAnnotation.html | 38 +-- .../08.RestRequestAnnotation.html | 20 +++--- .../09.RestResponseAnnotation.html | 74 +++--- .../10.RestResponseHeaderAnnotation.html | 14 ++-- .../11.RestResponseStatusAnnotation.html | 12 ++-- .../11.RestHandlingFormPosts.html | 6 +- .../12.RestHandlingMultiPartFormPosts.html | 48 +++--- .../06.juneau-rest-server/13.RestSerializers.html | 14 ++-- .../06.juneau-rest-server/14.RestParsers.html | 16 ++--- .../15.RestConfigurableProperties.html | 8 +-- .../06.juneau-rest-server/18.RestHandlingUris.html | 2 +- .../06.juneau-rest-server/19.RestGuards.html | 18 +++--- .../06.juneau-rest-server/21.RestConverters.html | 30 - .../06.juneau-rest-server/22.RestMessages.html | 2 +- .../25.RestConfigurationFiles.html | 12 ++-- .../27.RestClientVersioning.html | 6 +- .../01.RestSwaggerBasicRestServlet.html| 4 +- .../29.RestSwagger/03.RestSwaggerTags.html | 3 +- .../29.RestSwagger/04.RestSwaggerOperations.html | 6 +- .../29.RestSwagger/05.RestSwaggerParameters.html | 17 ++--- .../06.RestSwaggerParameterExamples.html | 5 +- .../29.RestSwagger/07.RestSwaggerResponses.html| 3 +- .../08.RestSwaggerResponseExamples.html| 29 - .../29.RestSwagger/09.RestSwaggerModels.html | 2 +- .../02.RestHtmlWidgets.html| 16 ++--- .../03.RestHtmlPredefinedWidgets.html | 13 ++-- .../33.RestLoggingAndDebugging.html| 26 .../35.RestOverloadingHttpMethods.html | 2 +- .../37.RestCustomSerializersAndParsers.html| 74 ++ .../11.RestcProxies/01.RestcRemote.html| 12 ++-- .../10.juneau-rest-mock/01.MockRestClient.html | 8 +-- .../03.MicroserviceJettyResourceClasses.html | 2 +- .../05.MicroserviceJettyConfig.html| 12 ++-- .../02.RestExamplesHelloWorldResource.html | 2 +- .../03.RestExamplesDtoExamples.html| 14 ++-- .../04.RestExamplesConfigResource.html | 52 +++ 68 files changed, 535 insertions(+), 566 deletions(-) diff --git a/juneau-doc/docs/Topics/02.juneau-marshall/13.DynamicallyAppliedAnnotations.html b/juneau-doc/docs/Topics/02.juneau-marshall/13.DynamicallyAppliedAnnotations.html index 7216ebd..99cb23a
[juneau] branch master updated: Remove @RestOp(priority).
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 0d34191 Remove @RestOp(priority). 0d34191 is described below commit 0d34191b5f6ace55ceaa6a223c392bf834e3973d Author: JamesBognar AuthorDate: Fri Feb 12 18:05:32 2021 -0500 Remove @RestOp(priority). --- .../apache/juneau/rest/RestOperationContext.java | 42 -- .../juneau/rest/RestOperationContextBuilder.java | 18 -- .../org/apache/juneau/rest/annotation/RestOp.java | 11 -- .../juneau/rest/annotation/RestOpAnnotation.java | 20 --- .../rest/annotation/RestOpAnnotation_Test.java | 5 --- 5 files changed, 96 deletions(-) diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java index 4dbee76..777a10e 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java @@ -634,40 +634,6 @@ public class RestOperationContext extends BeanContext implements ComparableProperty: -* -* ID: {@link org.apache.juneau.rest.RestOperationContext#RESTOP_priority RESTMETHOD_priority} -* Name: "RestOperationContext.priority.i" -* Data type: int -* System property: RestOperationContext.priority -* Environment variable: RESTOPERATIONCONTEXT_PRIORITY -* Default: 0 -* Session property: false -* Annotations: -* -* {@link org.apache.juneau.rest.annotation.RestOp#priority()} -* -* Methods: -* -* {@link org.apache.juneau.rest.RestOperationContextBuilder#priority(int)} -* -* -* -* Description: -* -* URL path pattern priority. -* -* -* To force path patterns to be checked before other path patterns, use a higher priority number. -* -* -* By default, it's 0, which means it will use an internal heuristic to determine a best match. -*/ - public static final String RESTOP_priority = PREFIX + ".priority.i"; - //--- // Instance //--- @@ -679,7 +645,6 @@ public class RestOperationContext extends BeanContext implements Comparable -* URL path pattern priority. -* -* -* {@link RestOperationContext#RESTOP_priority} -* -* -* @param value The new value for this setting. -* @return This object (for method chaining). -*/ - @FluentSetter - public RestOperationContextBuilder priority(int value) { - return set(RESTOP_priority, value); - } - // @Override /* GENERATED - ContextBuilder */ diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java index f868dd9..d4a9d3b 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java @@ -601,17 +601,6 @@ public @interface RestOp { String[] path() default {}; /** -* URL path pattern priority. -* -* -* To force path patterns to be checked before other path patterns, use a higher priority number. -* -* -* By default, it's 0, which means it will use an internal heuristic to determine a best match. -*/ - int priority() default 0; - - /** * Supported accept media types. * * diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java index 1ba081b..67b8465 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java @@ -61,7 +61,6 @@ public class RestOpAnnotation { Class[] matchers = new Class[0];
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 18595bd REST refactoring. 18595bd is described below commit 18595bda345588b8611da5b3bb9ba57dd3a8e01b Author: JamesBognar AuthorDate: Fri Feb 12 18:01:14 2021 -0500 REST refactoring. --- .../org/apache/juneau/rest/annotation/Rest.java| 3 +- .../juneau/rest/annotation/RestAnnotation.java | 17 --- .../org/apache/juneau/rest/annotation/RestOp.java | 3 +- .../juneau/rest/annotation/RestOpAnnotation.java | 17 --- .../rest/annotation/RestOpAnnotation_Test.java | 148 +++-- 5 files changed, 82 insertions(+), 106 deletions(-) diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java index 765bf04..230d1b0 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java @@ -40,11 +40,10 @@ import org.apache.juneau.rest.vars.*; * */ @Documented -@Target({TYPE,METHOD}) +@Target(TYPE) @Retention(RUNTIME) @Inherited @ContextPropertiesApply(RestAnnotation.Apply.class) -@Repeatable(RestAnnotation.Array.class) public @interface Rest { /** diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java index dca4223..bed2a69 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java @@ -12,8 +12,6 @@ // *** package org.apache.juneau.rest.annotation; -import static java.lang.annotation.ElementType.*; -import static java.lang.annotation.RetentionPolicy.*; import static org.apache.juneau.internal.ArrayUtils.*; import static org.apache.juneau.internal.StringUtils.*; import static org.apache.juneau.rest.RestContext.*; @@ -1097,19 +1095,4 @@ public class RestAnnotation { return value; } } - - /** -* A collection of {@link Rest @Rest annotations}. -*/ - @Documented - @Target({METHOD,TYPE}) - @Retention(RUNTIME) - @Inherited - public static @interface Array { - - /** -* The child annotations. -*/ - Rest[] value(); - } } \ No newline at end of file diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java index 0d223ea..f868dd9 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java @@ -30,11 +30,10 @@ import org.apache.juneau.dto.swagger.*; * */ @Documented -@Target({METHOD,TYPE}) +@Target(METHOD) @Retention(RUNTIME) @Inherited @ContextPropertiesApply(RestOpAnnotation.Apply.class) -@Repeatable(RestOpAnnotation.Array.class) public @interface RestOp { /** diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java index 031991f..1ba081b 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java @@ -12,8 +12,6 @@ // *** package org.apache.juneau.rest.annotation; -import static java.lang.annotation.ElementType.*; -import static java.lang.annotation.RetentionPolicy.*; import static org.apache.juneau.internal.ArrayUtils.*; import static org.apache.juneau.rest.RestContext.*; import static org.apache.juneau.rest.RestOperationContext.*; @@ -669,19 +667,4 @@ public class RestOpAnnotation { } } } - - /** -* A collection of {@link RestOp @RestOp annotations}. -*/ - @Documented - @Target({METHOD,TYPE}) - @Retention(RUNTIME) - @Inherited - public static @interface Array
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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 Res
[juneau] branch master updated: Javadocs.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new fd45a3d Javadocs. fd45a3d is described below commit fd45a3d8bac93245db8e93fad6e304355d784cfc Author: JamesBognar AuthorDate: Wed Feb 10 12:00:37 2021 -0500 Javadocs. --- .../org/apache/juneau/rest/BasicRestOperations.java| 18 -- .../main/java/org/apache/juneau/rest/RestMatcher.java | 6 +++--- .../org/apache/juneau/rest/RestOperationContext.java | 10 +- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestOperations.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestOperations.java index aa82026..fb452b4 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestOperations.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestOperations.java @@ -29,14 +29,12 @@ import org.apache.juneau.rest.annotation.*; * Basic REST operation methods. */ @HtmlDocConfig( - // Basic page navigation links. navlinks={ "up: request:/..", "api: servlet:/api", "stats: servlet:/stats" } - ) @JsonSchemaConfig( // Add descriptions to the following types when not specified: @@ -48,14 +46,6 @@ import org.apache.juneau.rest.annotation.*; // Use $ref references for bean definitions to reduce duplication in Swagger. useBeanDefs="true" ) -@BeanConfig( - // POJO swaps to apply to all serializers/parsers on this method. - swaps={ - // Use the SwaggerUI swap when rendering Swagger beans. - // This is a per-media-type swap that only applies to text/html requests. - SwaggerUI.class - } -) public interface BasicRestOperations { /** @@ -81,6 +71,14 @@ public interface BasicRestOperations { // Never show aside contents of page inherited from class. aside="NONE" ) + @BeanConfig( + // POJO swaps to apply to all serializers/parsers on this method. + swaps={ + // Use the SwaggerUI swap when rendering Swagger beans. + // This is a per-media-type swap that only applies to text/html requests. + SwaggerUI.class + } + ) public Swagger getSwagger(RestRequest req); /** diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMatcher.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMatcher.java index 2301dc5..196fa4f 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMatcher.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMatcher.java @@ -36,7 +36,7 @@ import org.apache.juneau.rest.annotation.*; * * Example: * - * public class MyResource extends RestServlet { + * public class MyResource extends BasicRestServlet { * * @RestOp(method=GET, path="/foo", matchers=IsDNT.class) * public Object doGetWithDNT() { @@ -51,8 +51,8 @@ import org.apache.juneau.rest.annotation.*; * * public class IsDNT extends RestMatcher { * @Override - * public boolean matches(RestRequest req) { - * return req.getHeader(int.class, "DNT", 0) == 1; + * public boolean matches(HttpServletRequest req) { + * return "1".equals(req.getHeader("DNT")); * } * } * diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java index 1ccb4bc..4dbee76 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java @@ -1944,6 +1944,11 @@ public class RestOperationContext extends BeanContext implements Comparable
[juneau] branch master updated: REST refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master 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
[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
[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) { +
[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() { -
[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: Rename PropertyStore to ContextProperties.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new a77a400 Rename PropertyStore to ContextProperties. a77a400 is described below commit a77a4006a00f2861a80b2adbc74eed1820131a10 Author: JamesBognar AuthorDate: Mon Feb 8 17:43:36 2021 -0500 Rename PropertyStore to ContextProperties. --- .../main/java/org/apache/juneau/BeanContext.java | 2 +- .../src/main/java/org/apache/juneau/Context.java | 2 +- .../java/org/apache/juneau/ContextBuilder.java | 16 .../java/org/apache/juneau/ContextProperties.java | 4 ++-- .../apache/juneau/ContextPropertiesBuilder.java| 10 +- .../11.ContextsBuildersSessionsPropertyStores.html | 22 +++--- .../12.ConfigStores/03.CustomConfigStores.html | 8 .../14.RestcExtendingRestClient.html | 2 +- juneau-doc/src/main/javadoc/resources/docs.txt | 2 +- .../org/apache/juneau/rest/client/RestClient.java | 8 .../java/org/apache/juneau/rest/RestConverter.java | 2 +- .../java/org/apache/juneau/rest/widget/Widget.java | 2 +- 12 files changed, 40 insertions(+), 40 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java index 0c41a3b..912b098 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java @@ -143,7 +143,7 @@ import org.apache.juneau.utils.ReflectionMapBuilder; * * * - * {@doc ContextsBuildersSessionsPropertyStores} + * {@doc ContextsBuildersSessionsContextProperties} * */ @SuppressWarnings({"unchecked","rawtypes"}) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java index ae97902..355cdc0 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java @@ -33,7 +33,7 @@ import org.apache.juneau.transform.*; * Subclasses MUST implement the following constructor: * * - * public T(PropertyStore); + * public T(ContextProperties); * * * diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java index f57f09b..4969b42 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java @@ -107,16 +107,16 @@ public abstract class ContextBuilder { * Example: * * // Create a free-form set of properties. -* PropertyStore ps = PropertyStore +* ContextProperties properties = ContextProperties * .create() * .set(BEAN_sortMaps) * .set(BEAN_sortProperties) * .build(); * * // Create a serializer that uses those settings. -* WriterSerializer s = JsonSerializer +* WriterSerializer serializer = JsonSerializer * .create() -* .apply(ps) +* .apply(properties) * .build(); * * @@ -141,17 +141,17 @@ public abstract class ContextBuilder { * @BeanConfig(sortProperties="$S{sortProperties,false}") * public class MyClass {...} * -* // Find all annotations that themselves are annotated with @PropertyStoreApply. -* AnnotationList al = ClassInfo.of(MyClass.class) +* // Find all annotations that themselves are annotated with @ContextPropertiesApply. +* AnnotationList al = ClassInfo.of(MyClass.class) * .getAnnotationList(ConfigAnnotationFilter.INSTANCE); * * // Use the default VarResolver to resolve any variables in the annotation fields. -* VarResolverSession vs = VarResolver.DEFAULT.createSession(); +* VarResolverSession vs = VarResolver.DEFAULT.createSession(); * * // Apply any settings found on the annotations. -* WriterSerializer s = JsonSerializer +* WriterSerializer serializer = JsonSerializer * .create() -* .applyAnnotations(al, vs) +* .applyAnnotations(al, vs) * .build(); * * diff --git a/juneau-core/juneau-marshall/s
[juneau] branch master updated: Rename PropertyStore to ContextProperties.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 4d63f67 Rename PropertyStore to ContextProperties. 4d63f67 is described below commit 4d63f6777bbc0592156205dec3aa5b66517e2e92 Author: JamesBognar AuthorDate: Mon Feb 8 17:33:19 2021 -0500 Rename PropertyStore to ContextProperties. --- .../src/main/java/org/apache/juneau/jena/annotation/Rdf.java | 2 +- .../main/java/org/apache/juneau/jena/annotation/RdfConfig.java| 2 +- .../src/main/java/org/apache/juneau/ContextBuilder.java | 6 +++--- .../src/main/java/org/apache/juneau/annotation/Bean.java | 2 +- .../src/main/java/org/apache/juneau/annotation/BeanConfig.java| 2 +- .../src/main/java/org/apache/juneau/annotation/BeanIgnore.java| 2 +- .../src/main/java/org/apache/juneau/annotation/Beanc.java | 2 +- .../src/main/java/org/apache/juneau/annotation/Beanp.java | 2 +- .../{PropertyStoreApply.java => ContextPropertiesApply.java} | 2 +- .../src/main/java/org/apache/juneau/annotation/Example.java | 2 +- .../src/main/java/org/apache/juneau/annotation/Marshalled.java| 2 +- .../src/main/java/org/apache/juneau/annotation/NameProperty.java | 2 +- .../main/java/org/apache/juneau/annotation/ParentProperty.java| 2 +- .../src/main/java/org/apache/juneau/annotation/Swap.java | 2 +- .../src/main/java/org/apache/juneau/annotation/Uri.java | 2 +- .../src/main/java/org/apache/juneau/csv/annotation/Csv.java | 2 +- .../src/main/java/org/apache/juneau/csv/annotation/CsvConfig.java | 2 +- .../src/main/java/org/apache/juneau/html/annotation/Html.java | 2 +- .../main/java/org/apache/juneau/html/annotation/HtmlConfig.java | 2 +- .../java/org/apache/juneau/html/annotation/HtmlDocConfig.java | 2 +- .../src/main/java/org/apache/juneau/html/annotation/HtmlLink.java | 2 +- .../src/main/java/org/apache/juneau/http/annotation/Body.java | 2 +- .../src/main/java/org/apache/juneau/http/annotation/FormData.java | 2 +- .../src/main/java/org/apache/juneau/http/annotation/Header.java | 2 +- .../src/main/java/org/apache/juneau/http/annotation/Path.java | 2 +- .../src/main/java/org/apache/juneau/http/annotation/Query.java| 2 +- .../src/main/java/org/apache/juneau/http/annotation/Request.java | 2 +- .../src/main/java/org/apache/juneau/http/annotation/Response.java | 2 +- .../main/java/org/apache/juneau/http/annotation/ResponseBody.java | 2 +- .../java/org/apache/juneau/http/annotation/ResponseHeader.java| 2 +- .../java/org/apache/juneau/http/annotation/ResponseStatus.java| 2 +- .../src/main/java/org/apache/juneau/jso/annotation/Jso.java | 2 +- .../src/main/java/org/apache/juneau/jso/annotation/JsoConfig.java | 2 +- .../src/main/java/org/apache/juneau/json/annotation/Json.java | 2 +- .../main/java/org/apache/juneau/json/annotation/JsonConfig.java | 2 +- .../org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.java | 2 +- .../main/java/org/apache/juneau/jsonschema/annotation/Schema.java | 2 +- .../main/java/org/apache/juneau/msgpack/annotation/MsgPack.java | 2 +- .../java/org/apache/juneau/msgpack/annotation/MsgPackConfig.java | 2 +- .../src/main/java/org/apache/juneau/oapi/annotation/OpenApi.java | 2 +- .../java/org/apache/juneau/oapi/annotation/OpenApiConfig.java | 2 +- .../java/org/apache/juneau/parser/annotation/ParserConfig.java| 2 +- .../java/org/apache/juneau/plaintext/annotation/PlainText.java| 2 +- .../org/apache/juneau/plaintext/annotation/PlainTextConfig.java | 2 +- .../src/main/java/org/apache/juneau/reflect/AnnotationInfo.java | 8 .../java/org/apache/juneau/reflect/ConfigAnnotationFilter.java| 4 ++-- .../src/main/java/org/apache/juneau/reflect/MethodInfo.java | 6 +++--- .../org/apache/juneau/serializer/annotation/SerializerConfig.java | 2 +- .../src/main/java/org/apache/juneau/soap/annotation/SoapXml.java | 2 +- .../java/org/apache/juneau/soap/annotation/SoapXmlConfig.java | 2 +- .../src/main/java/org/apache/juneau/uon/annotation/Uon.java | 2 +- .../src/main/java/org/apache/juneau/uon/annotation/UonConfig.java | 2 +- .../org/apache/juneau/urlencoding/annotation/UrlEncoding.java | 2 +- .../apache/juneau/urlencoding/annotation/UrlEncodingConfig.java | 2 +- .../src/main/java/org/apache/juneau/xml/annotation/Xml.java | 2 +- .../src/main/java/org/apache/juneau/xml/annotation/XmlConfig.java | 2 +- .../src/main/java/org/apache/juneau/rest/annotation/Rest.java | 2 +- .../src/main/java/org/apache/juneau/rest/annotation/RestOp.java | 2 +- .../src/test/java/org/apache/juneau/reflection/ClassInfoTest.java | 2 +- .../test/java/org/apache/juneau/reflection/MethodInfoTest.java| 2 +- 60 files changed, 68 insertions(+),
[juneau] branch master updated: PropertyStore refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 68f334a PropertyStore refactoring. 68f334a is described below commit 68f334a8cc53132a548d77d8db1e454efbd9019e Author: JamesBognar AuthorDate: Mon Feb 8 11:00:56 2021 -0500 PropertyStore refactoring. --- .../src/main/java/org/apache/juneau/Session.java | 2 +- .../main/java/org/apache/juneau/SessionArgs.java | 28 ++-- .../java/org/apache/juneau/SessionProperties.java | 78 ++ .../juneau/rest/Header_AcceptCharset_Test.java | 6 +- 4 files changed, 73 insertions(+), 41 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java index 8b5b3ea..f77b367 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java @@ -52,7 +52,7 @@ public abstract class Session { */ protected Session(Context ctx, SessionArgs args) { this.ctx = ctx; - SessionProperties sp = this.properties = new SessionProperties(args.properties == null ? OMap.EMPTY_MAP : args.properties); + SessionProperties sp = this.properties = args.properties; debug = sp.get(CONTEXT_debug, Boolean.class).orElse(ctx.isDebug()); locale = sp.get(CONTEXT_locale, Locale.class).orElse(ctx.getDefaultLocale()); timeZone = sp.get(CONTEXT_timeZone, TimeZone.class).orElse(ctx.getDefaultTimeZone()); diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java index e464845..ed60c1c 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java @@ -26,12 +26,7 @@ import org.apache.juneau.json.*; */ public class SessionArgs { - /** -* Default empty session arguments. -*/ - public static final SessionArgs DEFAULT = new SessionArgs(); - - OMap properties; + SessionProperties properties = SessionProperties.create(); /** * Constructor. @@ -138,7 +133,7 @@ public class SessionArgs { */ @FluentSetter public SessionArgs properties(OMap value) { - this.properties = value; + this.properties = SessionProperties.create(value); return this; } @@ -152,28 +147,13 @@ public class SessionArgs { @FluentSetter public SessionArgs property(String key, Object value) { if (value == null) { - if (properties != null) - properties.remove(key); + properties.remove(key); } else { - if (properties == null) - properties = new OMap(); properties.put(key, value); } return this; } - /** -* Returns a property on this session. -* -* @param key The property key. -* @return The property value, or null if not set. -*/ - public Object getProperty(String key) { - if (properties != null) - return properties.get(key); - return null; - } - //- // Other methods //- @@ -191,7 +171,7 @@ public class SessionArgs { .create() .filtered() .append("SessionArgs", OMap.create().filtered() - .append("properties", properties) + .append("properties", properties.asMap()) ); } diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java index 2a8860c..d4bc6c3 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionProperties.java @@ -28,12 +28,29 @@ public class SessionProperties { private final OMap map; /** -* Constructor. +* Static creator. +* +* @return A new instance of this cla
[juneau] branch master updated: PropertyStore refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new 48e1811 PropertyStore refactoring. 48e1811 is described below commit 48e1811474e096d001459c22ff3d9e62d9ea857d Author: JamesBognar AuthorDate: Sun Feb 7 21:07:18 2021 -0500 PropertyStore refactoring. --- .../apache/juneau/dto/swagger/ui/SwaggerUI.java| 3 +- .../apache/juneau/jena/RdfSerializerSession.java | 7 +- .../src/main/java/org/apache/juneau/Session.java | 170 +-- .../java/org/apache/juneau/SessionProperties.java | 181 + .../juneau/html/HtmlDocSerializerSession.java | 25 +-- .../org/apache/juneau/parser/ParserSession.java| 4 +- .../apache/juneau/parser/ReaderParserSession.java | 6 +- .../juneau/serializer/SerializerSession.java | 3 +- .../juneau/serializer/WriterSerializerSession.java | 8 +- .../juneau/soap/SoapXmlSerializerSession.java | 4 +- .../org/apache/juneau/uon/UonParserSession.java| 3 +- .../apache/juneau/xml/XmlSerializerSession.java| 5 +- .../org/apache/juneau/rest/client/RestRequest.java | 5 - .../juneau/rest/client/RestResponseBody.java | 2 +- .../test/java/org/apache/juneau/rest/Nls_Test.java | 2 +- .../juneau/rest/annotation/RestHook_Test.java | 12 +- .../juneau/rest/annotation/Rest_RVars_Test.java| 5 +- 17 files changed, 244 insertions(+), 201 deletions(-) diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java index c29ce57..e4dba85 100644 --- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java +++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java @@ -93,7 +93,8 @@ public class SwaggerUI extends PojoSwap { Session(BeanSession bs, Swagger swagger) { this.swagger = swagger.copy(); - this.resolveRefsMaxDepth = bs.getProperty(SWAGGERUI_resolveRefsMaxDepth, Integer.class, 1); + SessionProperties sp = bs.getSessionProperties(); + this.resolveRefsMaxDepth = sp.getInteger(SWAGGERUI_resolveRefsMaxDepth).orElse(1); } } diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java index 886de83..503f987 100644 --- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java +++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java @@ -60,7 +60,8 @@ public final class RdfSerializerSession extends WriterSerializerSession { super(ctx, args); this.ctx = ctx; - namespaces = getInstanceArrayProperty(RDF_namespaces, Namespace.class, ctx.namespaces); + SessionProperties sp = getSessionProperties(); + namespaces = sp.getInstanceArray(RDF_namespaces, Namespace.class).orElse(ctx.namespaces); model = ModelFactory.createDefaultModel(); addModelPrefix(ctx.getJuneauNs()); addModelPrefix(ctx.getJuneauBpNs()); @@ -85,9 +86,9 @@ public final class RdfSerializerSession extends WriterSerializerSession { if (e.getKey().startsWith(propPrefix, 5)) writer.setProperty(e.getKey().substring(5 + propPrefix.length()), e.getValue()); - for (String k : getPropertyKeys()) + for (String k : sp.keySet()) if (k.startsWith("RdfCommon.jena.") && k.startsWith(propPrefix, 15)) - writer.setProperty(k.substring(15 + propPrefix.length()), getProperty(k)); + writer.setProperty(k.substring(15 + propPrefix.length()), sp.get(k).orElse(null)); } /* diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java index dc1c58b..8b5b3ea 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java @@ -13,19 +13,15 @@ package org.apache.juneau; import static org.apache.juneau.internal.StringUtils.*; -import static org.apache.juneau.internal.ClassUtils.*; import static org.apache.juneau.Context.*; -import java.lang.reflect.*; import java.text.*; import java.time.*; import java.util.*; import org.apache.juneau.collections.*; import org.apache.june
[juneau] branch master updated: PropertyStore refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new a791928 PropertyStore refactoring. a791928 is described below commit a791928b7e0852773c72836399ccdca0c96aa49b Author: JamesBognar AuthorDate: Sun Feb 7 19:54:47 2021 -0500 PropertyStore refactoring. --- .../main/java/org/apache/juneau/PropertyStore.java | 35 +++--- .../org/apache/juneau/html/HtmlDocSerializer.java | 2 +- .../java/org/apache/juneau/xml/XmlSerializer.java | 2 +- .../org/apache/juneau/rest/client/RestClient.java | 2 +- .../java/org/apache/juneau/rest/RestContext.java | 10 +++ .../apache/juneau/rest/RestOperationContext.java | 18 +-- 6 files changed, 28 insertions(+), 41 deletions(-) diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java index f20ed3f..e68a211 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java @@ -495,40 +495,27 @@ public final class PropertyStore { } /** -* Returns the specified property as an array of instantiated objects. +* Returns an instance array of the specified class, string, or object property. * * @param key The property name. * @param type The class type of the property. -* @return A new property instance, or an empty array if it doesn't exist. -*/ - public T[] getInstanceArray(String key, Class type) { - return getInstanceArray(key, type, (T[])Array.newInstance(type, 0)); - } - - /** -* Returns the specified property as an array of instantiated objects. -* -* @param key The property name. -* @param type The class type of the property. -* @param def The default object to return if the property doesn't exist. -* @return A new property instance. +* @param beanFactory The bean factory to use for instantiating the bean. +* @return A new property instance array. */ - public T[] getInstanceArray(String key, Class type, T[] def) { - return getInstanceArray(key, type, def, new BeanFactory()); + public Optional getInstanceArray(String key, Class type, BeanFactory beanFactory) { + Property p = findProperty(key); + return Optional.ofNullable(p == null ? null : p.asInstanceArray(type, beanFactory)); } /** -* Returns the specified property as an array of instantiated objects. +* Returns an instance array of the specified class, string, or object property. * * @param key The property name. * @param type The class type of the property. -* @param def The default object to return if the property doesn't exist. -* @param beanFactory The bean factory to use for instantiating beans. -* @return A new property instance. +* @return A new property instance array. */ - public T[] getInstanceArray(String key, Class type, T[] def, BeanFactory beanFactory) { - Property p = findProperty(key); - return p == null ? def : p.asInstanceArray(type, beanFactory); + public Optional getInstanceArray(String key, Class type) { + return getInstanceArray(key, type, null); } /** @@ -928,7 +915,7 @@ public final class PropertyStore { //--- static BeanFactory DEFAULT_BEAN_FACTORY = BeanFactory.create().build(); - + static T instantiate(BeanFactory beanFactory, Class c, Object value) { if (ClassInfo.of(c).isParentOf(value.getClass())) return (T)value; diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java index aad4f1e..83d10f5 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java @@ -778,7 +778,7 @@ public class HtmlDocSerializer extends HtmlStrippedDocSerializer { template = ps.getInstance(HTMLDOC_template, HtmlDocTemplate.class).orElseGet(BasicHtmlDocTemplate::new); widgets = new HtmlWidgetMap(); - widgets.append(ps.getInstanceArray(HTMLDOC_widgets, HtmlWidget.class)); + widgets.append(ps.getInstanceArray
[juneau] branch master updated: PropertyStore refactoring.
This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git The following commit(s) were added to refs/heads/master by this push: new fd8fc7d PropertyStore refactoring. fd8fc7d is described below commit fd8fc7d6f0352b9cfbeaf4fb0f2951bca11d86c6 Author: JamesBognar AuthorDate: Sun Feb 7 19:37:49 2021 -0500 PropertyStore refactoring. --- .../main/java/org/apache/juneau/config/Config.java | 10 ++-- .../java/org/apache/juneau/jena/RdfParser.java | 4 +- .../main/java/org/apache/juneau/BeanContext.java | 2 +- .../src/main/java/org/apache/juneau/Context.java | 6 +-- .../main/java/org/apache/juneau/PropertyStore.java | 59 +- .../java/org/apache/juneau/cp/BeanFactory.java | 16 ++ .../org/apache/juneau/html/HtmlDocSerializer.java | 2 +- .../juneau/jsonschema/JsonSchemaGenerator.java | 2 +- .../main/java/org/apache/juneau/xml/XmlParser.java | 6 +-- .../java/org/apache/juneau/xml/XmlSerializer.java | 2 +- .../org/apache/juneau/rest/client/RestClient.java | 26 +- .../apache/juneau/rest/mock/MockRestClient.java| 4 +- .../java/org/apache/juneau/rest/RestContext.java | 11 ++-- .../apache/juneau/rest/RestOperationContext.java | 4 +- 14 files changed, 70 insertions(+), 84 deletions(-) diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java index 9ac813d..d35b325 100644 --- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java +++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java @@ -447,14 +447,14 @@ public final class Config extends Context implements ConfigEventListener, Writab super(ps, true); name = ps.getString(CONFIG_name).orElse("Configuration.cfg"); - store = ps.getInstance(CONFIG_store, ConfigStore.class, ConfigFileStore.DEFAULT); + store = ps.getInstance(CONFIG_store, ConfigStore.class).orElse(ConfigFileStore.DEFAULT); configMap = store.getMap(name); configMap.register(this); - serializer = ps.getInstance(CONFIG_serializer, WriterSerializer.class, SimpleJsonSerializer.DEFAULT); - parser = ps.getInstance(CONFIG_parser, ReaderParser.class, JsonParser.DEFAULT); + serializer = ps.getInstance(CONFIG_serializer, WriterSerializer.class).orElse(SimpleJsonSerializer.DEFAULT); + parser = ps.getInstance(CONFIG_parser, ReaderParser.class).orElse(JsonParser.DEFAULT); beanSession = parser.createBeanSession(); - encoder = ps.getInstance(CONFIG_encoder, ConfigEncoder.class, ConfigXorEncoder.INSTANCE); - varSession = ps.getInstance(CONFIG_varResolver, VarResolver.class, VarResolver.DEFAULT) + encoder = ps.getInstance(CONFIG_encoder, ConfigEncoder.class).orElse(ConfigXorEncoder.INSTANCE); + varSession = ps.getInstance(CONFIG_varResolver, VarResolver.class).orElse(VarResolver.DEFAULT) .builder() .vars(ConfigVar.class) .bean(Config.class, this) diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java index c745d22..d4347a5 100644 --- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java +++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java @@ -131,8 +131,8 @@ public class RdfParser extends ReaderParser implements RdfCommon, RdfMetaProvide trimWhitespace = ps.getBoolean(RDF_trimWhitespace).orElse(false); looseCollections = ps.getBoolean(RDF_looseCollections).orElse(false); rdfLanguage = ps.getString(RDF_language).orElse("RDF/XML-ABBREV"); - juneauNs = ps.getInstance(RDF_juneauNs, Namespace.class, DEFAULT_JUNEAU_NS); - juneauBpNs = ps.getInstance(RDF_juneauBpNs, Namespace.class, DEFAULT_JUNEAUBP_NS); + juneauNs = ps.getInstance(RDF_juneauNs, Namespace.class).orElse(DEFAULT_JUNEAU_NS); + juneauBpNs = ps.getInstance(RDF_juneauBpNs, Namespace.class).orElse(DEFAULT_JUNEAUBP_NS); collectionFormat = ps.get(RDF_collectionFormat, RdfCollectionFormat.class).orElse(RdfCollectionFormat.DEFAULT); ASortedMap m = ASortedMap.create(); diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java index ba63e90..5c82386 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.jav