This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new ca91267 Javadocs
ca91267 is described below
commit ca9126758a57037b6529dd2761c482e1a2fd969f
Author: JamesBognar <[email protected]>
AuthorDate: Mon Dec 6 10:07:51 2021 -0500
Javadocs
---
.../02.JavaMethodParameters.html | 3 +-
.../Topics/06.juneau-rest-server/04.HttpParts.html | 8 +-
.../04.HttpParts/02.HttpPartAnnotations.html | 30 +-
.../04.HttpParts/04.ResponseBeans.html | 2 +-
.../04.HttpParts/05.HttpPartApis.html | 29 ++
.../05.RestHandlingFormPosts.html | 123 +++++-
.../06.RestHandlingMultiPartFormPosts.html | 87 ----
...estSerializers.html => 06.RestSerializers.html} | 0
.../{08.RestParsers.html => 07.RestParsers.html} | 0
...ies.html => 08.RestConfigurableProperties.html} | 0
...ns.html => 09.RestConfigurableAnnotations.html} | 0
....RestTransforms.html => 10.RestTransforms.html} | 0
...tHandlingUris.html => 11.RestHandlingUris.html} | 0
.../{13.RestGuards.html => 12.RestGuards.html} | 0
....RestRoleGuards.html => 13.RestRoleGuards.html} | 0
....RestConverters.html => 14.RestConverters.html} | 0
.../{16.RestMessages.html => 15.RestMessages.html} | 0
.../{17.RestEncoders.html => 16.RestEncoders.html} | 0
...tSvlVariables.html => 17.RestSvlVariables.html} | 0
...onFiles.html => 18.RestConfigurationFiles.html} | 0
...estStaticFiles.html => 19.RestStaticFiles.html} | 0
...ersioning.html => 20.RestClientVersioning.html} | 0
...tInfoProvider.html => 21.RestInfoProvider.html} | 0
.../01.BasicRestInfoProvider.html | 0
.../{23.RestSwagger.html => 22.RestSwagger.html} | 0
.../01.RestSwaggerBasicRestServlet.html | 0
.../02.RestSwaggerBasicSwaggerInfo.html | 0
.../03.RestSwaggerTags.html | 0
.../04.RestSwaggerOperations.html | 0
.../05.RestSwaggerParameters.html | 0
.../06.RestSwaggerParameterExamples.html | 0
.../07.RestSwaggerResponses.html | 0
.../08.RestSwaggerResponseExamples.html | 0
.../09.RestSwaggerModels.html | 0
.../10.RestSwaggerStylesheet.html | 0
.../juneau-rest-server.Swagger.Models.1.png | Bin
.../juneau-rest-server.Swagger.Models.2.png | Bin
.../juneau-rest-server.Swagger.Models.3.png | Bin
.../juneau-rest-server.Swagger.Operations.1.png | Bin
.../juneau-rest-server.Swagger.Operations.2.png | Bin
.../juneau-rest-server.Swagger.Operations.3.png | Bin
.../juneau-rest-server.Swagger.Parameters.1.png | Bin
.../juneau-rest-server.Swagger.Parameters.2.png | Bin
.../juneau-rest-server.Swagger.Parameters.3.png | Bin
.../juneau-rest-server.Swagger.Parameters.4.png | Bin
...neau-rest-server.Swagger.ResponseExamples.1.png | Bin
...neau-rest-server.Swagger.ResponseExamples.2.png | Bin
...neau-rest-server.Swagger.ResponseExamples.3.png | Bin
...neau-rest-server.Swagger.ResponseExamples.4.png | Bin
...istics.html => 23.RestExecutionStatistics.html} | 0
...notation.html => 24.RestHtmlDocAnnotation.html} | 0
.../01.RestHtmlUIvsDI.html | 0
.../02.RestHtmlWidgets.html | 0
.../03.RestHtmlPredefinedWidgets.html | 0
.../04.RestHtmlUiCustomization.html | 0
.../05.RestHtmlStylesheets.html | 0
...erver.HtmlDocAnnotation.PredefinedWidgets.1.png | Bin
...erver.HtmlDocAnnotation.PredefinedWidgets.2.png | Bin
...erver.HtmlDocAnnotation.PredefinedWidgets.3.png | Bin
...erver.HtmlDocAnnotation.PredefinedWidgets.4.png | Bin
...aultHeaders.html => 25.RestDefaultHeaders.html} | 0
...ugging.html => 26.RestLoggingAndDebugging.html} | 0
...tatusCodes.html => 27.RestHttpStatusCodes.html} | 0
...ods.html => 28.RestOverloadingHttpMethods.html} | 0
...rameters.html => 29.RestBuiltInParameters.html} | 0
...tml => 30.RestCustomSerializersAndParsers.html} | 0
...singWithOsgi.html => 31.RestUsingWithOsgi.html} | 0
...33.RestInjection.html => 32.RestInjection.html} | 0
.../{34.RestHttp2.html => 33.RestHttp2.html} | 0
....RestOtherNotes.html => 34.RestOtherNotes.html} | 0
.../{36.RestContext.html => 35.RestContext.html} | 0
.../{37.RestRpc.html => 36.RestRpc.html} | 0
.../11.RestcProxies/09.RestcResponse.html | 8 +-
.../20.Glossaries/02.GlossaryAnnotations.html | 12 +-
juneau-doc/src/main/javadoc/overview.html | 474 +++++++++++----------
juneau-doc/src/main/javadoc/resources/docs.txt | 3 +-
.../src/main/javadoc/resources/fragments/toc.html | 3 +-
77 files changed, 396 insertions(+), 386 deletions(-)
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/02.JavaMethodParameters.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/02.JavaMethodParameters.html
index 664ad8c..9d71bf2 100644
---
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/02.JavaMethodParameters.html
+++
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/02.JavaMethodParameters.html
@@ -141,11 +141,10 @@
<li class='ja'>{@link oaj.http.annotation.Query}
<li class='ja'>{@link oaj.http.annotation.HasQuery}
<li class='ja'>{@link oaj.http.annotation.Header}
+ <li class='ja'>{@link oaj.http.annotation.StatusCode}
<li class='ja'>{@link oajr.annotation.Method}
<li class='ja'>{@link oaj.http.annotation.Request}
<li class='ja'>{@link oaj.http.annotation.Response}
- <li class='ja'>{@link
oaj.http.annotation.ResponseHeader}
- <li class='ja'>{@link oaj.http.annotation.ResponseCode}
</ul>
</ul>
<p>
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts.html
index 042d6b6..195b240 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts.html
@@ -41,6 +41,7 @@
<ul class='spaced-list'>
<li>HTTP request parts:
<ul class='javatreec'>
+ <li class='ja'>{@link oaj.http.annotation.Request}
<li class='ja'>{@link oaj.http.annotation.Body}
<li class='ja'>{@link oaj.http.annotation.Header}
<li class='ja'>{@link oaj.http.annotation.FormData}
@@ -48,14 +49,13 @@
<li class='ja'>{@link oaj.http.annotation.Path}
<li class='ja'>{@link oaj.http.annotation.HasFormData}
<li class='ja'>{@link oaj.http.annotation.HasQuery}
- <li class='ja'>{@link oaj.http.annotation.Request}
</ul>
<li>HTTP response parts:
<ul class='javatreec'>
- <li class='ja'>{@link oaj.http.annotation.ResponseBody}
- <li class='ja'>{@link oaj.http.annotation.ResponseHeader}
- <li class='ja'>{@link oaj.http.annotation.ResponseCode}
<li class='ja'>{@link oaj.http.annotation.Response}
+ <li class='ja'>{@link oaj.http.annotation.Body}
+ <li class='ja'>{@link oaj.http.annotation.Header}
+ <li class='ja'>{@link oaj.http.annotation.StatusCode}
</ul>
<li>Sub-annotations:
<ul class='javatreec'>
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/02.HttpPartAnnotations.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/02.HttpPartAnnotations.html
index abcd4a9..df563e0 100644
---
a/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/02.HttpPartAnnotations.html
+++
b/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/02.HttpPartAnnotations.html
@@ -26,14 +26,12 @@
<li class='jm'>{@link oaj.http.annotation.Request#on()
on()}
<li class='jm'>{@link
oaj.http.annotation.Request#onClass() onClass()}
<li class='jm'>{@link
oaj.http.annotation.Request#parser() parser()}
- <li class='jm'>{@link
oaj.http.annotation.Request#serializer() serializer()}
</ul>
<li class='ja'>{@link oaj.http.annotation.Header}
<ul class='javatreec'>
<li class='jm'>{@link oaj.http.annotation.Header#name()
name()}
<li class='jm'>{@link
oaj.http.annotation.Header#parser() parser()}
<li class='jm'>{@link
oaj.http.annotation.Header#schema() schema()}
- <li class='jm'>{@link
oaj.http.annotation.Header#serializer() serializer()}
<li class='jm'>{@link
oaj.http.annotation.Header#value() value()}
</ul>
<li class='ja'>{@link oaj.http.annotation.Query}
@@ -41,7 +39,6 @@
<li class='jm'>{@link oaj.http.annotation.Query#name()
name()}
<li class='jm'>{@link
oaj.http.annotation.Query#parser() parser()}
<li class='jm'>{@link
oaj.http.annotation.Query#schema() schema()}
- <li class='jm'>{@link
oaj.http.annotation.Query#serializer() serializer()}
<li class='jm'>{@link oaj.http.annotation.Query#value()
value()}
</ul>
<li class='ja'>{@link oaj.http.annotation.FormData}
@@ -49,7 +46,6 @@
<li class='jm'>{@link
oaj.http.annotation.FormData#name() name()}
<li class='jm'>{@link
oaj.http.annotation.FormData#parser() parser()}
<li class='jm'>{@link
oaj.http.annotation.FormData#schema() schema()}
- <li class='jm'>{@link
oaj.http.annotation.FormData#serializer() serializer()}
<li class='jm'>{@link
oaj.http.annotation.FormData#value() value()}
</ul>
<li class='ja'>{@link oaj.http.annotation.Path}
@@ -57,13 +53,10 @@
<li class='jm'>{@link oaj.http.annotation.Path#name()
name()}
<li class='jm'>{@link oaj.http.annotation.Path#parser()
parser()}
<li class='jm'>{@link oaj.http.annotation.Path#schema()
schema()}
- <li class='jm'>{@link
oaj.http.annotation.Path#serializer() serializer()}
<li class='jm'>{@link oaj.http.annotation.Path#value()
value()}
</ul>
<li class='ja'>{@link oaj.http.annotation.Body}
<ul class='javatreec'>
- <li class='jm'>{@link oaj.http.annotation.Body#on()
on()}
- <li class='jm'>{@link
oaj.http.annotation.Body#onClass() onClass()}
<li class='jm'>{@link oaj.http.annotation.Body#schema()
schema()}
</ul>
</ul>
@@ -75,24 +68,23 @@
<li class='jm'>{@link
oaj.http.annotation.Response#headers() headers()}
<li class='jm'>{@link oaj.http.annotation.Response#on()
on()}
<li class='jm'>{@link
oaj.http.annotation.Response#onClass() onClass()}
- <li class='jm'>{@link
oaj.http.annotation.Response#parser() parser()}
<li class='jm'>{@link
oaj.http.annotation.Response#schema() schema()}
<li class='jm'>{@link
oaj.http.annotation.Response#serializer() serializer()}
</ul>
- <li class='ja'>{@link oaj.http.annotation.ResponseHeader}
+ <li class='ja'>{@link oaj.http.annotation.Header}
+ <ul class='javatreec'>
+ <li class='jm'>{@link oaj.http.annotation.Header#name()
name()}
+ <li class='jm'>{@link
oaj.http.annotation.Header#schema() schema()}
+ <li class='jm'>{@link
oaj.http.annotation.Header#serializer() serializer()}
+ <li class='jm'>{@link
oaj.http.annotation.Header#value() value()}
+ </ul>
+ <li class='ja'>{@link oaj.http.annotation.Body}
<ul class='javatreec'>
- <li class='jm'>{@link
oaj.http.annotation.ResponseHeader#name() name()}
- <li class='jm'>{@link
oaj.http.annotation.ResponseHeader#on() on()}
- <li class='jm'>{@link
oaj.http.annotation.ResponseHeader#onClass() onClass()}
- <li class='jm'>{@link
oaj.http.annotation.ResponseHeader#schema() schema()}
- <li class='jm'>{@link
oaj.http.annotation.ResponseHeader#serializer() serializer()}
- <li class='jm'>{@link
oaj.http.annotation.ResponseHeader#value() value()}
+ <li class='jm'>{@link oaj.http.annotation.Body#schema()
schema()}
</ul>
- <li class='ja'>{@link oaj.http.annotation.ResponseCode}
+ <li class='ja'>{@link oaj.http.annotation.StatusCode}
<ul class='javatreec'>
- <li class='jm'>{@link
oaj.http.annotation.ResponseCode#on() on()}
- <li class='jm'>{@link
oaj.http.annotation.ResponseCode#onClass() onClass()}
- <li class='jm'>{@link
oaj.http.annotation.ResponseCode#value() value()}
+ <li class='jm'>{@link
oaj.http.annotation.StatusCode#value() value()}
</ul>
</ul>
<li><b>Common schema annotation:</b>
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/04.ResponseBeans.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/04.ResponseBeans.html
index 2f010c2..fdcd7d3 100644
---
a/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/04.ResponseBeans.html
+++
b/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/04.ResponseBeans.html
@@ -52,7 +52,7 @@
<jc>// Response bean converted to output based on Accept
header.</jc>
<ja>@Body</ja>
<jk>public</jk> WelcomeMessageBean getBody() {
- <jk>return new </jk> WelcomeMessageBean();
+ <jk>return new</jk> WelcomeMessageBean();
}
}
</p>
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/05.HttpPartApis.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/05.HttpPartApis.html
index 4c19568..6fbe4dd 100644
---
a/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/05.HttpPartApis.html
+++
b/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/05.HttpPartApis.html
@@ -25,3 +25,32 @@
<li class='jc'>{@link oajr.RequestFormParams}
<li class='jc'>{@link oajr.RequestPathParams}
</ul>
+<h5 class='figure'>Example:</h5>
+<p class='bpcode w800'>
+ <ja>@RestPost</ja>(...)
+ <jk>public</jk> Object myMethod(RequestHeaders <jv>headers</jv>) {
+
+ <jc>// Add a default value.</jc>
+ <jv>headers</jv>.addDefault(<js>"ETag"</js>,
<jsf>DEFAULT_UUID</jsf>);
+
+ <jc>// Get a header value as a POJO.</jc>
+ UUID <jv>etag</jv> =
<jv>headers</jv>.get(<js>"ETag"</js>).as(UUID.<jk>class</jk>).get();
+
+ <jc>// Get a header as a standard HTTP part.</jc>
+ ContentType <jv>contentType</jv> =
<jv>headers</jv>.get(ContentType.<jk>class</jk>).orElse(ContentType.<jsf>TEXT_XML</jsf>);
+ }
+</p>
+<p>
+ Built in to these APIs are various convenience methods such as
converting parts to
+ different types or inline fluent assertions:
+</p>
+<h5 class='figure'>Example:</h5>
+<p class='bpcode w800'>
+ <jc>// Inline fluent assertion and retrieval.</jc>
+ String <jv>foo</jv> = <jv>request</jv>
+ .getHeader(<js>"Foo"</js>)
+ .assertString().contains(<js>"bar"</js>)
+ .get();
+</p>
+
+
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/05.RestHandlingFormPosts.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/05.RestHandlingFormPosts.html
index ab30676..c5d13a4 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/05.RestHandlingFormPosts.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/05.RestHandlingFormPosts.html
@@ -13,54 +13,131 @@
***************************************************************************************************************************/
-->
-{title:'Handling Form Posts', flags:'todo'}
+{title:'Form Posts', updated:'9.0.0'}
<p>
- The best way to handle a form post is usually by using an input bean.
- The following is a class that takes in URL-Encoded form post of the
- form
<l>"aString=foo&aNumber=123&aDate=2001-07-04T15:30:45Z"</l>.
+ HTTP form posts can be handled two ways:
+</p>
+<ol class='spaced-list'>
+ <li>By parsing the entire HTTP body into a POJO using the registered
{@link oaj.urlencoding.UrlEncodingParser}
+ <li>By access the form post entries as HTTP parts.
+</ol>
+<p>
+ The following example shows the first approach of handling an
<c>application/x-www-form-urlencoded</c>
+ request of the form
<l>"aString=foo&aNumber=123&aDate=2001-07-04T15:30:45Z"</l> and
+ loading it into a simple bean.
</p>
<p class='bpcode w800'>
- <ja>@Rest</ja>(
- path=<js>"/urlEncodedForm"</js>
- )
- <jk>public class</jk> UrlEncodedFormResource <jk>extends</jk>
BasicRestServlet {
+ <jc>// A simple bean.</jc>
+ <jk>public static class</jk> FormInputBean {
+ <jk>public</jk> String <jf>aString</jf>;
+ <jk>public int</jk> <jf>aNumber</jf>;
+
<ja>@Swap</ja>(TemporalCalendarSwap.IsoLocalDateTime.<jk>class</jk>)
+ <jk>public</jk> Calendar <jf>aDate</jf>;
+ }
+</p>
+<p class='bpcode w800'>
+ <ja>@Rest</ja>(...)
+ <jk>public class</jk> MyRestResource <jk>extends</jk> BasicRestServlet {
- <jd>/** POST request handler */</jd>
+ <jc>// Our form input endpoint.</jc>
<ja>@RestPost</ja>(<js>"/"</js>)
- <jk>public</jk> Object doPost(<ja>@Body</ja> FormInputBean
input) <jk>throws</jk> Exception {
+ <jk>public</jk> Object doPost(<ja>@Body</ja> FormInputBean
input) {
<jc>// Just mirror back the request</jc>
<jk>return</jk> input;
}
-
- <jk>public static class</jk> FormInputBean {
- <jk>public</jk> String <jf>aString</jf>;
- <jk>public int</jk> <jf>aNumber</jf>;
-
<ja>@Swap</ja>(TemporalCalendarSwap.IsoLocalDateTime.<jk>class</jk>)
- <jk>public</jk> Calendar <jf>aDate</jf>;
- }
}
</p>
<p>
- Another possibility is to access the form parameters individually:
+ The next example shows handling it as individual parts:
</p>
<p class='bpcode w800'>
- <jd>/** POST request handler */</jd>
+ <jc>// Our form input endpoint.</jc>
<ja>@RestPost</ja>(<js>"/"</js>)
- <jk>public</jk> Object doPost(<ja>@FormData</ja>(<js>"aString"</js>)
String <jv>aString</jv>, <ja>@FormData</ja>(<js>"aNumber"</js>) <jk>int</jk>
<jv>aNumber</jv>, <ja>@FormData</ja>(<js>"aDate"</js>) Calendar <jv>aDate</jv>)
<jk>throws</jk> Exception {
+ <jk>public</jk> Object doPost(
+ <ja>@FormData</ja>(<js>"aString"</js>) String <jv>aString</jv>,
+ <ja>@FormData</ja>(<js>"aNumber"</js>) <jk>int</jk>
<jv>aNumber</jv>, <
+ <ja>@FormData</ja>(<js>"aDate"</js>) Calendar <jv>aDate</jv>) {
...
}
</p>
<p>
The advantage to the form input bean is that it can handle any of the
parsable types (e.g. JSON, XML...)
- in addition to URL-Encoding.
- The latter approach only supports URL-Encoding.
+ in addition to URL-Encoding while the latter approach only supports
URL-Encoding.
</p>
<div class='warn'>
If you're using form input beans, DO NOT use the <l>@FormData</l>
attribute or
- {@del RestRequest#getParameter(String)} method since this will cause
the
+ {@link javax.servlet.http.HttpServletRequest#getParameter(String)}
method since this will cause the
underlying JEE servlet to parse the HTTP body as a form post.
<br>Your input bean will end up being null since there won't be any
content left after the servlet
has parsed the body of the request.
<br>This applies to WHENEVER you use <l>@Body</l> or {@link
oajr.RestRequest#getBody()}
</div>
+
+<h5 class='topic'>Multi-part Form Posts</h5>
+<p>
+ The Juneau framework does not natively support multipart form posts.
+ However, it can be done in conjunction with the Apache Commons File
Upload library or through the Servlet 3.0 API directly.
+</p>
+<p>
+ The following is an example that uses the File Upload library to allow
files to be uploaded as multipart form posts.
+</p>
+<h5 class='figure'>Example:</h5>
+<p class='bpcode w800'>
+ <ja>@Rest</ja>(
+ path=<js>"/tempDir"</js>
+ )
+ <jk>public class</jk> TempDirResource <jk>extends</jk>
DirectoryResource {
+
+ <ja>@RestPost</ja>(path=<js>"/upload"</js>,
matchers=TempDirResource.MultipartFormDataMatcher.<jk>class</jk>)
+ <jk>public</jk> Redirect uploadFile(RestRequest <jv>req</jv>)
<jk>throws</jk> Exception {
+ ServletFileUpload <jv>upload</jv> = <jk>new</jk>
ServletFileUpload();
+ FileItemIterator <jv>iter</jv> =
<jv>upload</jv>.getItemIterator(<jv>req</jv>);
+ <jk>while</jk> (<jv>iter</jv>.hasNext()) {
+ FileItemStream <jv>item</jv> =
<jv>iter</jv>.next();
+ <jk>if</jk>
(<jv>item</jv>.getFieldName().equals(<js>"contents"</js>)) {
+ File <jv>f</jv> = <jk>new</jk>
File(getRootDir(), <jv>item</jv>.getName());
+
IOPipe.<jsm>create</jsm>(<jv>item</jv>.openStream(), <jk>new</jk>
FileOutputStream(<jv>f</jv>)).closeOut().run();
+ }
+ }
+ <jk>return new</jk> Redirect(); <jc>// Redirect to the
servlet root.</jc>
+ }
+
+ <jd>/** Causes a 404 if POST isn't multipart/form-data */</jd>
+ <jk>public static class</jk> MultipartFormDataMatcher
<jk>extends</jk> RestMatcher {
+
+ <ja>@Override</ja> <jc>/* RestMatcher */</jc>
+ <jk>public boolean</jk> matches(RestRequest
<jv>req</jv>) {
+ String <jv>contentType</jv> =
<jv>req</jv>.getContentType();
+ <jk>return</jk> <jv>contentType</jv> !=
<jk>null</jk> &&
contentType.startsWith(<js>"multipart/form-data"</js>);
+ }
+ }
+</p>
+<p>
+ The following shows using the <l>HttpServletRequest.getParts()</l>
method to retrieve multi-part form posts when using Jetty.
+ This example is pulled from the PetStore application.
+</p>
+<p class='bpcode w800'>
+ <ja>@RestPost</ja>
+ <jk>public</jk> SeeOtherRoot uploadFile(RestRequest <jv>req</jv>)
<jk>throws</jk> Exception {
+
+ <jc>// Required for Jetty.</jc>
+ MultipartConfigElement <jv>mce</jv> = <jk>new</jk>
MultipartConfigElement((String)<jk>null</jk>);
+
<jv>req</jv>.setAttribute(<js>"org.eclipse.jetty.multipartConfig"</js>,
<jv>mce</jv>);
+
+ String <jv>id</jv> = UUID.<jsm>randomUUID</jsm>().toString();
+ BufferedImage <jv>img</jv> = <jk>null</jk>;
+ <jk>for</jk> (Part <jv>part</jv> : <jv>req</jv>.getParts()) {
+ <jk>switch</jk> (<jv>part</jv>.getName()) {
+ <jk>case</jk> <js>"id"</js>:
+ <jv>id</jv> =
IOUtils.<jsm>read</jsm>(<jv>part</jv>.getInputStream());
+ <jk>break</jk>;
+ <jk>case</jk> <js>"file"</js>:
+ <jv>img</jv> =
ImageIO.<jsm>read</jsm>(<jv>part</jv>.getInputStream());
+ }
+ }
+ <jsm>addPhoto</jsm>(<jv>id</jv>, <jv>img</jv>);
+ <jk>return new</jk> SeeOtherRoot(); <jc>// Redirect to the
servlet root.</jc>
+ }
+</p>
+
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/06.RestHandlingMultiPartFormPosts.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/06.RestHandlingMultiPartFormPosts.html
deleted file mode 100644
index 1db7d19..0000000
---
a/juneau-doc/docs/Topics/06.juneau-rest-server/06.RestHandlingMultiPartFormPosts.html
+++ /dev/null
@@ -1,87 +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:'Handling Multi-Part Form Posts', updated:'8.0.0', flags:'todo'}
-
-<p>
- The Juneau framework does not natively support multipart form posts.
- However, it can be done in conjunction with the Apache Commons File
Upload library or through the Servlet 3.0 API directly.
-</p>
-<p>
- The following is an example that uses the File Upload library to allow
files to be uploaded as multipart form posts.
-</p>
-<h5 class='figure'>Example:</h5>
-<p class='bpcode w800'>
- <ja>@Rest</ja>(
- path=<js>"/tempDir"</js>
- )
- <jk>public class</jk> TempDirResource <jk>extends</jk>
DirectoryResource {
-
- <jd>/**
- * [POST /upload] - Upload a file as a multipart form post.
- * Shows how to use the Apache Commons ServletFileUpload class
for handling multi-part form posts.
- */</jd>
- <ja>@RestPost</ja>(path=<js>"/upload"</js>,
matchers=TempDirResource.MultipartFormDataMatcher.<jk>class</jk>)
- <jk>public</jk> Redirect uploadFile(RestRequest <jv>req</jv>)
<jk>throws</jk> Exception {
- ServletFileUpload <jv>upload</jv> = <jk>new</jk>
ServletFileUpload();
- FileItemIterator <jv>iter</jv> =
<jv>upload</jv>.getItemIterator(<jv>req</jv>);
- <jk>while</jk> (<jv>iter</jv>.hasNext()) {
- FileItemStream <jv>item</jv> =
<jv>iter</jv>.next();
- <jk>if</jk>
(<jv>item</jv>.getFieldName().equals(<js>"contents"</js>)) {
- File <jv>f</jv> = <jk>new</jk>
File(getRootDir(), <jv>item</jv>.getName());
-
IOPipe.<jsm>create</jsm>(<jv>item</jv>.openStream(), <jk>new</jk>
FileOutputStream(<jv>f</jv>)).closeOut().run();
- }
- }
- <jk>return new</jk> Redirect(); <jc>// Redirect to the
servlet root.</jc>
- }
-
- <jd>/** Causes a 404 if POST isn't multipart/form-data */</jd>
- <jk>public static class</jk> MultipartFormDataMatcher
<jk>extends</jk> RestMatcher {
-
- <ja>@Override</ja> <jc>/* RestMatcher */</jc>
- <jk>public boolean</jk> matches(RestRequest
<jv>req</jv>) {
- String <jv>contentType</jv> =
<jv>req</jv>.getContentType();
- <jk>return</jk> <jv>contentType</jv> !=
<jk>null</jk> &&
contentType.startsWith(<js>"multipart/form-data"</js>);
- }
- }
-</p>
-<p>
- The following shows using the <l>HttpServletRequest.getParts()</l>
method to retrieve multi-part form posts when using Jetty.
- This example is pulled from the PetStore application.
-</p>
-<p class='bpcode w800'>
- <ja>@RestPost</ja>
- <jk>public</jk> SeeOtherRoot uploadFile(RestRequest <jv>req</jv>)
<jk>throws</jk> Exception {
-
- <jc>// Required for Jetty.</jc>
- MultipartConfigElement <jv>mce</jv> = <jk>new</jk>
MultipartConfigElement((String)<jk>null</jk>);
-
<jv>req</jv>.setAttribute(<js>"org.eclipse.jetty.multipartConfig"</js>,
<jv>mce</jv>);
-
- String <jv>id</jv> = UUID.<jsm>randomUUID</jsm>().toString();
- BufferedImage <jv>img</jv> = <jk>null</jk>;
- <jk>for</jk> (Part <jv>part</jv> : <jv>req</jv>.getParts()) {
- <jk>switch</jk> (<jv>part</jv>.getName()) {
- <jk>case</jk> <js>"id"</js>:
- <jv>id</jv> =
IOUtils.<jsm>read</jsm>(<jv>part</jv>.getInputStream());
- <jk>break</jk>;
- <jk>case</jk> <js>"file"</js>:
- <jv>img</jv> =
ImageIO.<jsm>read</jsm>(<jv>part</jv>.getInputStream());
- }
- }
- <jsm>addPhoto</jsm>(<jv>id</jv>, <jv>img</jv>);
- <jk>return new</jk> SeeOtherRoot(); <jc>// Redirect to the
servlet root.</jc>
- }
-</p>
-
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/07.RestSerializers.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/06.RestSerializers.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/07.RestSerializers.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/06.RestSerializers.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/08.RestParsers.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/07.RestParsers.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/08.RestParsers.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/07.RestParsers.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/09.RestConfigurableProperties.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/08.RestConfigurableProperties.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/09.RestConfigurableProperties.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/08.RestConfigurableProperties.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/10.RestConfigurableAnnotations.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/09.RestConfigurableAnnotations.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/10.RestConfigurableAnnotations.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/09.RestConfigurableAnnotations.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/11.RestTransforms.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/10.RestTransforms.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/11.RestTransforms.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/10.RestTransforms.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/12.RestHandlingUris.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/11.RestHandlingUris.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/12.RestHandlingUris.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/11.RestHandlingUris.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/13.RestGuards.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/12.RestGuards.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/13.RestGuards.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/12.RestGuards.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/14.RestRoleGuards.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/13.RestRoleGuards.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/14.RestRoleGuards.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/13.RestRoleGuards.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/15.RestConverters.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/14.RestConverters.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/15.RestConverters.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/14.RestConverters.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/16.RestMessages.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.RestMessages.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/16.RestMessages.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/15.RestMessages.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/17.RestEncoders.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/16.RestEncoders.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/17.RestEncoders.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/16.RestEncoders.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/18.RestSvlVariables.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/17.RestSvlVariables.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/18.RestSvlVariables.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/17.RestSvlVariables.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/19.RestConfigurationFiles.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/18.RestConfigurationFiles.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/19.RestConfigurationFiles.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/18.RestConfigurationFiles.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/20.RestStaticFiles.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/19.RestStaticFiles.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/20.RestStaticFiles.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/19.RestStaticFiles.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/21.RestClientVersioning.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/20.RestClientVersioning.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/21.RestClientVersioning.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/20.RestClientVersioning.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestInfoProvider.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/21.RestInfoProvider.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestInfoProvider.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/21.RestInfoProvider.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestInfoProvider/01.BasicRestInfoProvider.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/21.RestInfoProvider/01.BasicRestInfoProvider.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestInfoProvider/01.BasicRestInfoProvider.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/21.RestInfoProvider/01.BasicRestInfoProvider.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/01.RestSwaggerBasicRestServlet.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/01.RestSwaggerBasicRestServlet.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/01.RestSwaggerBasicRestServlet.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/01.RestSwaggerBasicRestServlet.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/02.RestSwaggerBasicSwaggerInfo.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/02.RestSwaggerBasicSwaggerInfo.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/02.RestSwaggerBasicSwaggerInfo.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/02.RestSwaggerBasicSwaggerInfo.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/03.RestSwaggerTags.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/03.RestSwaggerTags.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/03.RestSwaggerTags.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/03.RestSwaggerTags.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/04.RestSwaggerOperations.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/04.RestSwaggerOperations.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/04.RestSwaggerOperations.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/04.RestSwaggerOperations.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/05.RestSwaggerParameters.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/05.RestSwaggerParameters.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/05.RestSwaggerParameters.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/05.RestSwaggerParameters.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/06.RestSwaggerParameterExamples.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/06.RestSwaggerParameterExamples.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/06.RestSwaggerParameterExamples.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/06.RestSwaggerParameterExamples.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/07.RestSwaggerResponses.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/07.RestSwaggerResponses.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/07.RestSwaggerResponses.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/07.RestSwaggerResponses.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/08.RestSwaggerResponseExamples.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/08.RestSwaggerResponseExamples.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/08.RestSwaggerResponseExamples.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/08.RestSwaggerResponseExamples.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/09.RestSwaggerModels.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/09.RestSwaggerModels.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/09.RestSwaggerModels.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/09.RestSwaggerModels.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/10.RestSwaggerStylesheet.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/10.RestSwaggerStylesheet.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/10.RestSwaggerStylesheet.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/10.RestSwaggerStylesheet.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Models.1.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Models.1.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Models.1.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Models.1.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Models.2.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Models.2.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Models.2.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Models.2.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Models.3.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Models.3.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Models.3.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Models.3.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Operations.1.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Operations.1.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Operations.1.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Operations.1.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Operations.2.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Operations.2.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Operations.2.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Operations.2.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Operations.3.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Operations.3.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Operations.3.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Operations.3.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.1.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.1.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.1.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.1.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.2.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.2.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.2.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.2.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.3.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.3.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.3.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.3.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.4.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.4.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.4.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.Parameters.4.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.1.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.1.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.1.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.1.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.2.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.2.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.2.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.2.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.3.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.3.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.3.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.3.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.4.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.4.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.4.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/22.RestSwagger/doc-files/juneau-rest-server.Swagger.ResponseExamples.4.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/24.RestExecutionStatistics.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestExecutionStatistics.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/24.RestExecutionStatistics.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/23.RestExecutionStatistics.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/01.RestHtmlUIvsDI.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/01.RestHtmlUIvsDI.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/01.RestHtmlUIvsDI.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/01.RestHtmlUIvsDI.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/02.RestHtmlWidgets.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/02.RestHtmlWidgets.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/02.RestHtmlWidgets.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/02.RestHtmlWidgets.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/03.RestHtmlPredefinedWidgets.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/03.RestHtmlPredefinedWidgets.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/03.RestHtmlPredefinedWidgets.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/03.RestHtmlPredefinedWidgets.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/04.RestHtmlUiCustomization.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/04.RestHtmlUiCustomization.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/04.RestHtmlUiCustomization.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/04.RestHtmlUiCustomization.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/05.RestHtmlStylesheets.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/05.RestHtmlStylesheets.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/05.RestHtmlStylesheets.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/05.RestHtmlStylesheets.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.1.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.1.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.1.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.1.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.2.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.2.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.2.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.2.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.3.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.3.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.3.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.3.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.4.png
b/juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.4.png
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/25.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.4.png
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/24.RestHtmlDocAnnotation/doc-files/juneau-rest-server.HtmlDocAnnotation.PredefinedWidgets.4.png
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/26.RestDefaultHeaders.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/25.RestDefaultHeaders.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/26.RestDefaultHeaders.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/25.RestDefaultHeaders.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/27.RestLoggingAndDebugging.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/26.RestLoggingAndDebugging.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/27.RestLoggingAndDebugging.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/26.RestLoggingAndDebugging.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/28.RestHttpStatusCodes.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/27.RestHttpStatusCodes.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/28.RestHttpStatusCodes.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/27.RestHttpStatusCodes.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/29.RestOverloadingHttpMethods.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/28.RestOverloadingHttpMethods.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/29.RestOverloadingHttpMethods.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/28.RestOverloadingHttpMethods.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/30.RestBuiltInParameters.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/29.RestBuiltInParameters.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/30.RestBuiltInParameters.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/29.RestBuiltInParameters.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/31.RestCustomSerializersAndParsers.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/30.RestCustomSerializersAndParsers.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/31.RestCustomSerializersAndParsers.html
rename to
juneau-doc/docs/Topics/06.juneau-rest-server/30.RestCustomSerializersAndParsers.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/32.RestUsingWithOsgi.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/31.RestUsingWithOsgi.html
similarity index 100%
rename from
juneau-doc/docs/Topics/06.juneau-rest-server/32.RestUsingWithOsgi.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/31.RestUsingWithOsgi.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/33.RestInjection.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/32.RestInjection.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/33.RestInjection.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/32.RestInjection.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/34.RestHttp2.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/33.RestHttp2.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/34.RestHttp2.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/33.RestHttp2.html
diff --git
a/juneau-doc/docs/Topics/06.juneau-rest-server/35.RestOtherNotes.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/34.RestOtherNotes.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/35.RestOtherNotes.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/34.RestOtherNotes.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/36.RestContext.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/35.RestContext.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/36.RestContext.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/35.RestContext.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/37.RestRpc.html
b/juneau-doc/docs/Topics/06.juneau-rest-server/36.RestRpc.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/37.RestRpc.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/36.RestRpc.html
diff --git
a/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/09.RestcResponse.html
b/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/09.RestcResponse.html
index 2127f38..78d7341 100644
---
a/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/09.RestcResponse.html
+++
b/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/09.RestcResponse.html
@@ -65,10 +65,10 @@
<p>
Any of the following annotations can be used on the methods:
</p>
-<ul class='javatree'>
- <li class='ja'>{@del oaj.http.annotation.ResponseBody}
- <li class='ja'>{@del oaj.http.annotation.ResponseHeader}
- <li class='ja'>{@del oaj.http.annotation.ResponseCode}
+<ul class='javatreec'>
+ <li class='ja'>{@link oaj.http.annotation.Body}
+ <li class='ja'>{@link oaj.http.annotation.Header}
+ <li class='ja'>{@link oaj.http.annotation.StatusCode}
</ul>
<p>
The behavior and functionality of all of the annotations are the same
as if they were used on method arguments directly. This means full support for
OpenAPI serialization and validation.
diff --git a/juneau-doc/docs/Topics/20.Glossaries/02.GlossaryAnnotations.html
b/juneau-doc/docs/Topics/20.Glossaries/02.GlossaryAnnotations.html
index c35ab5b..14480be 100644
--- a/juneau-doc/docs/Topics/20.Glossaries/02.GlossaryAnnotations.html
+++ b/juneau-doc/docs/Topics/20.Glossaries/02.GlossaryAnnotations.html
@@ -306,17 +306,7 @@
<td>Identifies an interface to use to interact with HTTP parts
of an HTTP response through a bean.</td>
</tr>
<tr>
- <td><ul style='margin-left:20px'><li class='ja'>{@link
oaj.http.annotation.ResponseBody}</ul></td>
- <td><ul><li>Methods</ul></td>
- <td>Denotes a method as an HTTP response body on a
<ja>@Response</ja>-annotated bean.</td>
- </tr>
- <tr>
- <td><ul style='margin-left:20px'><li class='ja'>{@link
oaj.http.annotation.ResponseHeader}</ul></td>
- <td><ul><li>Classes<li>Methods<li>Parameters</ul></td>
- <td>Denotes a method as an HTTP response header on a
<ja>@Response</ja>-annotated bean.</td>
- </tr>
- <tr>
- <td><ul style='margin-left:20px'><li class='ja'>{@link
oaj.http.annotation.ResponseCode}</ul></td>
+ <td><ul style='margin-left:20px'><li class='ja'>{@link
oaj.http.annotation.StatusCode}</ul></td>
<td><ul><li>Methods<li>Parameters</ul></td>
<td>Denotes a method as an HTTP response status code on a
<ja>@Response</ja>-annotated bean.</td>
</tr>
diff --git a/juneau-doc/src/main/javadoc/overview.html
b/juneau-doc/src/main/javadoc/overview.html
index acff2e6..3136906 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -365,8 +365,7 @@
<li><p><a class='doclink'
href='#juneau-rest-server.HttpParts.ResponseBeans'>@Response Beans</a><span
class='update'>updated: 8.1.0,<b>9.0.0</b></span></p>
<li><p><a class='doclink'
href='#juneau-rest-server.HttpParts.HttpPartApis'>HTTP Part APIs</a><span
class='update'>created: <b>9.0.0</b></span></p>
</ol>
- <li><p><a class='doclink'
href='#juneau-rest-server.RestHandlingFormPosts'>Handling Form Posts</a><span
class='update'><b><red>todo</red></b></span></p>
- <li><p><a class='doclink'
href='#juneau-rest-server.RestHandlingMultiPartFormPosts'>Handling Multi-Part
Form Posts</a><span class='update'>updated: 8.0.0,
<b><red>todo</red></b></span></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.RestHandlingFormPosts'>Form Posts</a><span
class='update'>updated: <b>9.0.0</b></span></p>
<li><p><a class='doclink'
href='#juneau-rest-server.RestSerializers'>Serializers</a><span
class='update'><b><red>todo</red></b></span></p>
<li><p><a class='doclink'
href='#juneau-rest-server.RestParsers'>Parsers</a><span
class='update'><b><red>todo</red></b></span></p>
<li><p><a class='doclink'
href='#juneau-rest-server.RestConfigurableProperties'>Configurable
Properties</a><span class='update'>updated: 8.1.0,
<b><red>todo</red></b></span></p>
@@ -1812,7 +1811,7 @@
<ul>
<li>Typically a POJO serialized based on {@link
org.apache.juneau.http.header.Accept} request header.
<li>Support for raw values such as <c>Readers</c> and
<c>InputStreams</c> (among others).
- <li>Support for response beans annotated with {@link
org.apache.juneau.http.annotation.Response @Response} / {@link
org.apache.juneau.http.annotation.ResponseBody @ResponseBody} / {@link
org.apache.juneau.http.annotation.ResponseHeader @ResponseHeader} / {@link
org.apache.juneau.http.annotation.StatusCode @ResponseCode}.
+ <li>Support for response beans annotated with {@link
org.apache.juneau.http.annotation.Response @Response}.
<li>Support for Apache Http Core interfaces: {@link
org.apache.http.HttpEntity} / {@link org.apache.http.HttpResponse} / {@link
org.apache.juneau.http.resource.HttpResource}.
<li>Standard HTTP responses such as {@link
org.apache.juneau.http.response.Ok} and {@link
org.apache.juneau.http.response.TemporaryRedirect} provided in {@link
org.apache.juneau.http.response} package.
<li>Extensible API for defining custom return types.
@@ -15134,11 +15133,10 @@
<li class='ja'>{@link
org.apache.juneau.http.annotation.Query}
<li class='ja'>{@link
org.apache.juneau.http.annotation.HasQuery}
<li class='ja'>{@link
org.apache.juneau.http.annotation.Header}
+ <li class='ja'>{@link
org.apache.juneau.http.annotation.StatusCode}
<li class='ja'>{@link
org.apache.juneau.rest.annotation.Method}
<li class='ja'>{@link
org.apache.juneau.http.annotation.Request}
<li class='ja'>{@link
org.apache.juneau.http.annotation.Response}
- <li class='ja'>{@link
org.apache.juneau.http.annotation.ResponseHeader}
- <li class='ja'>{@link
org.apache.juneau.http.annotation.StatusCode}
</ul>
</ul>
<p>
@@ -15596,6 +15594,7 @@
<ul class='spaced-list'>
<li>HTTP request parts:
<ul class='javatreec'>
+ <li class='ja'>{@link org.apache.juneau.http.annotation.Request}
<li class='ja'>{@link org.apache.juneau.http.annotation.Body}
<li class='ja'>{@link org.apache.juneau.http.annotation.Header}
<li class='ja'>{@link
org.apache.juneau.http.annotation.FormData}
@@ -15603,14 +15602,13 @@
<li class='ja'>{@link org.apache.juneau.http.annotation.Path}
<li class='ja'>{@link
org.apache.juneau.http.annotation.HasFormData}
<li class='ja'>{@link
org.apache.juneau.http.annotation.HasQuery}
- <li class='ja'>{@link org.apache.juneau.http.annotation.Request}
</ul>
<li>HTTP response parts:
<ul class='javatreec'>
- <li class='ja'>{@link
org.apache.juneau.http.annotation.ResponseBody}
- <li class='ja'>{@link
org.apache.juneau.http.annotation.ResponseHeader}
- <li class='ja'>{@link
org.apache.juneau.http.annotation.StatusCode}
<li class='ja'>{@link
org.apache.juneau.http.annotation.Response}
+ <li class='ja'>{@link org.apache.juneau.http.annotation.Body}
+ <li class='ja'>{@link org.apache.juneau.http.annotation.Header}
+ <li class='ja'>{@link
org.apache.juneau.http.annotation.StatusCode}
</ul>
<li>Sub-annotations:
<ul class='javatreec'>
@@ -15695,14 +15693,12 @@
<li class='jm'>{@link
org.apache.juneau.http.annotation.Request#on() on()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Request#onClass() onClass()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Request#parser() parser()}
- <li class='jm'>{@link
org.apache.juneau.http.annotation.Request#serializer() serializer()}
</ul>
<li class='ja'>{@link org.apache.juneau.http.annotation.Header}
<ul class='javatreec'>
<li class='jm'>{@link
org.apache.juneau.http.annotation.Header#name() name()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Header#parser() parser()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Header#schema() schema()}
- <li class='jm'>{@link
org.apache.juneau.http.annotation.Header#serializer() serializer()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Header#value() value()}
</ul>
<li class='ja'>{@link org.apache.juneau.http.annotation.Query}
@@ -15710,7 +15706,6 @@
<li class='jm'>{@link
org.apache.juneau.http.annotation.Query#name() name()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Query#parser() parser()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Query#schema() schema()}
- <li class='jm'>{@link
org.apache.juneau.http.annotation.Query#serializer() serializer()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Query#value() value()}
</ul>
<li class='ja'>{@link
org.apache.juneau.http.annotation.FormData}
@@ -15718,7 +15713,6 @@
<li class='jm'>{@link
org.apache.juneau.http.annotation.FormData#name() name()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.FormData#parser() parser()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.FormData#schema() schema()}
- <li class='jm'>{@link
org.apache.juneau.http.annotation.FormData#serializer() serializer()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.FormData#value() value()}
</ul>
<li class='ja'>{@link org.apache.juneau.http.annotation.Path}
@@ -15726,13 +15720,10 @@
<li class='jm'>{@link
org.apache.juneau.http.annotation.Path#name() name()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Path#parser() parser()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Path#schema() schema()}
- <li class='jm'>{@link
org.apache.juneau.http.annotation.Path#serializer() serializer()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Path#value() value()}
</ul>
<li class='ja'>{@link org.apache.juneau.http.annotation.Body}
<ul class='javatreec'>
- <li class='jm'>{@link
org.apache.juneau.http.annotation.Body#on() on()}
- <li class='jm'>{@link
org.apache.juneau.http.annotation.Body#onClass() onClass()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Body#schema() schema()}
</ul>
</ul>
@@ -15744,23 +15735,22 @@
<li class='jm'>{@link
org.apache.juneau.http.annotation.Response#headers() headers()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Response#on() on()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Response#onClass() onClass()}
- <li class='jm'>{@link
org.apache.juneau.http.annotation.Response#parser() parser()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Response#schema() schema()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.Response#serializer() serializer()}
</ul>
- <li class='ja'>{@link
org.apache.juneau.http.annotation.ResponseHeader}
+ <li class='ja'>{@link org.apache.juneau.http.annotation.Header}
<ul class='javatreec'>
- <li class='jm'>{@link
org.apache.juneau.http.annotation.ResponseHeader#name() name()}
- <li class='jm'>{@link
org.apache.juneau.http.annotation.ResponseHeader#on() on()}
- <li class='jm'>{@link
org.apache.juneau.http.annotation.ResponseHeader#onClass() onClass()}
- <li class='jm'>{@link
org.apache.juneau.http.annotation.ResponseHeader#schema() schema()}
- <li class='jm'>{@link
org.apache.juneau.http.annotation.ResponseHeader#serializer() serializer()}
- <li class='jm'>{@link
org.apache.juneau.http.annotation.ResponseHeader#value() value()}
+ <li class='jm'>{@link
org.apache.juneau.http.annotation.Header#name() name()}
+ <li class='jm'>{@link
org.apache.juneau.http.annotation.Header#schema() schema()}
+ <li class='jm'>{@link
org.apache.juneau.http.annotation.Header#serializer() serializer()}
+ <li class='jm'>{@link
org.apache.juneau.http.annotation.Header#value() value()}
+ </ul>
+ <li class='ja'>{@link org.apache.juneau.http.annotation.Body}
+ <ul class='javatreec'>
+ <li class='jm'>{@link
org.apache.juneau.http.annotation.Body#schema() schema()}
</ul>
<li class='ja'>{@link
org.apache.juneau.http.annotation.StatusCode}
<ul class='javatreec'>
- <li class='jm'>{@link
org.apache.juneau.http.annotation.StatusCode#on() on()}
- <li class='jm'>{@link
org.apache.juneau.http.annotation.StatusCode#onClass() onClass()}
<li class='jm'>{@link
org.apache.juneau.http.annotation.StatusCode#value() value()}
</ul>
</ul>
@@ -15953,9 +15943,9 @@
Any {@link java.util.Optional} of anything on this list.
</ol>
<p>
- The {@link org.apache.juneau.http.annotation.StatusCode
@ResponseCode}/{@link org.apache.juneau.http.annotation.ResponseHeader
@ResponseHeader} annotations
- can be used on parameters and parameter types of {@link
org.apache.juneau.rest.annotation.RestOp @RestOp}-annotated methods to
- to define to response codes and headers. These are used in combination
with the mutable {@link org.apache.juneau.Value} object.
+ When used in combincation with the mutable {@link
org.apache.juneau.Value} object, the {@link
org.apache.juneau.http.annotation.StatusCode @StatusCode} and {@link
org.apache.juneau.http.annotation.Header @Header} annotations
+ can be used on parameters {@link
org.apache.juneau.rest.annotation.RestOp @RestOp}-annotated methods to
+ to define to response codes and headers.
</p>
<h5 class='figure'>Example:</h5>
<p class='bpcode w800'>
@@ -15963,12 +15953,12 @@
<jk>public void</jk> login(
<ja>@FormData</ja>(<js>"username"</js>) String
<jv>username</jv>,
<ja>@FormData</ja>(<js>"password"</js>) String
<jv>password</jv>,
- <ja>@ResponseCode</ja> Value<Integer> <jv>status</jv>,
- <ja>@ResponseHeader</ja>(<js>"My-Message"</js>)
Value<String> <jv>myMessage</jv>
+ <ja>@StatusCode</ja> Value<Integer> <jv>status</jv>,
+ <ja>@Header</ja>(<js>"My-Response-Header"</js>)
Value<String> <jv>myResponseHeader</jv>
) {
<jk>if</jk> (<jsm>isValid</jsm>(<jv>username</jv>,
<jv>password</jv>)) {
<jv>status</jv>.set(200);
- <jv>myMessage</jv>.set(<js>"Welcome "</js> +
<jv>username</jv> + <js>"!"</js>);
+ <jv>myResponseHeader</jv>.set(<js>"Welcome "</js> +
<jv>username</jv> + <js>"!"</js>);
} <jk>else</jk> {
<jv>status</jv>.set(401);
}
@@ -15985,7 +15975,7 @@
String <jv>password</jv> =
<jv>form</jv>.get(<js>"password"</js>).orElse(<jk>null</jk>);
<jk>if</jk> (<jsm>isValid</jsm>(<jv>username</jv>,
<jv>password</jv>) {
<jv>res</jv>.setStatus(200);
- <jv>res</jv>.setHeader(<js>"My-Message"</js>,
<js>"Welcome "</js> + <jv>username</jv> + <js>"!"</js>);
+ <jv>res</jv>.setHeader(<js>"My-Response-Header"</js>,
<js>"Welcome "</js> + <jv>username</jv> + <js>"!"</js>);
} else {
<jv>res</jv>.setStatus(401);
}
@@ -16234,8 +16224,8 @@
</p>
<ul class='javatreec'>
<li class='ja'>{@link org.apache.juneau.http.annotation.StatusCode}
- <li class='ja'>{@link org.apache.juneau.http.annotation.ResponseHeader}
- <li class='ja'>{@link org.apache.juneau.http.annotation.ResponseBody}
+ <li class='ja'>{@link org.apache.juneau.http.annotation.Header}
+ <li class='ja'>{@link org.apache.juneau.http.annotation.Body}
<li class='ja'>{@link org.apache.juneau.http.annotation.Schema}
</ul>
@@ -16253,7 +16243,7 @@
<p class='bpcode w800'>
<jc>// Our annotated normal response.</jc>
<ja>@Response</ja>
- <ja>@ResponseCode</ja>(200)
+ <ja>@StatusCode</ja>(200)
<ja>@Schema</ja>(
description=<js>"User was good."</js> <jc>// Description show
in Swagger</jc>
)
@@ -16263,16 +16253,16 @@
}
<jc>// Response bean converted to output based on Accept
header.</jc>
- <ja>@ResponseBody</ja>
+ <ja>@Body</ja>
<jk>public</jk> WelcomeMessageBean getBody() {
- <jk>return new </jk> WelcomeMessageBean();
+ <jk>return new</jk> WelcomeMessageBean();
}
}
</p>
<p class='bpcode w800'>
<jc>// Our annotated exception.</jc>
<ja>@Response</ja>
- <ja>@ResponseCode</ja>(401)
+ <ja>@StatusCode</ja>(401)
<ja>@Schema</ja>(
description=<js>"Invalid username or password provided"</js>
<jc>// Description show in Swagger</jc>
)
@@ -16281,7 +16271,7 @@
<jk>super</jk>(<js>"Invalid username or
password."</js>); <jc>// Message sent in response</jc>
}
- <ja>@ResponseHeader</ja>(<js>"My-Message"</js>)
+ <ja>@Header</ja>(<js>"My-Message"</js>)
<jk>public</jk> String getMyMessage() {
<jk>return</jk> <js>"Nope!"</js>;
}
@@ -16318,7 +16308,7 @@
<jc>// Parent predefined exception class.</jc>
<ja>@Response</ja>
- <ja>@ResponseCode(401)</ja>
+ <ja>@StatusCode(401)</ja>
<ja>@Schema</ja>(
description=<js>"Unauthorized"</js>
)
@@ -16340,68 +16330,100 @@
<li class='jc'>{@link org.apache.juneau.rest.RequestFormParams}
<li class='jc'>{@link org.apache.juneau.rest.RequestPathParams}
</ul>
+<h5 class='figure'>Example:</h5>
+<p class='bpcode w800'>
+ <ja>@RestPost</ja>(...)
+ <jk>public</jk> Object myMethod(RequestHeaders <jv>headers</jv>) {
+
+ <jc>// Add a default value.</jc>
+ <jv>headers</jv>.addDefault(<js>"ETag"</js>,
<jsf>DEFAULT_UUID</jsf>);
+
+ <jc>// Get a header value as a POJO.</jc>
+ UUID <jv>etag</jv> =
<jv>headers</jv>.get(<js>"ETag"</js>).as(UUID.<jk>class</jk>).get();
+
+ <jc>// Get a header as a standard HTTP part.</jc>
+ ContentType <jv>contentType</jv> =
<jv>headers</jv>.get(ContentType.<jk>class</jk>).orElse(ContentType.<jsf>TEXT_XML</jsf>);
+ }
+</p>
+<p>
+ Built in to these APIs are various convenience methods such as
converting parts to
+ different types or inline fluent assertions:
+</p>
+<h5 class='figure'>Example:</h5>
+<p class='bpcode w800'>
+ <jc>// Inline fluent assertion and retrieval.</jc>
+ String <jv>foo</jv> = <jv>request</jv>
+ .getHeader(<js>"Foo"</js>)
+ .assertString().contains(<js>"bar"</js>)
+ .get();
+</p>
</div><!-- END: 6.4.5 - juneau-rest-server.HttpParts.HttpPartApis -->
</div><!-- END: 6.4 - juneau-rest-server.HttpParts -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHandlingFormPosts'
id='juneau-rest-server.RestHandlingFormPosts'>6.5 - Handling Form
Posts</a><span class='update'><b><red>todo</red></b></span></h3>
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHandlingFormPosts'
id='juneau-rest-server.RestHandlingFormPosts'>6.5 - Form Posts</a><span
class='update'>updated: <b>9.0.0</b></span></h3>
<div class='topic'><!-- START: 6.5 - juneau-rest-server.RestHandlingFormPosts
-->
<p>
- The best way to handle a form post is usually by using an input bean.
- The following is a class that takes in URL-Encoded form post of the
- form
<l>"aString=foo&aNumber=123&aDate=2001-07-04T15:30:45Z"</l>.
+ HTTP form posts can be handled two ways:
+</p>
+<ol class='spaced-list'>
+ <li>By parsing the entire HTTP body into a POJO using the registered
{@link org.apache.juneau.urlencoding.UrlEncodingParser}
+ <li>By access the form post entries as HTTP parts.
+</ol>
+<p>
+ The following example shows the first approach of handling an
<c>application/x-www-form-urlencoded</c>
+ request of the form
<l>"aString=foo&aNumber=123&aDate=2001-07-04T15:30:45Z"</l> and
+ loading it into a simple bean.
</p>
<p class='bpcode w800'>
- <ja>@Rest</ja>(
- path=<js>"/urlEncodedForm"</js>
- )
- <jk>public class</jk> UrlEncodedFormResource <jk>extends</jk>
BasicRestServlet {
+ <jc>// A simple bean.</jc>
+ <jk>public static class</jk> FormInputBean {
+ <jk>public</jk> String <jf>aString</jf>;
+ <jk>public int</jk> <jf>aNumber</jf>;
+
<ja>@Swap</ja>(TemporalCalendarSwap.IsoLocalDateTime.<jk>class</jk>)
+ <jk>public</jk> Calendar <jf>aDate</jf>;
+ }
+</p>
+<p class='bpcode w800'>
+ <ja>@Rest</ja>(...)
+ <jk>public class</jk> MyRestResource <jk>extends</jk> BasicRestServlet {
- <jd>/** POST request handler */</jd>
+ <jc>// Our form input endpoint.</jc>
<ja>@RestPost</ja>(<js>"/"</js>)
- <jk>public</jk> Object doPost(<ja>@Body</ja> FormInputBean
input) <jk>throws</jk> Exception {
+ <jk>public</jk> Object doPost(<ja>@Body</ja> FormInputBean
input) {
<jc>// Just mirror back the request</jc>
<jk>return</jk> input;
}
-
- <jk>public static class</jk> FormInputBean {
- <jk>public</jk> String <jf>aString</jf>;
- <jk>public int</jk> <jf>aNumber</jf>;
-
<ja>@Swap</ja>(TemporalCalendarSwap.IsoLocalDateTime.<jk>class</jk>)
- <jk>public</jk> Calendar <jf>aDate</jf>;
- }
}
</p>
<p>
- Another possibility is to access the form parameters individually:
+ The next example shows handling it as individual parts:
</p>
<p class='bpcode w800'>
- <jd>/** POST request handler */</jd>
+ <jc>// Our form input endpoint.</jc>
<ja>@RestPost</ja>(<js>"/"</js>)
- <jk>public</jk> Object doPost(<ja>@FormData</ja>(<js>"aString"</js>)
String <jv>aString</jv>, <ja>@FormData</ja>(<js>"aNumber"</js>) <jk>int</jk>
<jv>aNumber</jv>, <ja>@FormData</ja>(<js>"aDate"</js>) Calendar <jv>aDate</jv>)
<jk>throws</jk> Exception {
+ <jk>public</jk> Object doPost(
+ <ja>@FormData</ja>(<js>"aString"</js>) String <jv>aString</jv>,
+ <ja>@FormData</ja>(<js>"aNumber"</js>) <jk>int</jk>
<jv>aNumber</jv>, <
+ <ja>@FormData</ja>(<js>"aDate"</js>) Calendar <jv>aDate</jv>) {
...
}
</p>
<p>
The advantage to the form input bean is that it can handle any of the
parsable types (e.g. JSON, XML...)
- in addition to URL-Encoding.
- The latter approach only supports URL-Encoding.
+ in addition to URL-Encoding while the latter approach only supports
URL-Encoding.
</p>
<div class='warn'>
If you're using form input beans, DO NOT use the <l>@FormData</l>
attribute or
- {@del RestRequest#getParameter(String)} method since this will cause
the
+ {@link javax.servlet.http.HttpServletRequest#getParameter(String)}
method since this will cause the
underlying JEE servlet to parse the HTTP body as a form post.
<br>Your input bean will end up being null since there won't be any
content left after the servlet
has parsed the body of the request.
<br>This applies to WHENEVER you use <l>@Body</l> or {@link
org.apache.juneau.rest.RestRequest#getBody()}
</div>
-</div><!-- END: 6.5 - juneau-rest-server.RestHandlingFormPosts -->
-
-<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHandlingMultiPartFormPosts'
id='juneau-rest-server.RestHandlingMultiPartFormPosts'>6.6 - Handling
Multi-Part Form Posts</a><span class='update'>updated: 8.0.0,
<b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.6 -
juneau-rest-server.RestHandlingMultiPartFormPosts -->
+<h5 class='topic'>Multi-part Form Posts</h5>
<p>
The Juneau framework does not natively support multipart form posts.
However, it can be done in conjunction with the Apache Commons File
Upload library or through the Servlet 3.0 API directly.
@@ -16471,12 +16493,12 @@
<jk>return new</jk> SeeOtherRoot(); <jc>// Redirect to the
servlet root.</jc>
}
</p>
-</div><!-- END: 6.6 - juneau-rest-server.RestHandlingMultiPartFormPosts -->
+</div><!-- END: 6.5 - juneau-rest-server.RestHandlingFormPosts -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSerializers'
id='juneau-rest-server.RestSerializers'>6.7 - Serializers</a><span
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.7 - juneau-rest-server.RestSerializers -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSerializers'
id='juneau-rest-server.RestSerializers'>6.6 - Serializers</a><span
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.6 - juneau-rest-server.RestSerializers -->
<p>
REST resources use the {@link org.apache.juneau.serializer.Serializer}
API for defining serializers for
serializing response POJOs.
@@ -16538,12 +16560,12 @@
<ul class='seealso'>
<li class='jf'>{@del
org.apache.juneau.rest.RestContext#REST_serializers}
</ul>
-</div><!-- END: 6.7 - juneau-rest-server.RestSerializers -->
+</div><!-- END: 6.6 - juneau-rest-server.RestSerializers -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestParsers' id='juneau-rest-server.RestParsers'>6.8
- Parsers</a><span class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.8 - juneau-rest-server.RestParsers -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestParsers' id='juneau-rest-server.RestParsers'>6.7
- Parsers</a><span class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.7 - juneau-rest-server.RestParsers -->
<p>
REST resources use the {@link org.apache.juneau.parser.Parser} API for
defining parsers for parsing request
body content and converting them into POJOs.
@@ -16603,12 +16625,12 @@
<ul class='seealso'>
<li class='jf'>{@del org.apache.juneau.rest.RestContext#REST_parsers}
</ul>
-</div><!-- END: 6.8 - juneau-rest-server.RestParsers -->
+</div><!-- END: 6.7 - juneau-rest-server.RestParsers -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestConfigurableProperties'
id='juneau-rest-server.RestConfigurableProperties'>6.9 - Configurable
Properties</a><span class='update'>updated: 8.1.0,
<b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.9 -
juneau-rest-server.RestConfigurableProperties -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestConfigurableProperties'
id='juneau-rest-server.RestConfigurableProperties'>6.8 - Configurable
Properties</a><span class='update'>updated: 8.1.0,
<b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.8 -
juneau-rest-server.RestConfigurableProperties -->
<p>
As shown in previous sections, Juneau serializers and parsers are
highly-configurable through properties.
(See {@doc GlossaryConfigurableProperties})
@@ -16688,12 +16710,12 @@
<li class='ja'>{@del RestOp#flags()} - Shorthand for boolean properties.
<li class='jc'>{@del org.apache.juneau.rest.RestContextProperties}
</ul>
-</div><!-- END: 6.9 - juneau-rest-server.RestConfigurableProperties -->
+</div><!-- END: 6.8 - juneau-rest-server.RestConfigurableProperties -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestConfigurableAnnotations'
id='juneau-rest-server.RestConfigurableAnnotations'>6.10 - Configurable
Annotations</a><span class='update'>created: 8.1.0,
<b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.10 -
juneau-rest-server.RestConfigurableAnnotations -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestConfigurableAnnotations'
id='juneau-rest-server.RestConfigurableAnnotations'>6.9 - Configurable
Annotations</a><span class='update'>created: 8.1.0,
<b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.9 -
juneau-rest-server.RestConfigurableAnnotations -->
<p>
Config annotations allow you to define serializer and parser properties
using specialized annotations.
All configuration properties have annotation-equivalents.
@@ -16751,12 +16773,12 @@
<p>
Config annotations can be defined at both the class and method level
just like properties.
</p>
-</div><!-- END: 6.10 - juneau-rest-server.RestConfigurableAnnotations -->
+</div><!-- END: 6.9 - juneau-rest-server.RestConfigurableAnnotations -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestTransforms'
id='juneau-rest-server.RestTransforms'>6.11 - Transforms</a><span
class='update'>updated: 8.1.0, <b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.11 - juneau-rest-server.RestTransforms -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestTransforms'
id='juneau-rest-server.RestTransforms'>6.10 - Transforms</a><span
class='update'>updated: 8.1.0, <b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.10 - juneau-rest-server.RestTransforms -->
<p>
The Juneau serializers and parsers can be configured on how to handle
POJOs through the use of Transforms.
(See {@doc Swaps Swaps})
@@ -16810,12 +16832,12 @@
}
}
</p>
-</div><!-- END: 6.11 - juneau-rest-server.RestTransforms -->
+</div><!-- END: 6.10 - juneau-rest-server.RestTransforms -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHandlingUris'
id='juneau-rest-server.RestHandlingUris'>6.12 - URIs</a><span
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.12 - juneau-rest-server.RestHandlingUris -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHandlingUris'
id='juneau-rest-server.RestHandlingUris'>6.11 - URIs</a><span
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.11 - juneau-rest-server.RestHandlingUris -->
<p>
As mention earlier {@doc MarshallingUris here}, Juneau serializers have
sophisticated support for transforming relative URIs to absolute form.
</p>
@@ -16895,12 +16917,12 @@
<p>
URIs are resolved by both regular and part serializers.
</p>
-</div><!-- END: 6.12 - juneau-rest-server.RestHandlingUris -->
+</div><!-- END: 6.11 - juneau-rest-server.RestHandlingUris -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestGuards' id='juneau-rest-server.RestGuards'>6.13 -
Guards</a><span class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.13 - juneau-rest-server.RestGuards -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestGuards' id='juneau-rest-server.RestGuards'>6.12 -
Guards</a><span class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.12 - juneau-rest-server.RestGuards -->
<p>
Guards are classes that control access to REST classes and methods.
</p>
@@ -16973,12 +16995,12 @@
<ul class='seealso'>
<li class='jf'>{@del org.apache.juneau.rest.RestContext#REST_guards}
</ul>
-</div><!-- END: 6.13 - juneau-rest-server.RestGuards -->
+</div><!-- END: 6.12 - juneau-rest-server.RestGuards -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestRoleGuards'
id='juneau-rest-server.RestRoleGuards'>6.14 - Role guards</a><span
class='update'>created: 8.1.0, <b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.14 - juneau-rest-server.RestRoleGuards -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestRoleGuards'
id='juneau-rest-server.RestRoleGuards'>6.13 - Role guards</a><span
class='update'>created: 8.1.0, <b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.13 - juneau-rest-server.RestRoleGuards -->
<p>
Specialized guards are provided for controlling access to servlet
classes and methods based on user roles.
These are controlled via annotations on the REST class and methods:
@@ -17041,12 +17063,12 @@
...
}
</p>
-</div><!-- END: 6.14 - juneau-rest-server.RestRoleGuards -->
+</div><!-- END: 6.13 - juneau-rest-server.RestRoleGuards -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestConverters'
id='juneau-rest-server.RestConverters'>6.15 - Converters</a><span
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.15 - juneau-rest-server.RestConverters -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestConverters'
id='juneau-rest-server.RestConverters'>6.14 - Converters</a><span
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.14 - juneau-rest-server.RestConverters -->
<p>
Converters can be thought of as "post-processors" for POJOs before they
get passed to the serializers.
</p>
@@ -17145,12 +17167,12 @@
<ul class='seealso'>
<li class='jf'>{@del
org.apache.juneau.rest.RestContext#REST_converters}
</ul>
-</div><!-- END: 6.15 - juneau-rest-server.RestConverters -->
+</div><!-- END: 6.14 - juneau-rest-server.RestConverters -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestMessages'
id='juneau-rest-server.RestMessages'>6.16 - Messages</a><span
class='update'>updated: 8.2.0, <b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.16 - juneau-rest-server.RestMessages -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestMessages'
id='juneau-rest-server.RestMessages'>6.15 - Messages</a><span
class='update'>updated: 8.2.0, <b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.15 - juneau-rest-server.RestMessages -->
<p>
The {@link org.apache.juneau.rest.annotation.Rest#messages
@Rest(messages)} annotation identifies the location of the resource bundle
for a <ja>@Rest</ja>-annotated class if it's different from the class
name.
@@ -17242,12 +17264,12 @@ Resource bundles are searched using the following
base name patterns:
<li class='jc'>{@link org.apache.juneau.cp.Messages}
<li class='jf'>{@del org.apache.juneau.rest.RestContext#REST_messages}
</ul>
-</div><!-- END: 6.16 - juneau-rest-server.RestMessages -->
+</div><!-- END: 6.15 - juneau-rest-server.RestMessages -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestEncoders'
id='juneau-rest-server.RestEncoders'>6.17 - Encoders</a><span
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.17 - juneau-rest-server.RestEncoders -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestEncoders'
id='juneau-rest-server.RestEncoders'>6.16 - Encoders</a><span
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.16 - juneau-rest-server.RestEncoders -->
<p>
The {@link org.apache.juneau.rest.annotation.Rest#encoders
@Rest(encoders)} annotation can
be used to associate character encoders with a servlet class.
@@ -17280,12 +17302,12 @@ Resource bundles are searched using the following
base name patterns:
<ul class='seealso'>
<li class='jf'>{@del org.apache.juneau.rest.RestContext#REST_encoders}
</ul>
-</div><!-- END: 6.17 - juneau-rest-server.RestEncoders -->
+</div><!-- END: 6.16 - juneau-rest-server.RestEncoders -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSvlVariables'
id='juneau-rest-server.RestSvlVariables'>6.18 - SVL Variables</a><span
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.18 - juneau-rest-server.RestSvlVariables -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSvlVariables'
id='juneau-rest-server.RestSvlVariables'>6.17 - SVL Variables</a><span
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.17 - juneau-rest-server.RestSvlVariables -->
<p>
In the previous examples, there were several cases where embedded
variables were contained within
annotation values:
@@ -17554,12 +17576,12 @@ Resource bundles are searched using the following
base name patterns:
<td class='code'>$W{MenuItemWidget}</td>
</tr>
</table>
-</div><!-- END: 6.18 - juneau-rest-server.RestSvlVariables -->
+</div><!-- END: 6.17 - juneau-rest-server.RestSvlVariables -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestConfigurationFiles'
id='juneau-rest-server.RestConfigurationFiles'>6.19 - Configuration
Files</a><span class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.19 -
juneau-rest-server.RestConfigurationFiles -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestConfigurationFiles'
id='juneau-rest-server.RestConfigurationFiles'>6.18 - Configuration
Files</a><span class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.18 -
juneau-rest-server.RestConfigurationFiles -->
<p>
The Server API provides methods for associating configuration files
with REST servlets so that
configuration properties can be defined in external files.
@@ -17724,12 +17746,12 @@ Resource bundles are searched using the following
base name patterns:
<ul class='seealso'>
<li>{@doc juneau-config}
</ul>
-</div><!-- END: 6.19 - juneau-rest-server.RestConfigurationFiles -->
+</div><!-- END: 6.18 - juneau-rest-server.RestConfigurationFiles -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestStaticFiles'
id='juneau-rest-server.RestStaticFiles'>6.20 - Static files</a><span
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.20 - juneau-rest-server.RestStaticFiles -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestStaticFiles'
id='juneau-rest-server.RestStaticFiles'>6.19 - Static files</a><span
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.19 - juneau-rest-server.RestStaticFiles -->
<p>
The {@link org.apache.juneau.rest.annotation.Rest#staticFiles
@Rest(staticFiles)}
annotation is used to define paths and locations of statically-served
files such as images or HTML
@@ -17775,12 +17797,12 @@ Resource bundles are searched using the following
base name patterns:
<ul class='seealso'>
<li class='jf'>{@del
org.apache.juneau.rest.RestContext#REST_staticFiles}
</ul>
-</div><!-- END: 6.20 - juneau-rest-server.RestStaticFiles -->
+</div><!-- END: 6.19 - juneau-rest-server.RestStaticFiles -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestClientVersioning'
id='juneau-rest-server.RestClientVersioning'>6.21 - Client Versioning</a><span
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.21 - juneau-rest-server.RestClientVersioning
-->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestClientVersioning'
id='juneau-rest-server.RestClientVersioning'>6.20 - Client Versioning</a><span
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.20 - juneau-rest-server.RestClientVersioning
-->
<p>
Client version headers are used to support backwards compatibility for
breaking REST interface changes.
Using them, you're able to return different responses based on which
client is making a request.
@@ -17822,12 +17844,12 @@ Resource bundles are searched using the following
base name patterns:
<ul class='seealso'>
<li class='jf'>{@del
org.apache.juneau.rest.RestContext#REST_clientVersionHeader}
</ul>
-</div><!-- END: 6.21 - juneau-rest-server.RestClientVersioning -->
+</div><!-- END: 6.20 - juneau-rest-server.RestClientVersioning -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestInfoProvider'
id='juneau-rest-server.RestInfoProvider'>6.22 - RestInfoProvider</a><span
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.22 - juneau-rest-server.RestInfoProvider -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestInfoProvider'
id='juneau-rest-server.RestInfoProvider'>6.21 - RestInfoProvider</a><span
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.21 - juneau-rest-server.RestInfoProvider -->
<p>
The {@del org.apache.juneau.rest.RestInfoProvider} class is used to
find the title
and description for your resource and also generate the Swagger
documentation.
@@ -17874,8 +17896,8 @@ Resource bundles are searched using the following base
name patterns:
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestInfoProvider.BasicRestInfoProvider'
id='juneau-rest-server.RestInfoProvider.BasicRestInfoProvider'>6.22.1 -
BasicRestInfoProvider</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.22.1 -
juneau-rest-server.RestInfoProvider.BasicRestInfoProvider -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestInfoProvider.BasicRestInfoProvider'
id='juneau-rest-server.RestInfoProvider.BasicRestInfoProvider'>6.21.1 -
BasicRestInfoProvider</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.21.1 -
juneau-rest-server.RestInfoProvider.BasicRestInfoProvider -->
<p>
The {@del org.apache.juneau.rest.BasicRestInfoProvider} class is the
default implementation of the
{@del org.apache.juneau.rest.RestInfoProvider} interface.
@@ -17893,13 +17915,13 @@ Resource bundles are searched using the following
base name patterns:
The class itself is designed to be extended if you wish to rely mostly
on the default behavior, but tweak
certain aspects.
</p>
-</div><!-- END: 6.22.1 -
juneau-rest-server.RestInfoProvider.BasicRestInfoProvider -->
-</div><!-- END: 6.22 - juneau-rest-server.RestInfoProvider -->
+</div><!-- END: 6.21.1 -
juneau-rest-server.RestInfoProvider.BasicRestInfoProvider -->
+</div><!-- END: 6.21 - juneau-rest-server.RestInfoProvider -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger' id='juneau-rest-server.RestSwagger'>6.23
- Swagger</a><span class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.23 - juneau-rest-server.RestSwagger -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger' id='juneau-rest-server.RestSwagger'>6.22
- Swagger</a><span class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.22 - juneau-rest-server.RestSwagger -->
<p>
One of the most useful features of Juneau is the ability to generate
Swagger-based OPTIONS pages for self-documenting designs
(i.e. REST interfaces that document themselves).
@@ -17915,8 +17937,8 @@ Resource bundles are searched using the following base
name patterns:
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerBasicRestServlet'
id='juneau-rest-server.RestSwagger.RestSwaggerBasicRestServlet'>6.23.1 -
BasicRestServlet</a><span class='update'>updated: 8.1.0,
<b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.23.1 -
juneau-rest-server.RestSwagger.RestSwaggerBasicRestServlet -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerBasicRestServlet'
id='juneau-rest-server.RestSwagger.RestSwaggerBasicRestServlet'>6.22.1 -
BasicRestServlet</a><span class='update'>updated: 8.1.0,
<b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.22.1 -
juneau-rest-server.RestSwagger.RestSwaggerBasicRestServlet -->
<p>
Any subclass of {@link org.apache.juneau.rest.BasicRestServlet} gets an
auto-generated Swagger UI when performing an <c>OPTIONS</c>
request with <c>Accept:text/html</c>.
@@ -17991,12 +18013,12 @@ Resource bundles are searched using the following
base name patterns:
Note that to have your resource create Swagger UI, you must either
extend from {@link org.apache.juneau.rest.BasicRestServlet} or provide
your own <ja>@RestOp</ja>-annotated method that returns a {@link
org.apache.juneau.dto.swagger.Swagger} object and a {@link
org.apache.juneau.dto.swagger.ui.SwaggerUI} swap.
</p>
-</div><!-- END: 6.23.1 -
juneau-rest-server.RestSwagger.RestSwaggerBasicRestServlet -->
+</div><!-- END: 6.22.1 -
juneau-rest-server.RestSwagger.RestSwaggerBasicRestServlet -->
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerBasicSwaggerInfo'
id='juneau-rest-server.RestSwagger.RestSwaggerBasicSwaggerInfo'>6.23.2 - Basic
Swagger Info</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.23.2 -
juneau-rest-server.RestSwagger.RestSwaggerBasicSwaggerInfo -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerBasicSwaggerInfo'
id='juneau-rest-server.RestSwagger.RestSwaggerBasicSwaggerInfo'>6.22.2 - Basic
Swagger Info</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.22.2 -
juneau-rest-server.RestSwagger.RestSwaggerBasicSwaggerInfo -->
<p>
Let's look at the various parts of the <c>Petstore</c> application
Swagger UI to see how they are defined.
</p>
@@ -18157,12 +18179,12 @@ Resource bundles are searched using the following
base name patterns:
<li>Resource bundle
<li>Swagger JSON file
</ol>
-</div><!-- END: 6.23.2 -
juneau-rest-server.RestSwagger.RestSwaggerBasicSwaggerInfo -->
+</div><!-- END: 6.22.2 -
juneau-rest-server.RestSwagger.RestSwaggerBasicSwaggerInfo -->
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerTags'
id='juneau-rest-server.RestSwagger.RestSwaggerTags'>6.23.3 - Tags</a><span
class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.23.3 -
juneau-rest-server.RestSwagger.RestSwaggerTags -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerTags'
id='juneau-rest-server.RestSwagger.RestSwaggerTags'>6.22.3 - Tags</a><span
class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.22.3 -
juneau-rest-server.RestSwagger.RestSwaggerTags -->
<p>
Tags allow you to group operations into general categories.
In the user interface, these can be expanded/collapsed by clicking on
the tag sections.
@@ -18257,12 +18279,12 @@ Resource bundles are searched using the following
base name patterns:
show up at the top of the page:
</p>
<img class='bordered w900' src='doc-files/juneau-rest-server.Swagger.5.png'>
-</div><!-- END: 6.23.3 - juneau-rest-server.RestSwagger.RestSwaggerTags -->
+</div><!-- END: 6.22.3 - juneau-rest-server.RestSwagger.RestSwaggerTags -->
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerOperations'
id='juneau-rest-server.RestSwagger.RestSwaggerOperations'>6.23.4 -
Operations</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.23.4 -
juneau-rest-server.RestSwagger.RestSwaggerOperations -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerOperations'
id='juneau-rest-server.RestSwagger.RestSwaggerOperations'>6.22.4 -
Operations</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.22.4 -
juneau-rest-server.RestSwagger.RestSwaggerOperations -->
<p>
<ja>@RestOp</ja>-annotated methods automatically get rendered as
Swagger operations:
</p>
@@ -18300,12 +18322,12 @@ Resource bundles are searched using the following
base name patterns:
...
}
</p>
-</div><!-- END: 6.23.4 - juneau-rest-server.RestSwagger.RestSwaggerOperations
-->
+</div><!-- END: 6.22.4 - juneau-rest-server.RestSwagger.RestSwaggerOperations
-->
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerParameters'
id='juneau-rest-server.RestSwagger.RestSwaggerParameters'>6.23.5 -
Parameters</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.23.5 -
juneau-rest-server.RestSwagger.RestSwaggerParameters -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerParameters'
id='juneau-rest-server.RestSwagger.RestSwaggerParameters'>6.22.5 -
Parameters</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.22.5 -
juneau-rest-server.RestSwagger.RestSwaggerParameters -->
<p>
Expanding operations shows you a list of parameters:
</p>
@@ -18437,12 +18459,12 @@ Resource bundles are searched using the following
base name patterns:
<p>
Note that the schema information on the body parameter is automatically
detected if not provided.
</p>
-</div><!-- END: 6.23.5 - juneau-rest-server.RestSwagger.RestSwaggerParameters
-->
+</div><!-- END: 6.22.5 - juneau-rest-server.RestSwagger.RestSwaggerParameters
-->
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerParameterExamples'
id='juneau-rest-server.RestSwagger.RestSwaggerParameterExamples'>6.23.6 -
Parameter Examples</a><span class='update'>updated: 8.1.0,
<b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.23.6 -
juneau-rest-server.RestSwagger.RestSwaggerParameterExamples -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerParameterExamples'
id='juneau-rest-server.RestSwagger.RestSwaggerParameterExamples'>6.22.6 -
Parameter Examples</a><span class='update'>updated: 8.1.0,
<b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.22.6 -
juneau-rest-server.RestSwagger.RestSwaggerParameterExamples -->
<p>
The <c>model</c> select box in the parameters can be expanded to show
examples:
</p>
@@ -18662,12 +18684,12 @@ Resource bundles are searched using the following
base name patterns:
<li class='jf'>{@del
org.apache.juneau.jsonschema.JsonSchemaGenerator#JSONSCHEMA_allowNestedExamples
JSONSCHEMA_allowNestedExamples}
</ul>
</ul>
-</div><!-- END: 6.23.6 -
juneau-rest-server.RestSwagger.RestSwaggerParameterExamples -->
+</div><!-- END: 6.22.6 -
juneau-rest-server.RestSwagger.RestSwaggerParameterExamples -->
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerResponses'
id='juneau-rest-server.RestSwagger.RestSwaggerResponses'>6.23.7 -
Responses</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.23.7 -
juneau-rest-server.RestSwagger.RestSwaggerResponses -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerResponses'
id='juneau-rest-server.RestSwagger.RestSwaggerResponses'>6.22.7 -
Responses</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.22.7 -
juneau-rest-server.RestSwagger.RestSwaggerResponses -->
<p>
Under the input parameters are listed the possible responses for the
resource:
</p>
@@ -18706,12 +18728,12 @@ Resource bundles are searched using the following
base name patterns:
<li class='link'>{@doc RestResponseHeaderAnnotation}
<li class='link'>{@doc RestResponseCodeAnnotation}
</ul>
-</div><!-- END: 6.23.7 - juneau-rest-server.RestSwagger.RestSwaggerResponses
-->
+</div><!-- END: 6.22.7 - juneau-rest-server.RestSwagger.RestSwaggerResponses
-->
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerResponseExamples'
id='juneau-rest-server.RestSwagger.RestSwaggerResponseExamples'>6.23.8 -
Response Examples</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.23.8 -
juneau-rest-server.RestSwagger.RestSwaggerResponseExamples -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerResponseExamples'
id='juneau-rest-server.RestSwagger.RestSwaggerResponseExamples'>6.22.8 -
Response Examples</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.22.8 -
juneau-rest-server.RestSwagger.RestSwaggerResponseExamples -->
<p>
The <c>model</c> select box in the responses can be expanded to show
examples:
</p>
@@ -18860,8 +18882,8 @@ Resource bundles are searched using the following base
name patterns:
</p>
<img class='bordered w900'
src='doc-files/juneau-rest-server.Swagger.ResponseExamples.4.png'>
<p>
- These can be auto-generated from {@link
org.apache.juneau.http.annotation.ResponseHeader @ResponseHeader} annotations
defined on either
- method parameters or type classes.
+ These can be auto-generated from {@link
org.apache.juneau.http.annotation.Header @Header} annotations defined on method
+ parameters or when the parameter type is the mutable {@link
org.apache.juneau.Value} object.
The example above shows one of each:
</p>
<p class='bpcode w800'>
@@ -18887,7 +18909,7 @@ Resource bundles are searched using the following base
name patterns:
example=<js>"abc123"</js>
)
String <jv>password</jv>,
- <ja>@ResponseHeader</ja>(
+ <ja>@Header</ja>(
name=<js>"X-Rate-Limit"</js>,
type=<js>"integer"</js>,
format=<js>"int32"</js>,
@@ -18911,7 +18933,7 @@ Resource bundles are searched using the following base
name patterns:
}
</p>
<p class='bpcode w800'>
- <ja>@ResponseHeader</ja>(
+ <ja>@Header</ja>(
name=<js>"X-Expires-After"</js>,
type=<js>"string"</js>,
format=<js>"date-time"</js>,
@@ -18929,12 +18951,12 @@ Resource bundles are searched using the following
base name patterns:
}
}
</p>
-</div><!-- END: 6.23.8 -
juneau-rest-server.RestSwagger.RestSwaggerResponseExamples -->
+</div><!-- END: 6.22.8 -
juneau-rest-server.RestSwagger.RestSwaggerResponseExamples -->
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerModels'
id='juneau-rest-server.RestSwagger.RestSwaggerModels'>6.23.9 - Models</a><span
class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.23.9 -
juneau-rest-server.RestSwagger.RestSwaggerModels -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerModels'
id='juneau-rest-server.RestSwagger.RestSwaggerModels'>6.22.9 - Models</a><span
class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.22.9 -
juneau-rest-server.RestSwagger.RestSwaggerModels -->
<p>
The {@del
org.apache.juneau.jsonschema.JsonSchemaGenerator#JSONSCHEMA_useBeanDefs}
setting can be used to reduce the size of your
generated Swagger JSON files by creating model definitions for beans
and referencing those definitions through <c>$ref</c> attributes.
@@ -19027,12 +19049,12 @@ Resource bundles are searched using the following
base name patterns:
Note that this does not affect how the information is rendered for that
bean in the Swagger UI:
</p>
<img class='bordered w900'
src='doc-files/juneau-rest-server.Swagger.Models.3.png'>
-</div><!-- END: 6.23.9 - juneau-rest-server.RestSwagger.RestSwaggerModels -->
+</div><!-- END: 6.22.9 - juneau-rest-server.RestSwagger.RestSwaggerModels -->
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerStylesheet'
id='juneau-rest-server.RestSwagger.RestSwaggerStylesheet'>6.23.10 -
SwaggerUI.css</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.23.10 -
juneau-rest-server.RestSwagger.RestSwaggerStylesheet -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestSwagger.RestSwaggerStylesheet'
id='juneau-rest-server.RestSwagger.RestSwaggerStylesheet'>6.22.10 -
SwaggerUI.css</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.22.10 -
juneau-rest-server.RestSwagger.RestSwaggerStylesheet -->
<p>
The look-and-feel of the Swagger UI is controlled via a single CSS
file: <c>SwaggerUI.css</c>.
</p>
@@ -19041,13 +19063,13 @@ Resource bundles are searched using the following
base name patterns:
It's a simple straightforward file consisting of less than 350 lines.
This file can be modified to change the look-and-feel of your Swagger
UI.
</p>
-</div><!-- END: 6.23.10 - juneau-rest-server.RestSwagger.RestSwaggerStylesheet
-->
-</div><!-- END: 6.23 - juneau-rest-server.RestSwagger -->
+</div><!-- END: 6.22.10 - juneau-rest-server.RestSwagger.RestSwaggerStylesheet
-->
+</div><!-- END: 6.22 - juneau-rest-server.RestSwagger -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestExecutionStatistics'
id='juneau-rest-server.RestExecutionStatistics'>6.24 - REST method execution
statistics</a><span class='update'>created: 8.1.3,
<b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.24 -
juneau-rest-server.RestExecutionStatistics -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestExecutionStatistics'
id='juneau-rest-server.RestExecutionStatistics'>6.23 - REST method execution
statistics</a><span class='update'>created: 8.1.3,
<b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.23 -
juneau-rest-server.RestExecutionStatistics -->
<p>
<ja>@RestResource</ja> annotated classes get automated timing and error
statistic information for all <ja>@RestOp</ja>
and <ja>@RestHook</ja> annotated methods on the class.
@@ -19073,12 +19095,12 @@ Resource bundles are searched using the following
base name patterns:
<li class='jm'>{@link
org.apache.juneau.rest.RestContext#getStats() getStats()}
</ul>
</ul>
-</div><!-- END: 6.24 - juneau-rest-server.RestExecutionStatistics -->
+</div><!-- END: 6.23 - juneau-rest-server.RestExecutionStatistics -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHtmlDocAnnotation'
id='juneau-rest-server.RestHtmlDocAnnotation'>6.25 - @HtmlDocConfig</a><span
class='update'>updated: 8.1.0, <b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.25 - juneau-rest-server.RestHtmlDocAnnotation
-->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHtmlDocAnnotation'
id='juneau-rest-server.RestHtmlDocAnnotation'>6.24 - @HtmlDocConfig</a><span
class='update'>updated: 8.1.0, <b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.24 - juneau-rest-server.RestHtmlDocAnnotation
-->
<p>
The {@link org.apache.juneau.html.annotation.HtmlDocConfig
@HtmlDocConfig} annotation is used to customize the HTML
view of your serialized POJOs.
@@ -19194,8 +19216,8 @@ Resource bundles are searched using the following base
name patterns:
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUIvsDI'
id='juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUIvsDI'>6.25.1 - User
Interfaces (UI) vs. Developer Interfaces (DI)</a><span
class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.25.1 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUIvsDI -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUIvsDI'
id='juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUIvsDI'>6.24.1 - User
Interfaces (UI) vs. Developer Interfaces (DI)</a><span
class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.24.1 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUIvsDI -->
<p>
An important distinction needs to be made about the HTML
representations produced by the REST
API. These should not be considered User Interfaces, but rather
Developer Interfaces.
@@ -19236,12 +19258,12 @@ Resource bundles are searched using the following
base name patterns:
The architecture is flexible enough that you could in theory
pull in and use jQuery, React,
Angular, or any number of sophisticated Javascript UI
frameworks. Resist the urge to do so.
</ul>
-</div><!-- END: 6.25.1 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUIvsDI -->
+</div><!-- END: 6.24.1 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUIvsDI -->
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHtmlDocAnnotation.RestHtmlWidgets'
id='juneau-rest-server.RestHtmlDocAnnotation.RestHtmlWidgets'>6.25.2 -
Widgets</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.25.2 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlWidgets -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHtmlDocAnnotation.RestHtmlWidgets'
id='juneau-rest-server.RestHtmlDocAnnotation.RestHtmlWidgets'>6.24.2 -
Widgets</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.24.2 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlWidgets -->
<p>
The {@link org.apache.juneau.rest.widget.Widget} class allows you to
add arbitrary HTML, CSS, and Javascript
to HTML pages.
@@ -19354,12 +19376,12 @@ Resource bundles are searched using the following
base name patterns:
<ul class='seealso'>
<li class='jf'>{@del org.apache.juneau.rest.RestContext#REST_widgets}
</ul>
-</div><!-- END: 6.25.2 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlWidgets -->
+</div><!-- END: 6.24.2 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlWidgets -->
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHtmlDocAnnotation.RestHtmlPredefinedWidgets'
id='juneau-rest-server.RestHtmlDocAnnotation.RestHtmlPredefinedWidgets'>6.25.3
- Predefined Widgets</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.25.3 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlPredefinedWidgets -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHtmlDocAnnotation.RestHtmlPredefinedWidgets'
id='juneau-rest-server.RestHtmlDocAnnotation.RestHtmlPredefinedWidgets'>6.24.3
- Predefined Widgets</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.24.3 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlPredefinedWidgets -->
<p>
The {@link org.apache.juneau.rest.widget} package contains predefined
reusable widgets.
</p>
@@ -19594,12 +19616,12 @@ Resource bundles are searched using the following
base name patterns:
}
}
</p>
-</div><!-- END: 6.25.3 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlPredefinedWidgets -->
+</div><!-- END: 6.24.3 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlPredefinedWidgets -->
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUiCustomization'
id='juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUiCustomization'>6.25.4 -
UI Customization</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.25.4 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUiCustomization -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUiCustomization'
id='juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUiCustomization'>6.24.4 -
UI Customization</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.24.4 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUiCustomization -->
<p>
The HTML views of POJOs can somewhat be considered a rudimentary User
Interface.
In reality, a better term for them would be a Developer Interface as
they're meant to be used
@@ -19743,12 +19765,12 @@ Resource bundles are searched using the following
base name patterns:
<ul class='seealso'>
<li class='link'>{@doc MicroserviceJettyUiCustomization}
</ul>
-</div><!-- END: 6.25.4 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUiCustomization -->
+</div><!-- END: 6.24.4 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlUiCustomization -->
<!--
====================================================================================================
-->
-<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHtmlDocAnnotation.RestHtmlStylesheets'
id='juneau-rest-server.RestHtmlDocAnnotation.RestHtmlStylesheets'>6.25.5 -
Stylesheets</a><span class='update'>updated: 8.1.0,
<b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.25.5 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlStylesheets -->
+<h5 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHtmlDocAnnotation.RestHtmlStylesheets'
id='juneau-rest-server.RestHtmlDocAnnotation.RestHtmlStylesheets'>6.24.5 -
Stylesheets</a><span class='update'>updated: 8.1.0,
<b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.24.5 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlStylesheets -->
<p>
The sample root page renders in the default "devops" look-and-feel:
</p>
@@ -19858,13 +19880,13 @@ Resource bundles are searched using the following
base name patterns:
}
}
</p>
-</div><!-- END: 6.25.5 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlStylesheets -->
-</div><!-- END: 6.25 - juneau-rest-server.RestHtmlDocAnnotation -->
+</div><!-- END: 6.24.5 -
juneau-rest-server.RestHtmlDocAnnotation.RestHtmlStylesheets -->
+</div><!-- END: 6.24 - juneau-rest-server.RestHtmlDocAnnotation -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestDefaultHeaders'
id='juneau-rest-server.RestDefaultHeaders'>6.26 - Default Headers</a><span
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.26 - juneau-rest-server.RestDefaultHeaders -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestDefaultHeaders'
id='juneau-rest-server.RestDefaultHeaders'>6.25 - Default Headers</a><span
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.25 - juneau-rest-server.RestDefaultHeaders -->
<p>
The following annotations are provided for specifying default header
values for requests and responses:
</p>
@@ -19906,12 +19928,12 @@ Resource bundles are searched using the following
base name patterns:
</ul>
</li>
</ul>
-</div><!-- END: 6.26 - juneau-rest-server.RestDefaultHeaders -->
+</div><!-- END: 6.25 - juneau-rest-server.RestDefaultHeaders -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestLoggingAndDebugging'
id='juneau-rest-server.RestLoggingAndDebugging'>6.27 - Logging /
Debugging</a><span class='update'>created: 8.1.0, updated: 8.2.0,
<b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.27 -
juneau-rest-server.RestLoggingAndDebugging -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestLoggingAndDebugging'
id='juneau-rest-server.RestLoggingAndDebugging'>6.26 - Logging /
Debugging</a><span class='update'>created: 8.1.0, updated: 8.2.0,
<b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.26 -
juneau-rest-server.RestLoggingAndDebugging -->
<p>
The REST APIs provides support for fine-tuned control of logging for
HTTP requests and responses.
</p>
@@ -20242,12 +20264,12 @@ Resource bundles are searched using the following
base name patterns:
The {@del
org.apache.juneau.rest.annotation.Logging#stackTraceHashingTimeout()
@Logging(stackTraceHashingTimeout)} setting can be used to periodically log the
stacktrace
to the log file again.
</p>
-</div><!-- END: 6.27 - juneau-rest-server.RestLoggingAndDebugging -->
+</div><!-- END: 6.26 - juneau-rest-server.RestLoggingAndDebugging -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHttpStatusCodes'
id='juneau-rest-server.RestHttpStatusCodes'>6.28 - HTTP Status Codes</a><span
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.28 - juneau-rest-server.RestHttpStatusCodes
-->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHttpStatusCodes'
id='juneau-rest-server.RestHttpStatusCodes'>6.27 - HTTP Status Codes</a><span
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.27 - juneau-rest-server.RestHttpStatusCodes
-->
<p>
By default, a 200 (OK) status is automatically set as the HTTP status
when a Java method executes
successfully.
@@ -20310,12 +20332,12 @@ Resource bundles are searched using the following
base name patterns:
<td>The Java method threw an exception other than {@del
org.apache.juneau.rest.RestException}</td>
</tr>
</table>
-</div><!-- END: 6.28 - juneau-rest-server.RestHttpStatusCodes -->
+</div><!-- END: 6.27 - juneau-rest-server.RestHttpStatusCodes -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestOverloadingHttpMethods'
id='juneau-rest-server.RestOverloadingHttpMethods'>6.29 - Overloading HTTP
Methods</a><span class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.29 -
juneau-rest-server.RestOverloadingHttpMethods -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestOverloadingHttpMethods'
id='juneau-rest-server.RestOverloadingHttpMethods'>6.28 - Overloading HTTP
Methods</a><span class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.28 -
juneau-rest-server.RestOverloadingHttpMethods -->
<p>
Through the use of the built-in <l>"method"</l> GET parameter, you can
implement requests beyond the basic
REST http method types.
@@ -20339,12 +20361,12 @@ Resource bundles are searched using the following
base name patterns:
allowedMethodParams=<js>"BAR"</js>
)
</p>
-</div><!-- END: 6.29 - juneau-rest-server.RestOverloadingHttpMethods -->
+</div><!-- END: 6.28 - juneau-rest-server.RestOverloadingHttpMethods -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestBuiltInParameters'
id='juneau-rest-server.RestBuiltInParameters'>6.30 - Built-in
Parameters</a><span class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.30 - juneau-rest-server.RestBuiltInParameters
-->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestBuiltInParameters'
id='juneau-rest-server.RestBuiltInParameters'>6.29 - Built-in
Parameters</a><span class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.29 - juneau-rest-server.RestBuiltInParameters
-->
<p>
The following URL parameters have special meaning and can be passed in
through the URL of the request:
</p>
@@ -20404,12 +20426,12 @@ Resource bundles are searched using the following
base name patterns:
</td>
</tr>
</table>
-</div><!-- END: 6.30 - juneau-rest-server.RestBuiltInParameters -->
+</div><!-- END: 6.29 - juneau-rest-server.RestBuiltInParameters -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestCustomSerializersAndParsers'
id='juneau-rest-server.RestCustomSerializersAndParsers'>6.31 - Custom
Serializers and Parsers</a><span
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.31 -
juneau-rest-server.RestCustomSerializersAndParsers -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestCustomSerializersAndParsers'
id='juneau-rest-server.RestCustomSerializersAndParsers'>6.30 - Custom
Serializers and Parsers</a><span
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.30 -
juneau-rest-server.RestCustomSerializersAndParsers -->
<p>
A very easy-to-use API is provided for defining your own serializers
and parsers at both the servlet and
method levels.
@@ -20524,12 +20546,12 @@ Resource bundles are searched using the following
base name patterns:
}
}
</p>
-</div><!-- END: 6.31 - juneau-rest-server.RestCustomSerializersAndParsers -->
+</div><!-- END: 6.30 - juneau-rest-server.RestCustomSerializersAndParsers -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestUsingWithOsgi'
id='juneau-rest-server.RestUsingWithOsgi'>6.32 - Using with OSGi</a><span
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.32 - juneau-rest-server.RestUsingWithOsgi -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestUsingWithOsgi'
id='juneau-rest-server.RestUsingWithOsgi'>6.31 - Using with OSGi</a><span
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.31 - juneau-rest-server.RestUsingWithOsgi -->
<p>
Since REST servlets are basically just <l>HttpServlets</l>,
incorporating them into an OSGi environment
is pretty straightforward.
@@ -20591,12 +20613,12 @@ Resource bundles are searched using the following
base name patterns:
}
}
</p>
-</div><!-- END: 6.32 - juneau-rest-server.RestUsingWithOsgi -->
+</div><!-- END: 6.31 - juneau-rest-server.RestUsingWithOsgi -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestInjection'
id='juneau-rest-server.RestInjection'>6.33 - Using with Spring and Injection
frameworks</a><span class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.33 - juneau-rest-server.RestInjection -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestInjection'
id='juneau-rest-server.RestInjection'>6.32 - Using with Spring and Injection
frameworks</a><span class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.32 - juneau-rest-server.RestInjection -->
<p>
The Juneau REST server API is compatible with dependency injection
frameworks such as Spring.
</p>
@@ -20698,24 +20720,24 @@ Resource bundles are searched using the following
base name patterns:
<jk>this</jk>.<jf>bean3</jf> = bean3;
}
</p>
-</div><!-- END: 6.33 - juneau-rest-server.RestInjection -->
+</div><!-- END: 6.32 - juneau-rest-server.RestInjection -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHttp2' id='juneau-rest-server.RestHttp2'>6.34 -
Using HTTP/2 features</a><span class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.34 - juneau-rest-server.RestHttp2 -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestHttp2' id='juneau-rest-server.RestHttp2'>6.33 -
Using HTTP/2 features</a><span class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.33 - juneau-rest-server.RestHttp2 -->
<p>
Juneau is built as a veneer on top of the Servlet API, allowing you to
use low-level Servlet APIs
whenever needed.
This allows you to take advantage of the newest HTTP/2 features
implemented in the new Servlet 4.0
specification.
</p>
-</div><!-- END: 6.34 - juneau-rest-server.RestHttp2 -->
+</div><!-- END: 6.33 - juneau-rest-server.RestHttp2 -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestOtherNotes'
id='juneau-rest-server.RestOtherNotes'>6.35 - Other Notes</a><span
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.35 - juneau-rest-server.RestOtherNotes -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestOtherNotes'
id='juneau-rest-server.RestOtherNotes'>6.34 - Other Notes</a><span
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.34 - juneau-rest-server.RestOtherNotes -->
<ul class='spaced-list'>
<li>
Subclasses can use either {@link
javax.servlet.http.HttpServlet#init(ServletConfig)}
@@ -20726,12 +20748,12 @@ Resource bundles are searched using the following
base name patterns:
For example, to add a <l>"Refresh: 1"</l> header to the
response to auto-refresh a page, the following
parameter can be specified:
<l>"/sample?X-Response-Headers={Refresh=1}"</l>
</ul>
-</div><!-- END: 6.35 - juneau-rest-server.RestOtherNotes -->
+</div><!-- END: 6.34 - juneau-rest-server.RestOtherNotes -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestContext' id='juneau-rest-server.RestContext'>6.36
- RestContext</a><span class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.36 - juneau-rest-server.RestContext -->
+<h3 class='topic' onclick='toggle(this)'><a
href='#juneau-rest-server.RestContext' id='juneau-rest-server.RestContext'>6.35
- RestContext</a><span class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.35 - juneau-rest-server.RestContext -->
<p>
The {@link org.apache.juneau.rest.RestContext} object is the workhorse
class for all of the configuration
of a single REST resource class.
@@ -20779,12 +20801,12 @@ Resource bundles are searched using the following
base name patterns:
Through it, you can configure bean/serializer/parser settings, define
config files, children,
resource finders, info providers, etc...
</p>
-</div><!-- END: 6.36 - juneau-rest-server.RestContext -->
+</div><!-- END: 6.35 - juneau-rest-server.RestContext -->
<!--
====================================================================================================
-->
-<h3 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestRpc'
id='juneau-rest-server.RestRpc'>6.37 - REST/RPC</a><span
class='update'>updated: 8.0.0, <b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.37 - juneau-rest-server.RestRpc -->
+<h3 class='topic' onclick='toggle(this)'><a href='#juneau-rest-server.RestRpc'
id='juneau-rest-server.RestRpc'>6.36 - REST/RPC</a><span
class='update'>updated: 8.0.0, <b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.36 - juneau-rest-server.RestRpc -->
<p>
The REST/RPC (RPC over REST) API allows the creation of client-side
remote proxy interfaces for calling methods on server-side POJOs using entirely
REST.
</p>
@@ -21103,7 +21125,7 @@ Resource bundles are searched using the following base
name patterns:
<img class='bordered w800' src='doc-files/juneau-rest-server.restRPC.8.png'>
<h5 class='figure'>Sample form entry page results</h5>
<img class='bordered w800' src='doc-files/juneau-rest-server.restRPC.9.png'>
-</div><!-- END: 6.37 - juneau-rest-server.RestRpc -->
+</div><!-- END: 6.36 - juneau-rest-server.RestRpc -->
</div><!-- END: 6 - juneau-rest-server -->
<!--
====================================================================================================
-->
@@ -23427,13 +23449,13 @@ Resource bundles are searched using the following
base name patterns:
<ja>@Response</ja>
<jk>public interface</jk> CreatePetResponse {
- <ja>@ResponseBody</ja>
+ <ja>@Body</ja>
Pet getBody();
- <ja>@ResponseHeader</ja>(<js>"E-Tag"</js>)
+ <ja>@Header</ja>(<js>"E-Tag"</js>)
UUID getUUID();
- <ja>@ResponseCode</ja>
+ <ja>@StatusCode</ja>
<jk>int</jk> getStatus();
}
</p>
@@ -23452,9 +23474,9 @@ Resource bundles are searched using the following base
name patterns:
<p>
Any of the following annotations can be used on the methods:
</p>
-<ul class='javatree'>
- <li class='ja'>{@link org.apache.juneau.http.annotation.ResponseBody}
- <li class='ja'>{@link org.apache.juneau.http.annotation.ResponseHeader}
+<ul class='javatreec'>
+ <li class='ja'>{@link org.apache.juneau.http.annotation.Body}
+ <li class='ja'>{@link org.apache.juneau.http.annotation.Header}
<li class='ja'>{@link org.apache.juneau.http.annotation.StatusCode}
</ul>
<p>
@@ -28311,16 +28333,6 @@ Resource bundles are searched using the following base
name patterns:
<td>Identifies an interface to use to interact with HTTP parts
of an HTTP response through a bean.</td>
</tr>
<tr>
- <td><ul style='margin-left:20px'><li class='ja'>{@link
org.apache.juneau.http.annotation.ResponseBody}</ul></td>
- <td><ul><li>Methods</ul></td>
- <td>Denotes a method as an HTTP response body on a
<ja>@Response</ja>-annotated bean.</td>
- </tr>
- <tr>
- <td><ul style='margin-left:20px'><li class='ja'>{@link
org.apache.juneau.http.annotation.ResponseHeader}</ul></td>
- <td><ul><li>Classes<li>Methods<li>Parameters</ul></td>
- <td>Denotes a method as an HTTP response header on a
<ja>@Response</ja>-annotated bean.</td>
- </tr>
- <tr>
<td><ul style='margin-left:20px'><li class='ja'>{@link
org.apache.juneau.http.annotation.StatusCode}</ul></td>
<td><ul><li>Methods<li>Parameters</ul></td>
<td>Denotes a method as an HTTP response status code on a
<ja>@Response</ja>-annotated bean.</td>
diff --git a/juneau-doc/src/main/javadoc/resources/docs.txt
b/juneau-doc/src/main/javadoc/resources/docs.txt
index 008a92a..721f51a 100644
--- a/juneau-doc/src/main/javadoc/resources/docs.txt
+++ b/juneau-doc/src/main/javadoc/resources/docs.txt
@@ -212,8 +212,7 @@ RestExamplesLogsResource =
#juneau-examples-rest.RestExamplesLogsResource, Overv
RestExamplesRootResources = #juneau-examples-rest.RestExamplesRootResources,
Overview > juneau-examples-rest > RootResources
RestExecutionStatistics = #juneau-rest-server.RestExecutionStatistics,
Overview > juneau-rest-server > REST method execution statistics
RestGuards = #juneau-rest-server.RestGuards, Overview > juneau-rest-server >
Guards
-RestHandlingFormPosts = #juneau-rest-server.RestHandlingFormPosts, Overview >
juneau-rest-server > Handling Form Posts
-RestHandlingMultiPartFormPosts =
#juneau-rest-server.RestHandlingMultiPartFormPosts, Overview >
juneau-rest-server > Handling Multi-Part Form Posts
+RestHandlingFormPosts = #juneau-rest-server.RestHandlingFormPosts, Overview >
juneau-rest-server > Form Posts
RestHandlingUris = #juneau-rest-server.RestHandlingUris, Overview >
juneau-rest-server > URIs
RestHelloWorldExample = #juneau-rest-server.RestHelloWorldExample, Overview >
juneau-rest-server > Hello World Example
RestHtmlDocAnnotation = #juneau-rest-server.RestHtmlDocAnnotation, Overview >
juneau-rest-server > @HtmlDocConfig
diff --git a/juneau-doc/src/main/javadoc/resources/fragments/toc.html
b/juneau-doc/src/main/javadoc/resources/fragments/toc.html
index 050d239..cd687b1 100644
--- a/juneau-doc/src/main/javadoc/resources/fragments/toc.html
+++ b/juneau-doc/src/main/javadoc/resources/fragments/toc.html
@@ -219,8 +219,7 @@
<li><p><a class='doclink'
href='{OVERVIEW_URL}#juneau-rest-server.HttpParts.ResponseBeans'>@Response
Beans</a><span class='update'>updated: 8.1.0,<b>9.0.0</b></span></p>
<li><p><a class='doclink'
href='{OVERVIEW_URL}#juneau-rest-server.HttpParts.HttpPartApis'>HTTP Part
APIs</a><span class='update'>created: <b>9.0.0</b></span></p>
</ol>
- <li><p><a class='doclink'
href='{OVERVIEW_URL}#juneau-rest-server.RestHandlingFormPosts'>Handling Form
Posts</a><span class='update'><b><red>todo</red></b></span></p>
- <li><p><a class='doclink'
href='{OVERVIEW_URL}#juneau-rest-server.RestHandlingMultiPartFormPosts'>Handling
Multi-Part Form Posts</a><span class='update'>updated: 8.0.0,
<b><red>todo</red></b></span></p>
+ <li><p><a class='doclink'
href='{OVERVIEW_URL}#juneau-rest-server.RestHandlingFormPosts'>Form
Posts</a><span class='update'>updated: <b>9.0.0</b></span></p>
<li><p><a class='doclink'
href='{OVERVIEW_URL}#juneau-rest-server.RestSerializers'>Serializers</a><span
class='update'><b><red>todo</red></b></span></p>
<li><p><a class='doclink'
href='{OVERVIEW_URL}#juneau-rest-server.RestParsers'>Parsers</a><span
class='update'><b><red>todo</red></b></span></p>
<li><p><a class='doclink'
href='{OVERVIEW_URL}#juneau-rest-server.RestConfigurableProperties'>Configurable
Properties</a><span class='update'>updated: 8.1.0,
<b><red>todo</red></b></span></p>