This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new b9523bb Javadoc updates.
b9523bb is described below
commit b9523bbd6c23b6d1ab23784eb18c0bfbb93bd10b
Author: JamesBognar <[email protected]>
AuthorDate: Wed Jan 24 15:12:13 2018 -0500
Javadoc updates.
---
juneau-doc/src/main/javadoc/overview.html | 457 +++++++++++++++++-------------
1 file changed, 258 insertions(+), 199 deletions(-)
diff --git a/juneau-doc/src/main/javadoc/overview.html
b/juneau-doc/src/main/javadoc/overview.html
index 7e03450..b2b577b 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -142,14 +142,74 @@
<ol>
<li><p><a class='doclink'
href='#juneau-rest-server'><i>juneau-rest-server</i></a></p>
<ol>
- <li><p><a class='doclink'
href='#juneau-rest-server.Remoteable'>Remoteable Proxies</a></p>
- <li><p><a class='doclink'
href='#juneau-rest-server.Injection'>Using with Spring or other Injection
frameworks</a></p>
- <li><p><a class='doclink'
href='#juneau-rest-server.HTTP2'>Using HTTP/2 features</a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.HelloWorldExample'><i>Hello World Example</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.ClassHierarchy'><i>Class Hierarchy</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Instantiation'><i>Instantiation</i></a></p>
+ <ol>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Children'><i>Children</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.RouterPages'><i>Router Pages</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.ResourceResolvers'><i>Resource Resolvers</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.LifecycleHooks'><i>Lifecycle Hooks</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.AnnotationInheritance'><i>Annotation
Inheritance</i></a></p>
+ </ol>
+ <li><p><a class='doclink'
href='#juneau-rest-server.RestMethod'><i>@RestMethod Annotation</i></a></p>
+ <ol>
+ <li><p><a class='doclink'
href='#juneau-rest-server.MethodParameters'><i>Java Method
Parameters</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.MethodReturnTypes'><i>Method Return Types</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.RestMethodPath'><i>@RestMethod.path()</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.RestMethodMatchers'><i>@RestMethod.matchers()</i></a></p>
+ </ol>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Body'><i>@Body</i></a></p>
+ <ol>
+ <li><p><a class='doclink'
href='#juneau-rest-server.HandlingFormPosts'><i>Handling Form Posts</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.HandlingMultiPartFormPosts'><i>Handling Multi-Part
Form Posts</i></a></p>
+ </ol>
+ <li><p><a class='doclink'
href='#juneau-rest-server.FormData'><i>@FormData</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Query'><i>@Query</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Header'><i>@Header</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Serializers'><i>Serializers</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Parsers'><i>Parsers</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Properties'><i>Properties</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Transforms'><i>Transforms</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Guards'><i>Guards</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Converters'><i>Converters</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Messages'><i>Messages</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Encoders'><i>Encoders</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.SvlVariables'><i>SVL Variables</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.ConfigurationFiles'><i>Configuration Files</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.StaticFiles'><i>Static files</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.ClientVersioning'><i>Client Versioning</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.OptionsPages'><i>OPTIONS pages</i></a></p>
+ <ol>
+ <li><p><a class='doclink'
href='#juneau-rest-server.InfoProviders'><i>Info Providers</i></a></p>
+ </ol>
+ <li><p><a class='doclink'
href='#juneau-rest-server.HtmlDocAnnotation'><i> @HtmlDoc</i></a></p>
+ <ol>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Widgets'><i>Widgets</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.UiCustomization'><i>UI Customization</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Stylesheets'><i>Stylesheets</i></a></p>
+ </ol>
+ <li><p><a class='doclink'
href='#juneau-rest-server.DefaultHeaders'><i>Default Headers</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.LoggingAndErrorHandling'><i>Logging and Error
Handling</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.HttpStatusCodes'><i>HTTP Status Codes</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.OverloadingHttpMethods'><i>Overloading HTTP
Methods</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.BuiltInParameters'><i>Built-in Parameters</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.CustomSerializersAndParsers'><i>Custom Serializers
and Parsers</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.UsingWithOsgi'><i>Using with OSGi</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.RemoteableProxies'><i>Remoteable Proxies</i></a></p>
+ <ol>
+ <li><p><a class='doclink'
href='#juneau-rest-server.RemoteableProxiesClientSide'><i>Remoteable Proxies -
Client Side</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.RemoteableProxiesServerSide'><i>Remoteable Proxies -
Server Side</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.RemoteableProxiesRemoteableAnnotation'><i>Remoteable
Proxies - @Remoteable Annotation</i></a></p>
+ </ol>
+ <li><p><a class='doclink'
href='#juneau-rest-server.Injection'><i>Using with Spring or other Injection
frameworks</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.HTTP2'><i>Using HTTP/2 features</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server.OtherNotes'><i>Other Notes</i></a></p>
</ol>
- <li><p><a class='doclink'
href='#juneau-rest-server-jaxrs'><i>juneau-rest-server-jaxrs</i></a></p>
- <li><p><a class='doclink'
href='#juneau-rest-client'><i>juneau-rest-client</i></a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-server-jaxrs'><i>3.2 - juneau-rest-server-jaxrs</i></a></p>
+ <li><p><a class='doclink' href='#juneau-rest-client'><i>3.3 -
juneau-rest-client</i></a></p>
<ol>
- <li><p><a class='doclink'
href='#juneau-rest-client.3rdPartyProxies'>Interface proxies against 3rd-party
REST interfaces</a></p>
+ <li><p><a class='doclink'
href='#juneau-rest-client.3rdPartyProxies'><i>3.3.1 - Interface proxies against
3rd-party REST interfaces</i></a></p>
</ol>
</ol>
<li><p><a class='doclink'
href='#juneau-microservice'><i>juneau-microservice</i></a></p>
@@ -4539,12 +4599,13 @@
</p>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.HelloWorldResource"></a>
+ <a id="juneau-rest-server.HelloWorldExample"></a>
<h4 class='topic' onclick='toggle(this)'>3.1.1 - Hello World
Example</h4>
<div class='topic'>
<p>
- A REST resource is an implementation of {@link
org.apache.juneau.rest.RestServlet}, which itself is simply an
- extension of {@link
javax.servlet.http.HttpServlet}.
+ A REST resource is simply a Java class
annotated with {@link org.apache.juneau.annotation.RestResource}.
+ <br>The most common case is a class that
extends {@link org.apache.juneau.rest.RestServlet}, which itself is simply an
+ extension of {@link
javax.servlet.http.HttpServlet} which allows it to be deployed as a servlet.
</p>
<p>
In this example, we define a resource called
<l>HelloWorldResource</l>.
@@ -4702,12 +4763,12 @@
REST resources are deployed in one of two ways:
</p>
<ul>
- <li>Deployed in a J2EE container like any other
servlet.
+ <li>Deployed in a J2EE container as a servlet.
<li>Deployed as a child of another REST
resources.
</ul>
<p>
When deployed in a J2EE container, you MUST
extend from one of the servlet classes.
- <br>When deployed as a child of another
resource, you MAY extend from one of the servlet classes, but it's
+ <br>When deployed as a child of another
resource, you MAY extend from one of the servlet classes but it's
not necessary.
</p>
@@ -4819,16 +4880,8 @@
<h4 class='topic' onclick='toggle(this)'>3.1.3.3 -
Resource Resolvers</h4>
<div class='topic'>
<p>
- Child resource objects are instantiated
through the following API:
- </p>
- <ul class='doctree'>
- <li class='jic'>{@link
org.apache.juneau.rest.RestResourceResolver}
- <ul>
- <li class='jc'>{@link
org.apache.juneau.rest.RestResourceResolverDefault}
- </ul>
- </ul>
- <p>
- The default implementation simply
instantiates the class using one of the following constructors:
+ By default, you can add the {@link
org.apache.juneau.rest.annotation.RestResource @RestResource}
+ to any class as long as it has one of
the following constructors:
</p>
<ul>
<li><code><jk>public</jk>
T(RestContextBuilder)</code>
@@ -4838,6 +4891,19 @@
The former constructor can be used to
get access to the {@link org.apache.juneau.rest.RestContextBuilder} object to
make
any configurations to the resource
before it's initialized.
</p>
+ <p>
+ Resource object resolution is
controlled through the following API:
+ </p>
+ <ul class='doctree'>
+ <li class='jic'>{@link
org.apache.juneau.rest.RestResourceResolver}
+ <ul>
+ <li class='jc'>{@link
org.apache.juneau.rest.RestResourceResolverDefault}
+ </ul>
+ </ul>
+ <p>
+ This API can be extended to provide
your own custom resource resolution.
+ <br>Later topics discuss how to use
this API to instantiate resources using Spring.
+ </p>
<h6 class='section'>See Also:</h6>
<ul>
<li class='jf'>{@link
org.apache.juneau.rest.RestContext#REST_resourceResolver}
@@ -4912,7 +4978,7 @@
<h4 class='topic' onclick='toggle(this)'>3.1.3.5 -
Annotation Inheritance</h4>
<div class='topic'>
<p>
- The {@link
org.apache.juneau.rest.annotation.RestResource @RestResource} annotation can be
used on parent classes and interfaces.
+ The {@link
org.apache.juneau.rest.annotation.RestResource @RestResource} annotation can
also be used on parents and interfaces of resource classes.
<br>When multiple annotations are
defined at different levels, the annotation values are combined.
</p>
<p>
@@ -5063,12 +5129,6 @@
<p>
There are no restrictions on the name of the
Java method.
- <br>However, if you plan on making use of the
{@link org.apache.juneau.rest.annotation.RestResource#messages()
@RestResource.messages()} annotation
- (described later), the method names must be
unique to make it possible to identify unique keys for labels
- in the resource bundle.
- <br>Therefore, you should not define two
identically-named <l>doFoo(...)</l> methods that differ only by
- parameters.
- <br>If you're not using messages for NLS
support, then name them whatever you want!
</p>
<!--
========================================================================================================
-->
@@ -5210,51 +5270,93 @@
The return type can be any serializable
POJO as defined in <a class='doclink'
href='#juneau-marshall.PojoCategories'>POJO Categories</a>.
<br>It can also be <jk>void</jk> if the
method is not sending any output (e.g. a request redirect) or is
setting the output using the {@link
org.apache.juneau.rest.RestResponse#setOutput(Object)} method.
- <br>Calling the {@link
org.apache.juneau.rest.RestResponse#setOutput(Object)} method is functionally
equivalent
- to returning a value.
</p>
<h6 class='figure'>Example:</h6>
<p class='bcode'>
- <jc>// Equivalent method 1</jc>
- <ja>@RestMethod</ja>(name=<jsf>GET</jsf>)
- <jk>public void</jk> doGet(RestResponse res) {
- res.setOutput(<js>"Hello World!"</js>);
- }
-
- <jc>// Equivalent method 2</jc>
<ja>@RestMethod</ja>(name=<jsf>GET</jsf>)
<jk>public</jk> String doGet() {
<jk>return</jk> <js>"Hello World!"</js>;
}
</p>
<p>
- The list of supported return types is
configured via the following API which provides
- support for many kinds of POJOs
out-of-the-box:
+ Out-of-the-box, besides POJOs, the
following return types are handled as special cases:
+ </p>
+ <ul class='spaced-list'>
+ <li class='jc'>{@link
java.io.InputStream}
+ <br>The contents are simply
piped to the output stream returned by
+ {@link
org.apache.juneau.rest.RestResponse#getNegotiatedOutputStream()}.
+ <br>Note that you should call
{@link org.apache.juneau.rest.RestResponse#setContentType(String)} to set
+ the <l>Content-Type</l> header
if you use this object type.
+ <li class='jc'>{@link java.io.Reader}
+ <br>The contents are simply
piped to the output stream returned by
+ {@link
org.apache.juneau.rest.RestResponse#getNegotiatedWriter()}.
+ <br>Note that you should call
{@link org.apache.juneau.rest.RestResponse#setContentType(String)} to set
+ the <l>Content-Type</l> header
if you use this object type.
+ <li class='jc'>{@link
org.apache.juneau.rest.Redirect}
+ <br>Represents an HTTP redirect
response.
+ <li class='jc'>{@link
org.apache.juneau.Streamable}
+ <br>Interface that identifies
that an object can be serialized directly to an output stream.
+ <li class='jc'>{@link
org.apache.juneau.Writable}
+ <br>Interface that identifies
that an object can be serialized directly to a writer.
+ <li class='jc'>{@link
org.apache.juneau.utils.ZipFileList}
+ <br>Special interface for
sending zip files as responses.
+ </ul>
+ <p>
+ This is controlled through the
following extensible API:
</p>
<ul class='doctree'>
- <li class='jic'>{@link
org.apache.juneau.rest.ResponseHandler} - Interface for converting POJOs to
HTTP responses.
+ <li class='jic'>{@link
org.apache.juneau.rest.ResponseHandler}
<ul>
- <li class='jc'>{@link
org.apache.juneau.rest.response.DefaultHandler} - Handles all POJOs not
processed by the other handlers using the registered Juneau serializers.
- <li class='jc'>{@link
org.apache.juneau.rest.response.InputStreamHandler} - Handles {@link
java.io.InputStream} objects.
- <br>The contents are
simply piped to the output stream returned by
- {@link
org.apache.juneau.rest.RestResponse#getNegotiatedOutputStream()}.
- <br>Note that you
should call {@link org.apache.juneau.rest.RestResponse#setContentType(String)}
to set
- the <l>Content-Type</l>
header if you use this object type.
- <li class='jc'>{@link
org.apache.juneau.rest.response.ReaderHandler} - Handles {@link java.io.Reader}
objects.
- <br>The contents are
simply piped to the output stream returned by
- {@link
org.apache.juneau.rest.RestResponse#getNegotiatedWriter()}.
- <br>Note that you
should call {@link org.apache.juneau.rest.RestResponse#setContentType(String)}
to set
- the <l>Content-Type</l>
header if you use this object type.
- <li class='jc'>{@link
org.apache.juneau.rest.response.RedirectHandler} - Handles {@link
org.apache.juneau.rest.Redirect} objects.
- <br>Represents an HTTP
redirect response.
- <li class='jc'>{@link
org.apache.juneau.rest.response.StreamableHandler} - Handles {@link
org.apache.juneau.Streamable} objects.
- <br>Interface that
identifies that an object can be serialized directly to an output stream.
- <li class='jc'>{@link
org.apache.juneau.rest.response.WritableHandler} - Handles {@link
org.apache.juneau.Writable} objects.
- <br>Interface that
identifies that an object can be serialized directly to a writer.
- <li class='jc'>{@link
org.apache.juneau.rest.response.ZipFileListResponseHandler} - Handles {@link
org.apache.juneau.utils.ZipFileList} objects.
- <br>Special interface
for sending zip files as responses.
+ <li class='jc'>{@link
org.apache.juneau.rest.response.DefaultHandler}
+ <li class='jc'>{@link
org.apache.juneau.rest.response.InputStreamHandler}
+ <li class='jc'>{@link
org.apache.juneau.rest.response.ReaderHandler}
+ <li class='jc'>{@link
org.apache.juneau.rest.response.RedirectHandler}
+ <li class='jc'>{@link
org.apache.juneau.rest.response.StreamableHandler}
+ <li class='jc'>{@link
org.apache.juneau.rest.response.WritableHandler}
+ <li class='jc'>{@link
org.apache.juneau.rest.response.ZipFileListResponseHandler}
</ul>
</ul>
+ <p>
+ REST Java methods can generate output
in any of the following ways:
+ </p>
+ <ul class='spaced-list'>
+ <li>
+ By returning a serializable
POJO, or any of the following:
+ <br>{@link java.io.Reader},
{@link java.io.InputStream}, {@link org.apache.juneau.Streamable},
+ {@link
org.apache.juneau.Writable}
+ <li>
+ By calling {@link
org.apache.juneau.rest.RestResponse#setOutput(Object)} with any of the types
above.
+ <li>
+ By accessing the {@link
java.io.Writer} directly by calling
+ {@link
org.apache.juneau.rest.RestResponse#getNegotiatedWriter()} and writing the
output yourself.
+ </ul>
+ <h6 class='figure'>Example:</h6>
+ <p class='bcode'>
+ <jc>// Equivalent method 1</jc>
+ <ja>@RestMethod</ja>(name=<jsf>GET</jsf>,
path=<js>"/example1/{personId}"</js>)
+ <jk>public</jk> Person doGet1(<ja>@Path</ja> UUID personId) {
+ Person p = getPersonById(personId);
+ <jk>return</jk> p;
+ }
+
+ <jc>// Equivalent method 2</jc>
+ <ja>@RestMethod</ja>(name=<jsf>GET</jsf>,
path=<js>"/example2/{personId}"</js>)
+ <jk>public void</jk> doGet2(RestResponse res, <ja>@Path</ja> UUID
personId) {
+ Person p = getPersonById(personId);
+ res.setOutput(p);
+ }
+
+ <jc>// (Sorta) Equivalent method 3</jc>
+ <jc>// (Ignores any converters or method-level properties)</jc>
+ <ja>@RestMethod</ja>(name=<jsf>GET</jsf>,
path=<js>"/example3/{personId}"</js>)
+ <jk>public void</jk> doGet3(RestRequest req, RestResponse res,
<ja>@Path</ja> UUID personId) {
+ Person p = getPersonById(personId);
+ String accept = req.getHeader(<js>"Accept"</js>,
<js>"text/json"</js>);
+ WriterSerializer s =
res.getSerializerGroup().getWriterSerializer(accept);
+ res.setContentType(s.getResponseContentType());
+ s.serialize(p, res.getNegotiatedWriter());
+ }
+ </p>
<h6 class='section'>See Also:</h6>
<ul>
<li class='jf'>{@link
org.apache.juneau.rest.RestContext#REST_responseHandlers} - For configuring
custom response handlers.
@@ -5263,7 +5365,7 @@
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
+ <a id="juneau-rest-server.RestMethodPath"></a>
<h4 class='topic' onclick='toggle(this)'>3.1.4.3 -
@RestMethod.path()</h4>
<div class='topic'>
<p>
@@ -5366,6 +5468,7 @@
</p>
<h6 class='section'>See Also:</h6>
<ul>
+ <li class='jf'>{@link
org.apache.juneau.rest.RestContext#REST_path}
<li class='ja'>{@link
org.apache.juneau.rest.annotation.Path}
<li class='ja'>{@link
org.apache.juneau.rest.annotation.PathRemainder}
<li class='jc'>{@link
org.apache.juneau.rest.RequestPathMatch}
@@ -5373,7 +5476,7 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
+ <a id="juneau-rest-server.RestMethodMatchers"></a>
<h4 class='topic' onclick='toggle(this)'>3.1.4.4 -
@RestMethod.matchers()</h4>
<div class='topic'>
<p>
@@ -5423,11 +5526,16 @@
Methods with matchers take
precedence over methods without.
<br>Otherwise, methods are
attempted in the order they appear in the class.
</ul>
+
+ <h6 class='section'>See Also:</h6>
+ <ul>
+ <li class='ja'>{@link
org.apache.juneau.rest.annotation.RestMethod#matchers}
+ </ul>
</div>
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
+ <a id="juneau-rest-server.Body"></a>
<h4 class='topic' onclick='toggle(this)'>3.1.5 - @Body</h4>
<div class='topic'>
<p>
@@ -5473,7 +5581,7 @@
</ul>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
+ <a id="juneau-rest-server.HandlingFormPosts"></a>
<h4 class='topic' onclick='toggle(this)'>3.1.5.1 -
Handling Form Posts</h4>
<div class='topic'>
<p>
@@ -5515,7 +5623,8 @@
</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.
+ <br>The latter approach only supports
URL-Encoding.
</p>
<ul class='doctree'>
<li class='warn'>
@@ -5528,12 +5637,12 @@
</ul>
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
+ <a
id="juneau-rest-server.HandlingMultiPartFormPosts"></a>
<h4 class='topic' onclick='toggle(this)'>3.1.5.2 -
Handling Multi-Part Form Posts</h4>
<div class='topic'>
<p>
The Juneau framework does not natively
support multipart form posts.
- However, it can be used in conjunction
with the Apache Commons File Upload library to do so.
+ <br>However, it can be done in
conjunction with the Apache Commons File Upload library.
</p>
<p>
The samples include a
<l>TempDirResource</l> class that uses the File Upload library to allow files
to
@@ -5577,7 +5686,7 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
+ <a id="juneau-rest-server.FormData"></a>
<h4 class='topic' onclick='toggle(this)'>3.1.6 - @FormData</h4>
<div class='topic'>
<p>
@@ -5624,12 +5733,12 @@
</ul>
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
+ <a id="juneau-rest-server.Query"></a>
<h4 class='topic' onclick='toggle(this)'>3.1.7 - @Query</h4>
<div class='topic'>
<p>
The {@link
org.apache.juneau.rest.annotation.Query @Query} annotation is used to retrieve
request URL query parameters.
- <br>Identical to {@link
org.apache.juneau.rest.annotation.FormData @FormData}, but only retrieves the
parameter from the URL string, not URL-encoded form posts.
+ <br>It's identical to {@link
org.apache.juneau.rest.annotation.FormData @FormData}, but only retrieves the
parameter from the URL string, not URL-encoded form posts.
</p>
<p>
Unlike {@link
org.apache.juneau.rest.annotation.FormData @FormData}, using this annotation
does not result in the servlet reading the contents of
@@ -5671,7 +5780,7 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
+ <a id="juneau-rest-server.Header"></a>
<h4 class='topic' onclick='toggle(this)'>3.1.8 - @Header</h4>
<div class='topic'>
<p>
@@ -5705,55 +5814,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.9 - Response
Content</h4>
- <div class='topic'>
- <p>
- REST Java methods can generate output in any of
the following ways:
- </p>
- <ul class='spaced-list'>
- <li>
- By returning a serializable POJO, or
any of the following:
- <br>{@link java.io.Reader}, {@link
java.io.InputStream}, {@link org.apache.juneau.Streamable},
- {@link org.apache.juneau.Writable}
- <li>
- By calling {@link
org.apache.juneau.rest.RestResponse#setOutput(Object)} with any of the types
above.
- <li>
- By accessing the {@link java.io.Writer}
directly by calling
- {@link
org.apache.juneau.rest.RestResponse#getNegotiatedWriter()} and writing the
output yourself.
- </ul>
- <h6 class='figure'>Example:</h6>
- <p class='bcode'>
- <jc>// Equivalent method 1</jc>
- <ja>@RestMethod</ja>(name=<jsf>GET</jsf>,
path=<js>"/example1/{personId}"</js>)
- <jk>public</jk> Person doGet1(<ja>@Path</ja> UUID personId) {
- Person p = getPersonById(personId);
- <jk>return</jk> p;
- }
-
- <jc>// Equivalent method 2</jc>
- <ja>@RestMethod</ja>(name=<jsf>GET</jsf>,
path=<js>"/example2/{personId}"</js>)
- <jk>public void</jk> doGet2(RestResponse res, <ja>@Path</ja> UUID
personId) {
- Person p = getPersonById(personId);
- res.setOutput(p);
- }
-
- <jc>// (Sorta) Equivalent method 3</jc>
- <jc>// (Ignores any converters or method-level properties)</jc>
- <ja>@RestMethod</ja>(name=<jsf>GET</jsf>,
path=<js>"/example3/{personId}"</js>)
- <jk>public void</jk> doGet3(RestRequest req, RestResponse res,
<ja>@Path</ja> UUID personId) {
- Person p = getPersonById(personId);
- String accept = req.getHeader(<js>"Accept"</js>,
<js>"text/json"</js>);
- WriterSerializer s =
res.getSerializerGroup().getWriterSerializer(accept);
- res.setContentType(s.getResponseContentType());
- s.serialize(p, res.getNegotiatedWriter());
- }
- </p>
- </div>
-
- <!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.10 -
Serializers</h4>
+ <a id="juneau-rest-server.Serializers"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.9 -
Serializers</h4>
<div class='topic'>
<p>
REST resources use the {@link
org.apache.juneau.serializer.Serializer} API for defining serializers for
@@ -5778,7 +5840,7 @@
- Programmatic.
</ul>
<p>
- The following are equivalent ways of defining
serializers used by a resource:
+ The following are all equivalent ways of
defining serializers used by a resource:
</p>
<p class='bcode'>
<jc>// Option #1 - Defined via annotation.</jc>
@@ -5812,12 +5874,6 @@
}
}
</p>
- <ul class='doctree'>
- <li class='info'>
- When debugging the output from REST
servlets, it's almost always easier to bypass the REST servlet and
- try to serialize the POJOs using the
serializers directly using the
- {@link
org.apache.juneau.serializer.WriterSerializer#toString(Object)} method.
- </ul>
<h6 class='section'>See Also:</h6>
<ul class='doctree'>
@@ -5826,8 +5882,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.11 - Parsers</h4>
+ <a id="juneau-rest-server.Parsers"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.10 - Parsers</h4>
<div class='topic'>
<p>
REST resources use the {@link
org.apache.juneau.parser.Parser} API for defining parsers for parsing request
@@ -5852,7 +5908,7 @@
- Programmatic.
</ul>
<p>
- The following are equivalent ways of defining
parsers used by a resource:
+ The following are all equivalent ways of
defining parsers used by a resource:
</p>
<p class='bcode'>
<jc>// Option #1 - Defined via annotation.</jc>
@@ -5885,7 +5941,6 @@
}
}
</p>
-
<h6 class='section'>See Also:</h6>
<ul class='doctree'>
<li class='jf'>{@link
org.apache.juneau.rest.RestContext#REST_parsers}
@@ -5893,11 +5948,11 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.12 -
Properties</h4>
+ <a id="juneau-rest-server.Properties"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.11 -
Properties</h4>
<div class='topic'>
<p>
- The Juneau serializers and parsers are
highly-configurable through properties.
+ As shown in previous sections, Juneau
serializers and parsers are highly-configurable through properties.
(See <a class='doclink'
href='#juneau-marshall.ConfigurableProperties'>Configurable Properties</a>)
</p>
<p>
@@ -5907,6 +5962,7 @@
<li class='ja'>{@link
org.apache.juneau.rest.annotation.RestResource#properties()}
<li class='jc'>{@link
org.apache.juneau.rest.RestContextBuilder} - Various methods on the context
builder.
</ul>
+ <h6 class='figure'>Example:</h6>
<p class='bcode'>
<jk>import static</jk> org.apache.juneau.BeanContext.*;
<jk>import static</jk> org.apache.juneau.serializer.Serializer.*;
@@ -5990,6 +6046,14 @@
and {@link
org.apache.juneau.parser.ParserSessionArgs} and can only be used on
configuration settings
marked as <code>Session-overridable:
<jk>true</jk></code>.
</p>
+ <p>
+ Properties are open-ended and can be used for
other purposes.
+ <br>They're made available through the
following methods:
+ </p>
+ <ul>
+ <li class='jm'>{@link
org.apache.juneau.rest.RestContext#getProperties()}
+ <li class='jm'>{@link
org.apache.juneau.rest.RestRequest#getProperties()}
+ </ul>
<h6 class='section'>See Also:</h6>
<ul>
<li class='ja'>{@link
org.apache.juneau.rest.annotation.RestResource#flags()} - Shorthand for boolean
properties.
@@ -5998,8 +6062,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.13 -
Transforms</h4>
+ <a id="juneau-rest-server.Transforms"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.12 -
Transforms</h4>
<div class='topic'>
<p>
The Juneau serializers and parsers can be
configured on how to handle POJOs through the use of Transforms.
@@ -6029,7 +6093,6 @@
beanFilters={
<jc>// Subclasses of MyInterface will be treated as
MyInterface objects.</jc>
<jc>// Bean properties not defined on that interface
will be ignored.</jc>
-
}
)
<jk>public</jk> MyRestServlet <jk>extends</jk> RestServletDefault {...}
@@ -6056,8 +6119,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.14 - Guards</h4>
+ <a id="juneau-rest-server.Guards"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.13 - Guards</h4>
<div class='topic'>
<p>
Guards are classes that control access to REST
classes and methods.
@@ -6068,7 +6131,6 @@
<ul>
<li class='ja'>{@link
org.apache.juneau.rest.annotation.RestResource#guards()}
<li class='ja'>{@link
org.apache.juneau.rest.annotation.RestMethod#guards()}
- <li class='jf'>{@link
org.apache.juneau.rest.RestContext#REST_guards}
<li class='jm'>{@link
org.apache.juneau.rest.RestContextBuilder#guards(Class...)}
</ul>
<p class='bcode'>
@@ -6134,11 +6196,11 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.15 -
Converters</h4>
+ <a id="juneau-rest-server.Converters"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.14 -
Converters</h4>
<div class='topic'>
<p>
- Converters can be thought of as a
"post-processor" for POJOs before they get passed to the serializers.
+ Converters can be thought of as
"post-processors" for POJOs before they get passed to the serializers.
</p>
<p>
Converters are associated with resource classes
and methods via the following:
@@ -6146,7 +6208,6 @@
<ul>
<li class='ja'>{@link
org.apache.juneau.rest.annotation.RestResource#converters()}
<li class='ja'>{@link
org.apache.juneau.rest.annotation.RestMethod#converters()}
- <li class='jf'>{@link
org.apache.juneau.rest.RestContext#REST_converters}
<li class='jm'>{@link
org.apache.juneau.rest.RestContextBuilder#converters(Class...)}
</ul>
<h6 class='figure'>Example:</h6>
@@ -6240,8 +6301,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.16 - Messages</h4>
+ <a id="juneau-rest-server.Messages"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.15 - Messages</h4>
<div class='topic'>
<p>
The {@link
org.apache.juneau.rest.annotation.RestResource#messages
@RestResource.messages()} annotation is used to associate a resource bundle
with a servlet class.
@@ -6290,8 +6351,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.17 - Encoders</h4>
+ <a id="juneau-rest-server.Encoders"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.16 - Encoders</h4>
<div class='topic'>
<p>
The {@link
org.apache.juneau.rest.annotation.RestResource#encoders
@RestResource.encoders()} annotation can
@@ -6328,8 +6389,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.18 - SVL
variables</h4>
+ <a id="juneau-rest-server.SvlVariables"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.17 - SVL
Variables</h4>
<div class='topic'>
<p>
In the previous examples, there were several
cases where embedded variables were contained within
@@ -6341,7 +6402,7 @@
)
</p>
<p>
- Variables are of the form <l>$X{key}</l>, where
<l>X</l> can consist of zero or more ASCII characters.
+ Variables take the form <l>$X{contents}</l>
where <l>X</l> can consist of zero or more ASCII characters and <l>contents</l>
can be virtually anything.
<br>This is called Simple Variable Language, or
SVL, and is defined here: <a class='doclink' href='#juneau-svl'>juneau-svl</a>.
</p>
<p>
@@ -6473,12 +6534,11 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.19 - Configuration
Files</h4>
+ <a id="juneau-rest-server.ConfigurationFiles"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.18 - Configuration
Files</h4>
<div class='topic'>
<p>
- The Juneau Configuration API is an entirely
separate topic from the REST support.
- <br>But the Server API provides methods for
associating configuration files with REST servlets so that
+ The Server API provides methods for associating
configuration files with REST servlets so that
configuration properties can be defined in
external files.
</p>
<p>
@@ -6640,8 +6700,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.20 - Static
files</h4>
+ <a id="juneau-rest-server.StaticFiles"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.19 - Static
files</h4>
<div class='topic'>
<p>
The {@link
org.apache.juneau.rest.annotation.RestResource#staticFiles
@RestResource.staticFiles()}
@@ -6692,8 +6752,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.21 - Client
Versioning</h4>
+ <a id="juneau-rest-server.ClientVersioning"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.20 - Client
Versioning</h4>
<div class='topic'>
<p>
Client version headers are used to support
backwards compatibility for breaking REST interface changes.
@@ -6739,8 +6799,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.22 - OPTIONS
pages</h4>
+ <a id="juneau-rest-server.OptionsPages"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.21 - OPTIONS
pages</h4>
<div class='topic'>
<p>
One of the most useful features of Juneau is
the ability to generate Swagger-based OPTIONS pages for self-documenting
designs
@@ -6771,10 +6831,6 @@
}
}
</p>
-
-
-
-
<p>
This page is constructed through reflection on
the servlet class and it's methods, combined with
information provided in the following locations:
@@ -7044,8 +7100,8 @@
</ul>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.22.1 -
Info Providers</h4>
+ <a id="juneau-rest-server.InfoProviders"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.21.1 -
Info Providers</h4>
<div class='topic'>
<p>
The {@link
org.apache.juneau.rest.RestInfoProvider} class is used to find the title
@@ -7104,8 +7160,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.23 - @HtmlDoc
annotation</h4>
+ <a id="juneau-rest-server.HtmlDocAnnotation"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.22 - @HtmlDoc</h4>
<div class='topic'>
<p>
The {@link
org.apache.juneau.rest.annotation.HtmlDoc @HtmlDoc} annotation is used to
customize the HTML
@@ -7223,8 +7279,8 @@
</ul>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.23.1 -
Widgets</h4>
+ <a id="juneau-rest-server.Widgets"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.22.1 -
Widgets</h4>
<div class='topic'>
<p>
The {@link
org.apache.juneau.rest.widget.Widget} class allows you to add arbitrary HTML,
CSS, and Javascript
@@ -7337,23 +7393,23 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.23.2 -
Customization</h4>
+ <a id="juneau-rest-server.UiCustomization"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.22.2 - UI
Customization</h4>
<div class='topic'>
TODO
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.23.3 -
Stylesheets</h4>
+ <a id="juneau-rest-server.Stylesheets"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.22.3 -
Stylesheets</h4>
<div class='topic'>
TODO
</div>
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.24 - Default
Headers</h4>
+ <a id="juneau-rest-server.DefaultHeaders"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.23 - Default
Headers</h4>
<div class='topic'>
<p>
The following annotations are provided for
specifying default header values for requests and responses:
@@ -7399,8 +7455,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.25 - Logging and
Error Handling</h4>
+ <a id="juneau-rest-server.LoggingAndErrorHandling"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.24 - Logging and
Error Handling</h4>
<div class='topic'>
<p>
The {@link
org.apache.juneau.rest.RestContext#REST_logger} property allows you to
configure
@@ -7462,8 +7518,9 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.26 - HTTP Status
Codes</h4>
+ <a id="juneau-rest-server.HttpStatusCodes"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.25 - HTTP Status
Codes</h4>
+ <div class='topic'>
<p>
By default, a 200 (OK) status is automatically
set as the HTTP status when a Java method executes
successfully.
@@ -7529,8 +7586,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.27 - Overloading
HTTP Methods</h4>
+ <a id="juneau-rest-server.OverloadingHttpMethods"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.26 - Overloading
HTTP Methods</h4>
<div class='topic'>
<p>
Through the use of the built-in <l>"method"</l>
GET parameter, you can implement requests beyond the basic
@@ -7558,8 +7615,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.28 - Built-in
Parameters</h4>
+ <a id="juneau-rest-server.BuiltInParameters"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.27 - Built-in
Parameters</h4>
<div class='topic'>
<p>
The following URL parameters have special
meaning and can be passed in through the URL of the request:
@@ -7621,9 +7678,10 @@
</tr>
</table>
</div>
+
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.29 - Custom
Serializers and Parsers</h4>
+ <a id="juneau-rest-server.CustomSerializersAndParsers"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.28 - Custom
Serializers and Parsers</h4>
<div class='topic'>
<p>
A very easy-to-use API is provided for defining
your own serializers and parsers at both the servlet and
@@ -7746,8 +7804,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.30 - Using with
OSGi</h4>
+ <a id="juneau-rest-server.UsingWithOsgi"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.29 - Using with
OSGi</h4>
<div class='topic'>
<p>
Since REST servlets are basically just
<l>HttpServlets</l>, incorporating them into an OSGi environment
@@ -7813,8 +7871,8 @@
</div>
<!--
=======================================================================================================
-->
- <a id="juneau-rest-server.Remoteable"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.31 - Remoteable
Proxies</h4>
+ <a id="juneau-rest-server.RemoteableProxies"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.30 - Remoteable
Proxies</h4>
<div class='topic'>
<p>
The Remoteable Service API allows for client
side code to use interface proxies for calling methods on POJOs on
@@ -8021,8 +8079,8 @@
</ul>
<!--
========================================================================================================
-->
- <a id="Client"></a>
- <h4 class='topic' onclick='toggle(this)'>2 - Client
Side</h4>
+ <a
id="juneau-rest-server.RemoteableProxiesClientSide"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.30.1 -
Remoteable Proxies - Client Side</h4>
<div class='topic'>
<p>
Remoteable interface proxies are
retrieved through the existing {@link org.apache.juneau.rest.client.RestClient}
@@ -8061,8 +8119,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="Server"></a>
- <h4 class='topic' onclick='toggle(this)'>3 - Server
Side</h4>
+ <a
id="juneau-rest-server.RemoteableProxiesServerSide"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.30.2 -
Remoteable Proxies - Server Side</h4>
<div class='topic'>
<p>
The server side is only slightly more
complex, but boasts useful debugging and discovery capabilities.
@@ -8210,8 +8268,9 @@
</div>
<!--
========================================================================================================
-->
+ <a
id="juneau-rest-server.RemoteableProxiesRemoteableAnnotation"></a>
<a id="RemoteableAnnotation"></a>
- <h4 class='topic' onclick='toggle(this)'>4 -
@Remoteable Annotation</h4>
+ <h4 class='topic' onclick='toggle(this)'>3.1.30.3 -
Remoteable Proxies - @Remoteable Annotation</h4>
<div class='topic'>
<p>
What if you want fine-tuned control
over which methods are exposed in an interface instead of just all public
@@ -8261,7 +8320,7 @@
<!--
=======================================================================================================
-->
<a id="juneau-rest-server.Injection"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.32 - Using with
Spring or other Injection frameworks</h4>
+ <h4 class='topic' onclick='toggle(this)'>3.1.31 - Using with
Spring or other Injection frameworks</h4>
<div class='topic'>
<p>
The Juneau REST server API is compatible with
dependency injection frameworks such as Spring.
@@ -8368,7 +8427,7 @@
<!--
=======================================================================================================
-->
<a id="juneau-rest-server.HTTP2"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.33 - Using HTTP/2
features</h4>
+ <h4 class='topic' onclick='toggle(this)'>3.1.32 - Using HTTP/2
features</h4>
<div class='topic'>
<p>
Juneau is built as a veneer on top of the
Servlet API, allowing you to use low-level Servlet APIs
@@ -8382,8 +8441,8 @@
</div>
<!--
========================================================================================================
-->
- <a id="juneau-rest-server.XXX"></a>
- <h4 class='topic' onclick='toggle(this)'>3.1.34 - Other
Notes</h4>
+ <a id="juneau-rest-server.OtherNotes"></a>
+ <h4 class='topic' onclick='toggle(this)'>3.1.33 - Other
Notes</h4>
<div class='topic'>
<ul class='spaced-list'>
<li>
--
To stop receiving notification emails like this one, please contact
[email protected].