juneau-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jamesbog...@apache.org
Subject [juneau] branch master updated: Javadoc updates.
Date Wed, 24 Jan 2018 20:12:27 GMT
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 <jamesbognar@apache.org>
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
jamesbognar@apache.org.

Mime
View raw message