You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2021/11/07 21:54:57 UTC
[juneau] branch master updated: Javadocs and RestResponse
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 5df6b06 Javadocs and RestResponse refactoring.
5df6b06 is described below
commit 5df6b0610bbdec8b196ba2c55068e8d7ce85b87a
Author: JamesBognar <ja...@salesforce.com>
AuthorDate: Sun Nov 7 16:54:31 2021 -0500
Javadocs and RestResponse refactoring.
---
.../03.RestOpAnnotatedMethods.html | 5 +-
...tmRequestBody.html => 01.RestmRequestBody.html} | 0
.../01.RestmRestRequest.html | 43 -------
...estHeaders.html => 02.RestmRequestHeaders.html} | 0
.../02.RestmRestResponse.html | 37 ------
...ributes.html => 03.RestmRequestAttributes.html} | 0
...RequestQuery.html => 04.RestmRequestQuery.html} | 0
...tFormData.html => 05.RestmRequestFormData.html} | 0
...athMatch.html => 06.RestmRequestPathMatch.html} | 0
...erResource.html => 07.RestmReaderResource.html} | 0
...amResource.html => 08.RestmStreamResource.html} | 0
...11.RestmMatchers.html => 09.RestmMatchers.html} | 0
...onses.html => 10.RestmPredefinedResponses.html} | 0
...ans.html => 11.RestmPredefinedHelperBeans.html} | 0
juneau-doc/src/main/javadoc/overview.html | 127 ++++++-------------
juneau-doc/src/main/javadoc/resources/docs.txt | 2 -
.../java/org/apache/juneau/rest/RestRequest.java | 115 +++++++++++++++---
.../java/org/apache/juneau/rest/RestResponse.java | 134 ++++++++++-----------
.../apache/juneau/rest/args/ResponseHeaderArg.java | 21 ++--
.../juneau/rest/annotation/Rest_RVars_Test.java | 6 +-
.../client/RestClient_Config_RestClient_Test.java | 2 +-
21 files changed, 216 insertions(+), 276 deletions(-)
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods.html b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods.html
index a4d003c..f91af3c 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods.html
@@ -607,4 +607,7 @@
}
</p>
-
+<ul class='seealso'>
+ <li class='jc'>{@link oajr.RestRequest}
+ <li class='jc'>{@link oajr.RestResponse}
+</ul>
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/03.RestmRequestBody.html b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/01.RestmRequestBody.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/03.RestmRequestBody.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/01.RestmRequestBody.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/01.RestmRestRequest.html b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/01.RestmRestRequest.html
deleted file mode 100644
index 00d0200..0000000
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/01.RestmRestRequest.html
+++ /dev/null
@@ -1,43 +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.
- ***************************************************************************************************************************/
- -->
-
-{title:'RestRequest', flags:'todo'}
-
-<p>
- The {@link oajr.RestRequest} object is an extension of the <l>HttpServletRequest</l> class
- with various built-in convenience methods for use in building REST interfaces.
- It can be accessed by passing it as a parameter on your REST Java method:
-</p>
-<p class='bpcode w800'>
- <ja>@RestPost</ja>(...)
- <jk>public</jk> Object myMethod(RestRequest <jv>req</jv>) {...}
-</p>
-<p>
- There are many useful methods on this object, but the main ones are shown below:
-</p>
-<ul class='javatree'>
- <li class='jc'><c>{@link oajr.RestRequest} <jk>extends</jk> HttpServletRequest</c>
- <ul>
- <li class='jm'>{@link oajr.RestRequest#getHeaders() getHeaders()} - HTTP request headers.
- <li class='jm'>{@link oajr.RestRequest#getQueryParams() getQueryParams()} - Query parameters.
- <li class='jm'>{@link oajr.RestRequest#getFormParams() getFormParams()} - Form-data parameters.
- <li class='jm'>{@link oajr.RestRequest#getPathParams() getPathParams()} - Path match variables.
- <li class='jm'>{@link oajr.RestRequest#getBody() getBody()} - HTTP request body.
- <li class='jm'>{@link oajr.RestRequest#getSwagger() getSwagger()} - Generated Swagger information.
- <li class='jm'>{@link oajr.RestRequest#getConfig() getConfig()} - External configuration API.
- <li class='jm'>{@link oajr.RestRequest#getVarResolverSession() getVarResolverSession()} - String variable resolver.
- <li class='jm'>{@link oajr.RestRequest#getMessages() getMessages()} - Localized messages.
- </ul>
-</ul>
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/04.RestmRequestHeaders.html b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/02.RestmRequestHeaders.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/04.RestmRequestHeaders.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/02.RestmRequestHeaders.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/02.RestmRestResponse.html b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/02.RestmRestResponse.html
deleted file mode 100644
index ca32503..0000000
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/02.RestmRestResponse.html
+++ /dev/null
@@ -1,37 +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.
- ***************************************************************************************************************************/
- -->
-
-{title:'RestResponse', flags:'todo'}
-
-<p>
- The {@link oajr.RestResponse} object is an extension of the <l>HttpServletResponse</l> class
- with various built-in convenience methods for use in building REST interfaces.
- It can be accessed by passing it as a parameter on your REST Java method:
-</p>
-<p class='bpcode w800'>
- <ja>@RestPost</ja>(...)
- <jk>public</jk> Object myMethod(RestResponse <jv>req</jv>) {...}
-</p>
-<p>
- Some important methods on this class are:
-</p>
-<ul class='javatree'>
- <li class='jc'><c>{@link oajr.RestResponse} <jk>extends</jk> HttpServletResponse</c>
- <ul>
- <li class='jm'>{@link oajr.RestResponse#setOutput(Object) setOutput(Object)} - Set response output programmatically.
- <li class='jm'>{@del RestResponse#getHtmlDocBuilder()} - Set HTTP page contents programmatically.
- <li class='jm'>{@link oajr.RestResponse#getDirectWriter(String) getDirectWriter(String)} - Direct access to underlying response writer.
- </ul>
-</ul>
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/05.RestmRequestAttributes.html b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/03.RestmRequestAttributes.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/05.RestmRequestAttributes.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/03.RestmRequestAttributes.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/06.RestmRequestQuery.html b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/04.RestmRequestQuery.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/06.RestmRequestQuery.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/04.RestmRequestQuery.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/07.RestmRequestFormData.html b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/05.RestmRequestFormData.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/07.RestmRequestFormData.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/05.RestmRequestFormData.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/08.RestmRequestPathMatch.html b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/06.RestmRequestPathMatch.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/08.RestmRequestPathMatch.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/06.RestmRequestPathMatch.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/09.RestmReaderResource.html b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/07.RestmReaderResource.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/09.RestmReaderResource.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/07.RestmReaderResource.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/10.RestmStreamResource.html b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/08.RestmStreamResource.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/10.RestmStreamResource.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/08.RestmStreamResource.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/11.RestmMatchers.html b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/09.RestmMatchers.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/11.RestmMatchers.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/09.RestmMatchers.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/12.RestmPredefinedResponses.html b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/10.RestmPredefinedResponses.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/12.RestmPredefinedResponses.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/10.RestmPredefinedResponses.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/13.RestmPredefinedHelperBeans.html b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/11.RestmPredefinedHelperBeans.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/13.RestmPredefinedHelperBeans.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/11.RestmPredefinedHelperBeans.html
diff --git a/juneau-doc/src/main/javadoc/overview.html b/juneau-doc/src/main/javadoc/overview.html
index 2331fc7..1237842 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -349,8 +349,6 @@
</ol>
<li><p><a class='doclink' href='#juneau-rest-server.RestOpAnnotatedMethods'>@RestOp-Annotated Methods</a><span class='update'>updated: <b>9.0.0</b></span></p>
<ol>
- <li><p><a class='doclink' href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRestRequest'>RestRequest</a><span class='update'><b><red>todo</red></b></span></p>
- <li><p><a class='doclink' href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRestResponse'>RestResponse</a><span class='update'><b><red>todo</red></b></span></p>
<li><p><a class='doclink' href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody'>RequestBody</a><span class='update'><b><red>todo</red></b></span></p>
<li><p><a class='doclink' href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders'>RequestHeaders</a><span class='update'><b><red>todo</red></b></span></p>
<li><p><a class='doclink' href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes'>RequestAttributes</a><span class='update'>created: 8.1.0, <b><red>todo</red></b></span></p>
@@ -15478,68 +15476,15 @@
}
</p>
-<!-- ==================================================================================================== -->
-
-<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRestRequest' id='juneau-rest-server.RestOpAnnotatedMethods.RestmRestRequest'>6.3.1 - RestRequest</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.1 - juneau-rest-server.RestOpAnnotatedMethods.RestmRestRequest -->
-<p>
- The {@link org.apache.juneau.rest.RestRequest} object is an extension of the <l>HttpServletRequest</l> class
- with various built-in convenience methods for use in building REST interfaces.
- It can be accessed by passing it as a parameter on your REST Java method:
-</p>
-<p class='bpcode w800'>
- <ja>@RestPost</ja>(...)
- <jk>public</jk> Object myMethod(RestRequest <jv>req</jv>) {...}
-</p>
-<p>
- There are many useful methods on this object, but the main ones are shown below:
-</p>
-<ul class='javatree'>
- <li class='jc'><c>{@link org.apache.juneau.rest.RestRequest} <jk>extends</jk> HttpServletRequest</c>
- <ul>
- <li class='jm'>{@link org.apache.juneau.rest.RestRequest#getHeaders() getHeaders()} - HTTP request headers.
- <li class='jm'>{@link org.apache.juneau.rest.RestRequest#getQueryParams() getQueryParams()} - Query parameters.
- <li class='jm'>{@link org.apache.juneau.rest.RestRequest#getFormParams() getFormParams()} - Form-data parameters.
- <li class='jm'>{@link org.apache.juneau.rest.RestRequest#getPathParams() getPathParams()} - Path match variables.
- <li class='jm'>{@link org.apache.juneau.rest.RestRequest#getBody() getBody()} - HTTP request body.
- <li class='jm'>{@link org.apache.juneau.rest.RestRequest#getSwagger() getSwagger()} - Generated Swagger information.
- <li class='jm'>{@link org.apache.juneau.rest.RestRequest#getConfig() getConfig()} - External configuration API.
- <li class='jm'>{@link org.apache.juneau.rest.RestRequest#getVarResolverSession() getVarResolverSession()} - String variable resolver.
- <li class='jm'>{@link org.apache.juneau.rest.RestRequest#getMessages() getMessages()} - Localized messages.
- </ul>
-</ul>
-</div><!-- END: 6.3.1 - juneau-rest-server.RestOpAnnotatedMethods.RestmRestRequest -->
-
-<!-- ==================================================================================================== -->
-
-<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRestResponse' id='juneau-rest-server.RestOpAnnotatedMethods.RestmRestResponse'>6.3.2 - RestResponse</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.2 - juneau-rest-server.RestOpAnnotatedMethods.RestmRestResponse -->
-<p>
- The {@link org.apache.juneau.rest.RestResponse} object is an extension of the <l>HttpServletResponse</l> class
- with various built-in convenience methods for use in building REST interfaces.
- It can be accessed by passing it as a parameter on your REST Java method:
-</p>
-<p class='bpcode w800'>
- <ja>@RestPost</ja>(...)
- <jk>public</jk> Object myMethod(RestResponse <jv>req</jv>) {...}
-</p>
-<p>
- Some important methods on this class are:
-</p>
-<ul class='javatree'>
- <li class='jc'><c>{@link org.apache.juneau.rest.RestResponse} <jk>extends</jk> HttpServletResponse</c>
- <ul>
- <li class='jm'>{@link org.apache.juneau.rest.RestResponse#setOutput(Object) setOutput(Object)} - Set response output programmatically.
- <li class='jm'>{@del RestResponse#getHtmlDocBuilder()} - Set HTTP page contents programmatically.
- <li class='jm'>{@link org.apache.juneau.rest.RestResponse#getDirectWriter(String) getDirectWriter(String)} - Direct access to underlying response writer.
- </ul>
+<ul class='seealso'>
+ <li class='jc'>{@link org.apache.juneau.rest.RestRequest}
+ <li class='jc'>{@link org.apache.juneau.rest.RestResponse}
</ul>
-</div><!-- END: 6.3.2 - juneau-rest-server.RestOpAnnotatedMethods.RestmRestResponse -->
<!-- ==================================================================================================== -->
-<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody' id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody'>6.3.3 - RequestBody</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.3 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody -->
+<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody' id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody'>6.3.1 - RequestBody</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.1 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody -->
<p>
The {@link org.apache.juneau.rest.RequestBody} object is the API for accessing the body of an HTTP request.
It can be accessed by passing it as a parameter on your REST Java method:
@@ -15576,12 +15521,12 @@
<ul class='seealso'>
<li class='ja'>{@link org.apache.juneau.http.annotation.Body}
</ul>
-</div><!-- END: 6.3.3 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody -->
+</div><!-- END: 6.3.1 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody -->
<!-- ==================================================================================================== -->
-<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders' id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders'>6.3.4 - RequestHeaders</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.4 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders -->
+<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders' id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders'>6.3.2 - RequestHeaders</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.2 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders -->
<p>
The {@link org.apache.juneau.rest.RequestHeaders} object is the API for accessing the headers of an HTTP request.
It can be accessed by passing it as a parameter on your REST Java method:
@@ -15623,12 +15568,12 @@
<ul class='seealso'>
<li class='ja'>{@link org.apache.juneau.http.annotation.Header}
</ul>
-</div><!-- END: 6.3.4 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders -->
+</div><!-- END: 6.3.2 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders -->
<!-- ==================================================================================================== -->
-<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes' id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes'>6.3.5 - RequestAttributes</a><span class='update'>created: 8.1.0, <b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.5 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes -->
+<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes' id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes'>6.3.3 - RequestAttributes</a><span class='update'>created: 8.1.0, <b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.3 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes -->
<p>
The {@link org.apache.juneau.rest.RequestAttributes} object is the API for accessing the standard servlet attributes on an HTTP request
(i.e. {@link javax.servlet.ServletRequest#getAttribute(String)}.
@@ -15658,12 +15603,12 @@
Modifications made to request attributes through the <c>RequestAttributes</c> bean are automatically reflected in
the underlying servlet request attributes making it possible to mix the usage of both APIs.
</p>
-</div><!-- END: 6.3.5 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes -->
+</div><!-- END: 6.3.3 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes -->
<!-- ==================================================================================================== -->
-<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery' id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery'>6.3.6 - RequestQuery</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.6 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery -->
+<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery' id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery'>6.3.4 - RequestQuery</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.4 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery -->
<p>
The {@link org.apache.juneau.rest.RequestQuery} object is the API for accessing the GET query parameters of an HTTP request.
It can be accessed by passing it as a parameter on your REST Java method:
@@ -15710,12 +15655,12 @@
<li class='ja'>{@link org.apache.juneau.http.annotation.Query}
<li class='ja'>{@link org.apache.juneau.http.annotation.HasQuery}
</ul>
-</div><!-- END: 6.3.6 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery -->
+</div><!-- END: 6.3.4 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery -->
<!-- ==================================================================================================== -->
-<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData' id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData'>6.3.7 - RequestFormData</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.7 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData -->
+<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData' id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData'>6.3.5 - RequestFormData</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.5 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData -->
<p>
The {@link org.apache.juneau.rest.RequestFormData} object is the API for accessing the HTTP request body as form data.
It can be accessed by passing it as a parameter on your REST Java method:
@@ -15757,12 +15702,12 @@
<li class='ja'>{@link org.apache.juneau.http.annotation.FormData}
<li class='ja'>{@link org.apache.juneau.http.annotation.HasFormData}
</ul>
-</div><!-- END: 6.3.7 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData -->
+</div><!-- END: 6.3.5 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData -->
<!-- ==================================================================================================== -->
-<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch' id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch'>6.3.8 - RequestPathMatch</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.8 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch -->
+<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch' id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch'>6.3.6 - RequestPathMatch</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.6 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch -->
<p>
The {@link org.apache.juneau.rest.RequestPath} object is the API for accessing the matched variables
and remainder on the URL path.
@@ -15801,12 +15746,12 @@
<ul class='seealso'>
<li class='ja'>{@link org.apache.juneau.http.annotation.Path}
</ul>
-</div><!-- END: 6.3.8 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch -->
+</div><!-- END: 6.3.6 - juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch -->
<!-- ==================================================================================================== -->
-<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource' id='juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource'>6.3.9 - ReaderResource</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.9 - juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource -->
+<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource' id='juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource'>6.3.7 - ReaderResource</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.7 - juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource -->
<p>
The {@del ReaderResource} class is a convenience object for defining thread-safe
reusable character-based responses.
@@ -15832,12 +15777,12 @@
.build();
}
</p>
-</div><!-- END: 6.3.9 - juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource -->
+</div><!-- END: 6.3.7 - juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource -->
<!-- ==================================================================================================== -->
-<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource' id='juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource'>6.3.10 - StreamResource</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.10 - juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource -->
+<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource' id='juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource'>6.3.8 - StreamResource</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.8 - juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource -->
<p>
The {@del org.apache.juneau.http.StreamResource} class is the binary equivalent to the {@del ReaderResource} object.
In essence, it's a container for binary data with optional response headers.
@@ -15859,12 +15804,12 @@
.build();
}
</p>
-</div><!-- END: 6.3.10 - juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource -->
+</div><!-- END: 6.3.8 - juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource -->
<!-- ==================================================================================================== -->
-<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers' id='juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers'>6.3.11 - @RestOp(matchers)</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.11 - juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers -->
+<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers' id='juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers'>6.3.9 - @RestOp(matchers)</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.9 - juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers -->
<p>
{@link org.apache.juneau.rest.RestMatcher RestMatchers} are used to allow multiple Java methods to be
tied to the same HTTP method and path, but differentiated by some request attribute such as a specific
@@ -15918,12 +15863,12 @@
<li class='jc'>{@link org.apache.juneau.rest.matchers.MultipartFormDataMatcher}
<li class='jc'>{@link org.apache.juneau.rest.matchers.UrlEncodedFormMatcher}
</ul>
-</div><!-- END: 6.3.11 - juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers -->
+</div><!-- END: 6.3.9 - juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers -->
<!-- ==================================================================================================== -->
-<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses' id='juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses'>6.3.12 - Predefined Responses</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.12 - juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses -->
+<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses' id='juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses'>6.3.10 - Predefined Responses</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.10 - juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses -->
<p>
Predefined response beans are provided for all standard HTTP responses.
These can be used as-is or extended to provide customized HTTP responses.
@@ -16033,12 +15978,12 @@
<jk>return new</jk> SeeOther(<js>"servlet:/pets"</js>);
}
</p>
-</div><!-- END: 6.3.12 - juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses -->
+</div><!-- END: 6.3.10 - juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses -->
<!-- ==================================================================================================== -->
-<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans' id='juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans'>6.3.13 - Predefined Helper Beans</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.13 - juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans -->
+<h4 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans' id='juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans'>6.3.11 - Predefined Helper Beans</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.11 - juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans -->
<p>
The {@link org.apache.juneau.rest.helper} package contains several predefined beans to help when constructing
REST interfaces.
@@ -16248,7 +16193,7 @@
<p>
One distinction is that the former defines the description <js>"Redirect to servlet root"</js> in the generated Swagger documentation.
</p>
-</div><!-- END: 6.3.13 - juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans -->
+</div><!-- END: 6.3.11 - juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans -->
</div><!-- END: 6.3 - juneau-rest-server.RestOpAnnotatedMethods -->
<!-- ==================================================================================================== -->
diff --git a/juneau-doc/src/main/javadoc/resources/docs.txt b/juneau-doc/src/main/javadoc/resources/docs.txt
index bda008a..74d3f1e 100644
--- a/juneau-doc/src/main/javadoc/resources/docs.txt
+++ b/juneau-doc/src/main/javadoc/resources/docs.txt
@@ -295,8 +295,6 @@ RestmRequestFormData = #juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFo
RestmRequestHeaders = #juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders, Overview > juneau-rest-server > @RestOp-Annotated Methods > RequestHeaders
RestmRequestPathMatch = #juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch, Overview > juneau-rest-server > @RestOp-Annotated Methods > RequestPathMatch
RestmRequestQuery = #juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery, Overview > juneau-rest-server > @RestOp-Annotated Methods > RequestQuery
-RestmRestRequest = #juneau-rest-server.RestOpAnnotatedMethods.RestmRestRequest, Overview > juneau-rest-server > @RestOp-Annotated Methods > RestRequest
-RestmRestResponse = #juneau-rest-server.RestOpAnnotatedMethods.RestmRestResponse, Overview > juneau-rest-server > @RestOp-Annotated Methods > RestResponse
RestmStreamResource = #juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource, Overview > juneau-rest-server > @RestOp-Annotated Methods > StreamResource
Security = #Security, Overview > Security Best-Practices
SecurityMarshall = #Security.SecurityMarshall, Overview > Security Best-Practices > juneau-marshall
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 ef6c074..9f5bd54 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
@@ -87,24 +87,107 @@ import org.apache.juneau.utils.*;
* Represents an HTTP request for a REST resource.
*
* <p>
- * Equivalent to {@link HttpServletRequest} except with some additional convenience methods.
+ * The {@link RestRequest} object is an extension of the <l>HttpServletRequest</l> class
+ * with various built-in convenience methods for use in building REST interfaces.
+ * It can be accessed by passing it as a parameter on your REST Java method:
+ * </p>
*
- * <p>
- * For reference, given the URL <js>"http://localhost:9080/contextRoot/servletPath/foo?bar=baz#qux"</js>, the
- * following methods return the following values....
- * <table class='styled'>
- * <tr><th>Method</th><th>Value</th></tr>
- * <tr><td>{@code getContextPath()}</td><td>{@code /contextRoot}</td></tr>
- * <tr><td>{@code getPathInfo()}</td><td>{@code /foo}</td></tr>
- * <tr><td>{@code getPathTranslated()}</td><td>{@code path-to-deployed-war-on-filesystem/foo}</td></tr>
- * <tr><td>{@code getQueryString()}</td><td>{@code bar=baz}</td></tr>
- * <tr><td>{@code getRequestURI()}</td><td>{@code /contextRoot/servletPath/foo}</td></tr>
- * <tr><td>{@code getRequestURL()}</td><td>{@code http://localhost:9080/contextRoot/servletPath/foo}</td></tr>
- * <tr><td>{@code getServletPath()}</td><td>{@code /servletPath}</td></tr>
- * </table>
+ * <p class='bcode w800'>
+ * <ja>@RestPost</ja>(...)
+ * <jk>public</jk> Object myMethod(RestRequest <jv>req</jv>) {...}
+ * </p>
*
- * <ul class='seealso'>
- * <li class='link'>{@doc RestmRestRequest}
+ * <p>
+ * The primary methods on this class are shown below:
+ * </p>
+ * <ul class='javatree'>
+ * <li class='jc'>{@link RestRequest}
+ * <ul class='spaced-list'>
+ * <li>Methods for accessing the request body:
+ * <ul class='javatreec'>
+ * <li class='jm'>{@link RestRequest#getBody() getBody()}
+ * <li class='jm'>{@link RestRequest#getInputStream() getInputStream()}
+ * <li class='jm'>{@link RestRequest#getReader() getReader()}
+ * </ul>
+ * <li>Methods for accessing HTTP parts:
+ * <ul class='javatreec'>
+ * <li class='jm'>{@link RestRequest#containsFormParam(String) containsFormParam(String)}
+ * <li class='jm'>{@link RestRequest#containsHeader(String) containsHeader(String)}
+ * <li class='jm'>{@link RestRequest#containsQueryParam(String) containsQueryParam(String)}
+ * <li class='jm'>{@link RestRequest#getHeader(Class) getHeader(Class)}
+ * <li class='jm'>{@link RestRequest#getHeader(String) getHeader(String)}
+ * <li class='jm'>{@link RestRequest#getHeaders() getHeaders()}
+ * <li class='jm'>{@link RestRequest#getFormParam(Class) getFormParam(Class)}
+ * <li class='jm'>{@link RestRequest#getFormParam(String) getFormParam(String)}
+ * <li class='jm'>{@link RestRequest#getFormParams() getFormParams()}
+ * <li class='jm'>{@link RestRequest#getPathParam(Class) getPathParam(Class)}
+ * <li class='jm'>{@link RestRequest#getPathParam(String) getPathParam(String)}
+ * <li class='jm'>{@link RestRequest#getPathParams() getPathParams()}
+ * <li class='jm'>{@link RestRequest#getPathRemainder() getPathRemainder()}
+ * <li class='jm'>{@link RestRequest#getQueryParam(Class) getQueryParam(Class)}
+ * <li class='jm'>{@link RestRequest#getQueryParam(String) getQueryParam(String)}
+ * <li class='jm'>{@link RestRequest#getQueryParams() getQueryParams()}
+ * <li class='jm'>{@link RestRequest#getQueryString() getQueryString()}
+ * </ul>
+ * <li>Methods for localization:
+ * <ul class='javatreec'>
+ * <li class='jm'>{@link RestRequest#getLocale() getLocale()}
+ * <li class='jm'>{@link RestRequest#getMessage(String,Object...) getMessage(String,Object...)}
+ * <li class='jm'>{@link RestRequest#getMessages() getMessages()}
+ * <li class='jm'>{@link RestRequest#getTimeZone() getTimeZone()}
+ * </ul>
+ * <li>Methods for accessing static files:
+ * <ul class='javatreec'>
+ * <li class='jm'>{@link RestRequest#getFileFinder() getFileFinder()}
+ * <li class='jm'>{@link RestRequest#getStaticFiles() getStaticFiles()}
+ * <li class='jm'>{@link RestRequest#getVarResolverSession() getVarResolverSession()}
+ * </ul>
+ * <li>Methods for assertions:
+ * <ul class='javatreec'>
+ * <li class='jm'>{@link RestRequest#assertBody() assertBody()}
+ * <li class='jm'>{@link RestRequest#assertCharset() assertCharset()}
+ * <li class='jm'>{@link RestRequest#assertFormParam(String) assertFormParam(String)}
+ * <li class='jm'>{@link RestRequest#assertHeader(String) assertHeader(String)}
+ * <li class='jm'>{@link RestRequest#assertQueryParam(String) assertQueryParam(String)}
+ * <li class='jm'>{@link RestRequest#assertRequestLine() assertRequestLine()}
+ * </ul>
+ * <li>Other:
+ * <ul class='javatreec'>
+ * <li class='jm'>{@link RestRequest#getAttribute(String) getAttribute(String)}
+ * <li class='jm'>{@link RestRequest#getAttributes() getAttributes()}
+ * <li class='jm'>{@link RestRequest#getAuthorityPath() getAuthorityPath()}
+ * <li class='jm'>{@link RestRequest#getBeanSession() getBeanSession()}
+ * <li class='jm'>{@link RestRequest#getCharset() getCharset()}
+ * <li class='jm'>{@link RestRequest#getConfig() getConfig()}
+ * <li class='jm'>{@link RestRequest#getContext() getContext()}
+ * <li class='jm'>{@link RestRequest#getContextPath() getContextPath()}
+ * <li class='jm'>{@link RestRequest#getHttpServletRequest() getHttpServletRequest()}
+ * <li class='jm'>{@link RestRequest#getMethod() getMethod()}
+ * <li class='jm'>{@link RestRequest#getOpContext() getOpContext()}
+ * <li class='jm'>{@link RestRequest#getOperationSwagger() getOperationSwagger()}
+ * <li class='jm'>{@link RestRequest#getPartParserSession() getPartParserSession()}
+ * <li class='jm'>{@link RestRequest#getPartSerializerSession() getPartSerializerSession()}
+ * <li class='jm'>{@link RestRequest#getPathInfo() getPathInfo()}
+ * <li class='jm'>{@link RestRequest#getProtocolVersion() getProtocolVersion()}
+ * <li class='jm'>{@link RestRequest#getRequest(Class) getRequest(Class)}
+ * <li class='jm'>{@link RestRequest#getRequestLine() getRequestLine()}
+ * <li class='jm'>{@link RestRequest#getRequestURI() getRequestURI()}
+ * <li class='jm'>{@link RestRequest#getRequestURL() getRequestURL()}
+ * <li class='jm'>{@link RestRequest#getServletPath() getServletPath()}
+ * <li class='jm'>{@link RestRequest#getSession() getSession()}
+ * <li class='jm'>{@link RestRequest#getSwagger() getSwagger()}
+ * <li class='jm'>{@link RestRequest#getUriContext() getUriContext()}
+ * <li class='jm'>{@link RestRequest#getUriResolver() getUriResolver()}
+ * <li class='jm'>{@link RestRequest#isDebug() isDebug()}
+ * <li class='jm'>{@link RestRequest#isPlainText() isPlainText()}
+ * <li class='jm'>{@link RestRequest#isUserInRole(String) isUserInRole(String)}
+ * <li class='jm'>{@link RestRequest#setAttribute(String,Object) setAttribute(String,Object)}
+ * <li class='jm'>{@link RestRequest#setCharset(Charset) setCharset(Charset)}
+ * <li class='jm'>{@link RestRequest#setDebug() setDebug()}
+ * <li class='jm'>{@link RestRequest#setException(Throwable) setException(Throwable)}
+ * <li class='jm'>{@link RestRequest#setNoTrace() setNoTrace()}
+ * </ul>
+ * </ul>
* </ul>
*/
@SuppressWarnings({ "unchecked", "unused" })
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 acc4570..6496634 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
@@ -41,23 +41,63 @@ import org.apache.juneau.serializer.*;
* Represents an HTTP response for a REST resource.
*
* <p>
- * Essentially an extended {@link HttpServletResponse} with some special convenience methods that allow you to easily
- * output POJOs as responses.
- *
- * <p>
- * Since this class extends {@link HttpServletResponse}, developers are free to use these convenience methods, or
- * revert to using lower level methods like any other servlet response.
+ * The {@link RestResponse} object is an extension of the <l>HttpServletResponse</l> class
+ * with various built-in convenience methods for use in building REST interfaces.
+ * It can be accessed by passing it as a parameter on your REST Java method:
+ * </p>
*
- * <h5 class='section'>Example:</h5>
* <p class='bcode w800'>
- * <ja>@RestGet</ja>
- * <jk>public void</jk> doGet(RestResponse <jv>res</jv>) {
- * <jv>res</jv>.setOutput(<js>"Simple string response"</js>);
- * }
+ * <ja>@RestPost</ja>(...)
+ * <jk>public</jk> Object myMethod(RestResponse <jv>res</jv>) {...}
* </p>
*
- * <ul class='seealso'>
- * <li class='link'>{@doc RestmRestResponse}
+ * <p>
+ * The primary methods on this class are shown below:
+ * </p>
+ * <ul class='javatree'>
+ * <li class='jc'>{@link RestResponse}
+ * <ul class='spaced-list'>
+ * <li>Methods for setting response headers:
+ * <ul class='javatreec'>
+ * <li class='jm'>{@link RestResponse#addHeader(Header) addHeader(Header)}
+ * <li class='jm'>{@link RestResponse#addHeader(String,String) addHeader(String,String)}
+ * <li class='jm'>{@link RestResponse#containsHeader(String) containsHeader(String)}
+ * <li class='jm'>{@link RestResponse#getHeader(String) getHeader(String)}
+ * <li class='jm'>{@link RestResponse#setCharacterEncoding(String) setCharacterEncoding(String)}
+ * <li class='jm'>{@link RestResponse#setContentType(String) setContentType(String)}
+ * <li class='jm'>{@link RestResponse#setHeader(Header) setHeader(Header)}
+ * <li class='jm'>{@link RestResponse#setHeader(HttpPartSchema,String,Object) setHeader(HttpPartSchema,String,Object)}
+ * <li class='jm'>{@link RestResponse#setHeader(String,Object) setHeader(String,Object)}
+ * <li class='jm'>{@link RestResponse#setHeader(String,String) setHeader(String,String)}
+ * <li class='jm'>{@link RestResponse#setMaxHeaderLength(int) setMaxHeaderLength(int)}
+ * <li class='jm'>{@link RestResponse#setSafeHeaders() setSafeHeaders()}
+ * </ul>
+ * <li>Methods for setting response bodies:
+ * <ul class='javatreec'>
+ * <li class='jm'>{@link RestResponse#flushBuffer() flushBuffer()}
+ * <li class='jm'>{@link RestResponse#getDirectWriter(String) getDirectWriter(String)}
+ * <li class='jm'>{@link RestResponse#getNegotiatedOutputStream() getNegotiatedOutputStream()}
+ * <li class='jm'>{@link RestResponse#getNegotiatedWriter() getNegotiatedWriter()}
+ * <li class='jm'>{@link RestResponse#getSerializerMatch() getSerializerMatch()}
+ * <li class='jm'>{@link RestResponse#getWriter() getWriter()}
+ * <li class='jm'>{@link RestResponse#sendPlainText(String) sendPlainText(String)}
+ * <li class='jm'>{@link RestResponse#sendRedirect(String) sendRedirect(String)}
+ * <li class='jm'>{@link RestResponse#setBodySchema(HttpPartSchema) setBodySchema(HttpPartSchema)}
+ * <li class='jm'>{@link RestResponse#setOutput(Object) setOutput(Object)}
+ * <li class='jm'>{@link RestResponse#setResponseBeanMeta(ResponseBeanMeta) setResponseBeanMeta(ResponseBeanMeta)}
+ * <li class='jm'>{@link RestResponse#setException(Throwable) setException(Throwable)}
+ * </ul>
+ * <li>Other:
+ * <ul class='javatreec'>
+ * <li class='jm'>{@link RestResponse#getAttributes() getAttributes()}
+ * <li class='jm'>{@link RestResponse#getContext() getContext()}
+ * <li class='jm'>{@link RestResponse#getOpContext() getOpContext()}
+ * <li class='jm'>{@link RestResponse#setAttribute(String,Object) setAttribute(String,Object)}
+ * <li class='jm'>{@link RestResponse#setDebug() setDebug()}
+ * <li class='jm'>{@link RestResponse#setNoTrace() setNoTrace()}
+ * <li class='jm'>{@link RestResponse#setStatus(int) setStatus(int)}
+ * </ul>
+ * </ul>
* </ul>
*/
public final class RestResponse {
@@ -199,7 +239,7 @@ public final class RestResponse {
* @param value The property value.
* @return This object.
*/
- public RestResponse attr(String name, Object value) {
+ public RestResponse setAttribute(String name, Object value) {
request.setAttribute(name, value);
return this;
}
@@ -545,22 +585,8 @@ public final class RestResponse {
* @throws SchemaValidationException Header failed schema validation.
* @throws SerializeException Header could not be serialized.
*/
- public RestResponse header(String name, Object value) throws SchemaValidationException, SerializeException {
- return header(null, null, name, value);
- }
-
- /**
- * Sets a header from a {@link NameValuePair}.
- *
- * <p>
- * Note that this bypasses the part serializer and set the header value directly.
- *
- * @param pair The header to set. Nulls are ignored.
- * @return This object.
- */
- public RestResponse header(NameValuePair pair) {
- if (pair != null)
- setHeader(pair.getName(), pair.getValue());
+ public RestResponse setHeader(String name, Object value) throws SchemaValidationException, SerializeException {
+ setHeader(name, request.getPartSerializerSession().serialize(HEADER, null, value));
return this;
}
@@ -579,30 +605,8 @@ public final class RestResponse {
* @throws SchemaValidationException Header failed schema validation.
* @throws SerializeException Header could not be serialized.
*/
- public RestResponse header(HttpPartSchema schema, String name, Object value) throws SchemaValidationException, SerializeException {
- return header(null, schema, name, value);
- }
-
- /**
- * Sets a header on the request.
- * @param serializer
- * The serializer to use to serialize the header, or <jk>null</jk> to use the part serializer on the request.
- * @param schema
- * The schema to use to serialize the header, or <jk>null</jk> to use the default schema.
- * @param name The header name.
- * @param value The header value.
- * <ul>
- * <li>Can be any POJO.
- * <li>Converted to a string using the specified part serializer.
- * </ul>
- * @return This object.
- * @throws SchemaValidationException Header failed schema validation.
- * @throws SerializeException Header could not be serialized.
- */
- public RestResponse header(HttpPartSerializerSession serializer, HttpPartSchema schema, String name, Object value) throws SchemaValidationException, SerializeException {
- if (serializer == null)
- serializer = request.getPartSerializerSession();
- setHeader(name, serializer.serialize(HEADER, schema, value));
+ public RestResponse setHeader(HttpPartSchema schema, String name, Object value) throws SchemaValidationException, SerializeException {
+ setHeader(name, request.getPartSerializerSession().serialize(HEADER, schema, value));
return this;
}
@@ -615,23 +619,12 @@ public final class RestResponse {
* @param schema The body schema
* @return This object.
*/
- public RestResponse bodySchema(HttpPartSchema schema) {
+ public RestResponse setBodySchema(HttpPartSchema schema) {
this.bodySchema = ofNullable(schema);
return this;
}
/**
- * Same as {@link #setHeader(String, String)} but header is defined as a response part
- *
- * @param h Header to set.
- * @throws SchemaValidationException Header part did not pass validation.
- * @throws SerializeException Header part could not be serialized.
- */
- public void setHeader(HttpPart h) throws SchemaValidationException, SerializeException {
- setHeader(h.getName(), h.getValue());
- }
-
- /**
* Sets the <js>"Exception"</js> attribute to the specified throwable.
*
* <p>
@@ -811,7 +804,7 @@ public final class RestResponse {
*
* @return This object.
*/
- public RestResponse safeHeaders() {
+ public RestResponse setSafeHeaders() {
this.safeHeaders = true;
return this;
}
@@ -825,7 +818,7 @@ public final class RestResponse {
* @param value The new value for this setting. The default is <c>8096</c>.
* @return This object.
*/
- public RestResponse maxHeaderLength(int value) {
+ public RestResponse setMaxHeaderLength(int value) {
this.maxHeaderLength = value;
return this;
}
@@ -881,7 +874,10 @@ public final class RestResponse {
setHeader(x.getName(), resolveUris(x.getValue()));
} else if (header instanceof SerializedHeader) {
SerializedHeader x = ((SerializedHeader)header).copyWith(request.getPartSerializerSession(), null);
- setHeader(x.getName(), resolveUris(x.getValue()));
+ String v = x.getValue();
+ if (v != null && v.indexOf("://") != -1)
+ v = resolveUris(v);
+ setHeader(x.getName(), v);
} else {
setHeader(header.getName(), header.getValue());
}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseHeaderArg.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseHeaderArg.java
index beea630..bdde9be 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseHeaderArg.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseHeaderArg.java
@@ -13,18 +13,17 @@
package org.apache.juneau.rest.args;
import static java.util.Optional.*;
-import static org.apache.juneau.internal.ThrowableUtils.*;
import static org.apache.juneau.internal.StringUtils.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
import org.apache.juneau.http.annotation.*;
+import org.apache.juneau.http.header.*;
import org.apache.juneau.httppart.*;
import org.apache.juneau.reflect.*;
import org.apache.juneau.rest.*;
import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.serializer.*;
/**
* Resolves method parameters annotated with {@link ResponseHeader} on {@link RestOp}-annotated Java methods.
@@ -90,17 +89,13 @@ public class ResponseHeaderArg implements RestOpArg {
v.listener(new ValueListener() {
@Override
public void onSet(Object o) {
- try {
- RestRequest req = opSession.getRequest();
- RestResponse res = opSession.getResponse();
- ResponsePartMeta rpm = req.getOpContext().getResponseHeaderMeta(o);
- if (rpm == null)
- rpm = ResponseHeaderArg.this.meta;
- HttpPartSerializerSession pss = rpm.getSerializer() == null ? req.getPartSerializerSession() : rpm.getSerializer().getPartSession();
- res.setHeader(new HttpPart(name, HttpPartType.HEADER, rpm.getSchema(), pss, o));
- } catch (SerializeException | SchemaValidationException e) {
- throw runtimeException(e);
- }
+ RestRequest req = opSession.getRequest();
+ RestResponse res = opSession.getResponse();
+ ResponsePartMeta rpm = req.getOpContext().getResponseHeaderMeta(o);
+ if (rpm == null)
+ rpm = ResponseHeaderArg.this.meta;
+ HttpPartSerializerSession pss = rpm.getSerializer() == null ? req.getPartSerializerSession() : rpm.getSerializer().getPartSession();
+ res.setHeader(new SerializedHeader(name, o, pss, rpm.getSchema(), false));
}
});
return v;
diff --git a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_RVars_Test.java b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_RVars_Test.java
index 6b97714..a2577ee 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_RVars_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_RVars_Test.java
@@ -54,9 +54,9 @@ public class Rest_RVars_Test {
serializers=A1.class
)
public void a(RestResponse res) {
- res.attr("A2", "c");
- res.attr("B2", "c");
- res.attr("C", "c");
+ res.setAttribute("A2", "c");
+ res.setAttribute("B2", "c");
+ res.setAttribute("C", "c");
res.setOutput(null);
}
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 951803c..b42659d 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
@@ -440,7 +440,7 @@ public class RestClient_Config_RestClient_Test {
assertObject(req.getHeaders().getAll("Foo").stream().map(RequestHeader::getValue).collect(Collectors.toList())).asJson().is("['x{f:1}','x{f:1}']");
assertEquals("{f:1}",foo[0].toString());
assertEquals("{f:1}",foo[1].toString());
- res.header("Foo",bean);
+ res.setHeader("Foo",bean);
return OK;
}
}