Simplified syntax for HtmlDoc.links() and other annotations.

Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/ffda0552
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/ffda0552
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/ffda0552

Branch: refs/heads/master
Commit: ffda0552d3104108305b52bda21e3a9e7200ca0b
Parents: fac3eb9
Author: JamesBognar <[email protected]>
Authored: Sun Jul 9 20:07:18 2017 -0400
Committer: JamesBognar <[email protected]>
Committed: Sun Jul 9 20:07:18 2017 -0400

----------------------------------------------------------------------
 .../main/java/org/apache/juneau/ObjectMap.java  |  10 +-
 .../apache/juneau/dto/jsonschema/package.html   |   4 +-
 .../juneau/html/HtmlDocSerializerContext.java   |  68 ++++++----
 .../juneau/html/HtmlDocSerializerSession.java   |   9 +-
 .../juneau/html/HtmlDocTemplateBasic.java       |  94 +++++++-------
 .../org/apache/juneau/html/HtmlSerializer.java  |  10 +-
 .../juneau/serializer/SerializerWriter.java     |  15 ++-
 .../apache/juneau/soap/SoapXmlSerializer.java   |   1 +
 juneau-core/src/main/javadoc/overview.html      | 125 ++++++++++++++++---
 .../juneau/examples/rest/AtomFeedResource.java  |   8 +-
 .../examples/rest/CodeFormatterResource.java    |  17 ++-
 .../juneau/examples/rest/DirectoryResource.java |   8 +-
 .../examples/rest/DockerRegistryResource.java   |  17 ++-
 .../examples/rest/HelloWorldResource.java       |  17 ++-
 .../examples/rest/JsonSchemaResource.java       |  17 ++-
 .../examples/rest/MethodExampleResource.java    |  17 ++-
 .../juneau/examples/rest/PetStoreResource.java  |  39 +++---
 .../juneau/examples/rest/PhotosResource.java    |  17 ++-
 .../examples/rest/RequestEchoResource.java      |  21 ++--
 .../juneau/examples/rest/RootResources.java     |  31 ++---
 .../examples/rest/SampleRemoteableServlet.java  |  21 ++--
 .../juneau/examples/rest/SqlQueryResource.java  |  20 ++-
 .../examples/rest/SystemPropertiesResource.java |  39 +++---
 .../juneau/examples/rest/TempDirResource.java   |  20 ++-
 .../examples/rest/TumblrParserResource.java     |  17 ++-
 .../examples/rest/UrlEncodedFormResource.java   |  45 ++++---
 .../rest/addressbook/AddressBookResource.java   |  47 +++++--
 .../apache/juneau/examples/rest/PetStore.json   |  10 +-
 .../apache/juneau/microservice/Resource.java    |   5 +-
 .../juneau/microservice/ResourceGroup.java      |   5 +-
 .../juneau/microservice/ResourceJena.java       |   5 +-
 .../juneau/microservice/ResourceJenaGroup.java  |   5 +-
 .../microservice/resources/ConfigResource.java  |   6 +-
 .../resources/DirectoryResource.java            |  10 +-
 .../java/org/apache/juneau/rest/CallMethod.java |  42 ++++---
 .../java/org/apache/juneau/rest/RestConfig.java |  35 +++---
 .../org/apache/juneau/rest/RestContext.java     |  10 +-
 .../org/apache/juneau/rest/RestRequest.java     |   8 +-
 .../org/apache/juneau/rest/RestResponse.java    |   5 +-
 .../apache/juneau/rest/RestServletDefault.java  |   5 +-
 .../apache/juneau/rest/annotation/HtmlDoc.java  |  77 +++++++++---
 .../juneau/rest/annotation/RestResource.java    |  31 +++--
 .../rest/jena/RestServletJenaDefault.java       |   5 +-
 .../java/org/apache/juneau/rest/package.html    |  27 +++-
 .../juneau/rest/widget/ContentTypeMenuItem.java |   9 +-
 .../juneau/rest/widget/QueryMenuItem.java       |  11 +-
 .../juneau/rest/widget/StyleMenuItem.java       |   9 +-
 .../org/apache/juneau/rest/widget/Widget.java   |   8 +-
 .../org/apache/juneau/rest/styles/devops.css    |  10 +-
 .../org/apache/juneau/rest/styles/light.css     |  22 ++--
 .../juneau/rest/widget/MenuItemWidget.css       |   2 +-
 .../apache/juneau/rest/widget/MenuItemWidget.js |   3 +-
 .../apache/juneau/rest/widget/QueryMenuItem.css |  36 +++---
 .../juneau/rest/widget/QueryMenuItem.html       |   3 +-
 54 files changed, 771 insertions(+), 387 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java 
b/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
index 5897e4c..dad67b0 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
@@ -654,9 +654,15 @@ public class ObjectMap extends 
LinkedHashMap<String,Object> {
                Object s = get(Object.class, key);
                if (s == null)
                        return def;
+               String[] r = null;
                if (s instanceof Collection)
-                       return ArrayUtils.toStringArray((Collection<?>)s);
-               String[] r = split(StringUtils.toString(s));
+                       r = ArrayUtils.toStringArray((Collection<?>)s);
+               else if (s instanceof String[])
+                       r = (String[])s;
+               else if (s instanceof Object[])
+                       r = 
ArrayUtils.toStringArray(Arrays.asList((Object[])s));
+               else
+                       r = split(StringUtils.toString(s));
                return (r.length == 0 ? def : r);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/package.html
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/package.html 
b/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/package.html
index 464b388..a70f4ff 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/package.html
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/package.html
@@ -423,7 +423,9 @@
                messages=<js>"nls/JsonSchemaResource"</js>,
                title=<js>"Sample JSON-Schema document"</js>,
                htmldoc=<ja>@HtmlDoc</ja>(
-                       links=<js>"{options:'?method=OPTIONS'}"</js>
+                       links={
+                               <js>"options: ?method=OPTIONS"</js>
+                       }
                )
        )
        <jk>public class</jk> JsonSchemaResource <jk>extends</jk> 
RestServletJenaDefault {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java
 
b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java
index 0fba6e3..daa225a 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.html;
 
-import java.util.*;
-
 import org.apache.juneau.*;
 
 /**
@@ -44,7 +42,10 @@ import org.apache.juneau.*;
  *             htmldoc=<ja>@HtmlDoc</ja>(
  *                     title=<js>"$L{title}"</js>,
  *                     description=<js>"$L{description}"</js>,
- *                     links=<js>"{options:'?method=OPTIONS',doc:'doc'}"</js>
+ *                     links={
+ *                             <js>"options: ?method=OPTIONS"</js>,
+ *                             <js>"doc: doc"</js>
+ *                     }
  *             )
  *     )
  * </p>
@@ -235,7 +236,9 @@ public final class HtmlDocSerializerContext extends 
HtmlSerializerContext {
         * <p class='bcode'>
         *      <ja>@RestResource</ja>(
         *              htmldoc=<ja>@HtmlDoc</ja>(
-        *                      nav=<js>"&lt;p 
class='special-navigation'&gt;This is my special navigation 
content&lt;/p&gt;"</js>
+        *                      header={
+        *                              <js>"&lt;h1&gt;My own 
header&lt;/h1&gt;"</js>
+        *                      }
         *              )
         *      )
         * </p>
@@ -253,9 +256,9 @@ public final class HtmlDocSerializerContext extends 
HtmlSerializerContext {
         * <b>Configuration property:</b>  Page links.
         *
         * <ul>
-        *      <li><b>Name:</b> <js>"HtmlDocSerializer.links.map"</js>
-        *      <li><b>Data type:</b> <code>Map&lt;String,String&gt;</code>
-        *      <li><b>Default:</b> empty map
+        *      <li><b>Name:</b> <js>"HtmlDocSerializer.links.list"</js>
+        *      <li><b>Data type:</b> <code>String[]</code>
+        *      <li><b>Default:</b> empty array
         *      <li><b>Session-overridable:</b> <jk>true</jk>
         * </ul>
         *
@@ -266,7 +269,12 @@ public final class HtmlDocSerializerContext extends 
HtmlSerializerContext {
         * This can be used to provide convenient hyperlinks when viewing the 
REST interface from a browser.
         *
         * <p>
-        * The value is a JSON object string where the keys are anchor text and 
the values are URLs.
+        * The value is an array of strings with two possible values:
+        * <ul>
+        *      <li>A key-value pair representing a hyperlink label and href:
+        *              <br><js>"google: http://google.com";</js>
+        *      <li>Arbitrary HTML.
+        * </ul>
         *
         * <p>
         * Relative URLs are considered relative to the servlet path.
@@ -283,7 +291,7 @@ public final class HtmlDocSerializerContext extends 
HtmlSerializerContext {
         *      <ja>@RestResource</ja>(
         *              properties={
         *                      
<ja>@Property</ja>(name=HtmlDocSerializerContext.<jsf>HTMLDOC_links</jsf>,
-        *                              
value=<js>"{options:'?method=OPTIONS',doc:'doc'}"</js>)
+        *                              value=<js>"['options: ?method=OPTIONS', 
'doc: doc']"</js>)
         *              }
         *      )
         *      <jk>public class</jk> AddressBookResource <jk>extends</jk> 
RestServletJenaDefault {
@@ -298,21 +306,21 @@ public final class HtmlDocSerializerContext extends 
HtmlSerializerContext {
         * <p class='bcode'>
         *      <ja>@RestResource</ja>(
         *              htmldoc=@HtmlDoc(
-        *                      
links=<js>"{options:'?method=OPTIONS',doc:'doc'}"</js>
+        *                      links={
+        *                              <js>"options: ?method=OPTIONS"</js>,
+        *                              <js>"doc: doc"</js>
+        *                      }
         *              )
         *      )
         *      <jk>public class</jk> AddressBookResource <jk>extends</jk> 
RestServletJenaDefault {
         * </p>
-        *
-        * <p>
-        * Values that start with <js>'&lt;'</js> are assumed to be HTML and 
rendered as-is.
         */
-       public static final String HTMLDOC_links = 
"HtmlDocSerializer.links.map";
+       public static final String HTMLDOC_links = 
"HtmlDocSerializer.links.list";
 
        /**
         * <b>Configuration property:</b>  Add to the {@link #HTMLDOC_links} 
property.
         */
-       public static final String HTMLDOC_links_put = 
"HtmlDocSerializer.links.map.put";
+       public static final String HTMLDOC_links_add = 
"HtmlDocSerializer.links.list.add";
 
        /**
         * <b>Configuration property:</b>  Nav section contents.
@@ -332,7 +340,9 @@ public final class HtmlDocSerializerContext extends 
HtmlSerializerContext {
         * <p class='bcode'>
         *      <ja>@RestResource</ja>(
         *              htmldoc=<ja>@HtmlDoc</ja>(
-        *                      nav=<js>"&lt;p 
class='special-navigation'&gt;This is my special navigation 
content&lt;/p&gt;"</js>
+        *                      nav={
+        *                              <js>"&lt;p 
class='special-navigation'&gt;This is my special navigation 
content&lt;/p&gt;"</js>
+        *                      }
         *              )
         *      )
         * </p>
@@ -367,7 +377,13 @@ public final class HtmlDocSerializerContext extends 
HtmlSerializerContext {
         * <p class='bcode'>
         *      <ja>@RestResource</ja>(
         *              htmldoc=<ja>@HtmlDoc</ja>(
-        *                      aside=<js>"&lt;ul&gt;&lt;li&gt;Item 
1&lt;li&gt;Item 2&lt;li&gt;Item 3&lt;/ul&gt;"</js>
+        *                      aside={
+        *                              <js>"&lt;ul&gt;"</js>,
+        *                              <js>"   &lt;li&gt;Item 1"</js>,
+        *                              <js>"   &lt;li&gt;Item 2"</js>,
+        *                              <js>"   &lt;li&gt;Item 3"</js>,
+        *                              <js>"&lt;/ul&gt;"</js>
+        *                      }
         *              )
         *      )
         * </p>
@@ -397,7 +413,9 @@ public final class HtmlDocSerializerContext extends 
HtmlSerializerContext {
         * <p class='bcode'>
         *      <ja>@RestResource</ja>(
         *              htmldoc=<ja>@HtmlDoc</ja>(
-        *                      footer=<js>"&lt;b&gt;This interface is 
great!&lt;/b&gt;"</js>
+        *                      footer={
+        *                              <js>"&lt;b&gt;This interface is 
great!&lt;/b&gt;"</js>
+        *                      }
         *              )
         *      )
         * </p>
@@ -503,7 +521,10 @@ public final class HtmlDocSerializerContext extends 
HtmlSerializerContext {
         * <p class='bcode'>
         *      <ja>@RestResource</ja>(
         *              htmldoc=@HtmlDoc(
-        *                      style=<js>"h3 { color: red; }\nh5 { 
font-weight: bold; }"</js>
+        *                      style={
+        *                              <js>"h3 { color: red; }"</js>,
+        *                              <js>"h5 { font-weight: bold; }"</js>
+        *                      }
         *              )
         *      )
         * </p>
@@ -543,7 +564,9 @@ public final class HtmlDocSerializerContext extends 
HtmlSerializerContext {
         * <p class='bcode'>
         *      <ja>@RestResource</ja>(
         *              htmldoc=@HtmlDoc(
-        *                      script=<js>"alert('hello!');"</js>
+        *                      script={
+        *                              <js>"alert('hello!');"</js>
+        *                      }
         *              )
         *      )
         * </p>
@@ -584,8 +607,7 @@ public final class HtmlDocSerializerContext extends 
HtmlSerializerContext {
        public static final String HTMLDOC_template = 
"HtmlDocSerializer.template";
 
 
-       final String[] style, stylesheet, script;
-       final Map<String,Object> links;
+       final String[] style, stylesheet, script, links;
        final String title, description, branding, header, nav, aside, footer, 
noResultsMessage;
        final boolean nowrap;
        final HtmlDocTemplate template;
@@ -611,7 +633,7 @@ public final class HtmlDocSerializerContext extends 
HtmlSerializerContext {
                aside = ps.getProperty(HTMLDOC_aside, String.class, null);
                footer = ps.getProperty(HTMLDOC_footer, String.class, null);
                nowrap = ps.getProperty(HTMLDOC_nowrap, boolean.class, false);
-               links = ps.getMap(HTMLDOC_links, String.class, Object.class, 
null);
+               links = ps.getProperty(HTMLDOC_links, String[].class, new 
String[0]);
                noResultsMessage = ps.getProperty(HTMLDOC_noResultsMessage, 
String.class, "<p>no results</p>");
                template = ps.getTypedProperty(HTMLDOC_template, 
HtmlDocTemplate.class, HtmlDocTemplateBasic.class);
        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
 
b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
index 66dbe25..a7f3050 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
@@ -35,8 +35,7 @@ import org.apache.juneau.serializer.*;
 public final class HtmlDocSerializerSession extends HtmlSerializerSession {
 
        private final String title, description, branding, header, nav, aside, 
footer, noResultsMessage;
-       private final String[] style, stylesheet, script;
-       private final Map<String,Object> links;
+       private final String[] style, stylesheet, script, links;
        private final boolean nowrap;
        private final HtmlDocTemplate template;
 
@@ -64,7 +63,6 @@ public final class HtmlDocSerializerSession extends 
HtmlSerializerSession {
         *      The URI context.
         *      Identifies the current request URI used for resolution of URIs 
to absolute or root-relative form.
         */
-       @SuppressWarnings({ "unchecked", "rawtypes" })
        protected HtmlDocSerializerSession(HtmlDocSerializerContext ctx, 
ObjectMap op, Object output, Method javaMethod,
                        Locale locale, TimeZone timeZone, MediaType mediaType, 
UriContext uriContext) {
                super(ctx, op, output, javaMethod, locale, timeZone, mediaType, 
uriContext);
@@ -91,8 +89,7 @@ public final class HtmlDocSerializerSession extends 
HtmlSerializerSession {
                        nav = op.getString(HTMLDOC_nav, ctx.nav);
                        aside = op.getString(HTMLDOC_aside, ctx.aside);
                        footer = op.getString(HTMLDOC_footer, ctx.footer);
-                       Map m = op.getMap(HTMLDOC_links, ctx.links);
-                       links = ObjectUtils.isEmpty(m) ? null : new 
LinkedHashMap(m);
+                       links = op.getStringArray(HTMLDOC_links, ctx.links);
                        style = op.getStringArray(HTMLDOC_style, ctx.style);
                        stylesheet = op.getStringArray(HTMLDOC_stylesheet, 
ctx.stylesheet);
                        script = op.getStringArray(HTMLDOC_script, ctx.script);
@@ -202,7 +199,7 @@ public final class HtmlDocSerializerSession extends 
HtmlSerializerSession {
         *              <jk>null</jk> if not specified.
         *              Never an empty map.
         */
-       public final Map<String,Object> getLinks() {
+       public final String[] getLinks() {
                return links;
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocTemplateBasic.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocTemplateBasic.java 
b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocTemplateBasic.java
index 616e5d8..b287458 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocTemplateBasic.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocTemplateBasic.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.html;
 
-import java.util.Map;
-
 import org.apache.juneau.internal.*;
 
 /**
@@ -27,14 +25,14 @@ public class HtmlDocTemplateBasic implements 
HtmlDocTemplate {
        @Override /* HtmlDocTemplate */
        public void head(HtmlDocSerializerSession session, HtmlWriter w, 
HtmlDocSerializer s, Object o) throws Exception {
                if (hasStyle(session)) {
-                       w.sTag(1, "style").nl(1);
+                       w.sTag(2, "style").nl(2);
                        style(session, w, s, o);
-                       w.ie(1).eTag("style").nl(1);
+                       w.ie(2).eTag("style").nl(2);
                }
                if (hasScript(session)) {
-                       w.sTag(1, "script").nl(1);
+                       w.sTag(2, "script").nl(2);
                        script(session, w, s, o);
-                       w.ie(1).eTag("script").nl(1);
+                       w.ie(2).eTag("script").nl(2);
                }
        }
 
@@ -44,14 +42,14 @@ public class HtmlDocTemplateBasic implements 
HtmlDocTemplate {
                String[] stylesheet = session.getStylesheet();
                if (! ArrayUtils.contains("NONE", stylesheet))
                        for (String ss : stylesheet)
-                               w.append(2, "@import 
").q().append(session.resolveUri(ss)).q().appendln("; ");
+                               w.append(3, "@import 
").q().append(session.resolveUri(ss)).q().appendln("; ");
 
                if (session.isNoWrap())
-                       w.appendln("div.data * {white-space:nowrap;} ");
+                       w.appendln(3, "div.data * {white-space:nowrap;} ");
 
                if (session.getStyle() != null)
                        for (String style : session.getStyle())
-                               w.append(style).appendln(" ");
+                               w.append(3, style).appendln(" ");
        }
 
        @Override /* HtmlDocTemplate */
@@ -59,42 +57,42 @@ public class HtmlDocTemplateBasic implements 
HtmlDocTemplate {
 
                if (session.getScript() != null)
                        for (String script : session.getScript())
-                               w.append(script);
+                               w.append(3, script);
        }
 
        @Override /* HtmlDocTemplate */
        public void body(HtmlDocSerializerSession session, HtmlWriter w, 
HtmlDocSerializer s, Object o) throws Exception {
 
                if (hasHeader(session)) {
-                       w.sTag(1, "header").nl(1);
+                       w.sTag(2, "header").nl(2);
                        header(session, w, s, o);
-                       w.ie(1).eTag("header").nl(1);
+                       w.ie(2).eTag("header").nl(2);
                }
 
                if (hasNav(session)) {
-                       w.sTag(1, "nav").nl(1);
+                       w.sTag(2, "nav").nl(2);
                        nav(session, w, s, o);
-                       w.ie(1).eTag("nav").nl(1);
+                       w.ie(2).eTag("nav").nl(2);
                }
 
-               w.sTag(1, "section").nl(1);
+               w.sTag(2, "section").nl(2);
 
-               w.sTag(2, "article").nl(2);
+               w.sTag(3, "article").nl(3);
                article(session, w, s, o);
-               w.ie(2).eTag("article").nl(2);
+               w.ie(3).eTag("article").nl(3);
 
                if (hasAside(session)) {
-                       w.sTag(2, "aside").nl(2);
+                       w.sTag(3, "aside").nl(3);
                        aside(session, w, s, o);
-                       w.ie(2).eTag("aside").nl(2);
+                       w.ie(3).eTag("aside").nl(3);
                }
 
-               w.ie(1).eTag("section").nl(1);
+               w.ie(2).eTag("section").nl(2);
 
                if (hasFooter(session)) {
-                       w.sTag(1, "footer").nl(1);
+                       w.sTag(2, "footer").nl(2);
                        footer(session, w, s, o);
-                       w.ie(1).eTag("footer").nl(1);
+                       w.ie(2).eTag("footer").nl(2);
                }
        }
 
@@ -104,7 +102,7 @@ public class HtmlDocTemplateBasic implements 
HtmlDocTemplate {
                String header = session.getHeader();
                if (header != null) {
                        if (exists(header))
-                               w.append(2, header).nl(2);
+                               w.append(3, header).nl(3);
                } else {
                        String title = session.getTitle();
                        String description = session.getDescription();
@@ -124,21 +122,28 @@ public class HtmlDocTemplateBasic implements 
HtmlDocTemplate {
                String nav = session.getNav();
                if (nav != null) {
                        if (exists(nav))
-                               w.append(2, nav).nl(2);
+                               w.append(3, nav).nl(3);
                } else {
-                       Map<String,Object> htmlLinks = session.getLinks();
-                       if (htmlLinks != null) {
-                               w.sTag("ol");
-                               for (Map.Entry<String,Object> e : 
htmlLinks.entrySet()) {
-                                       w.sTag("li");
-                                       String v = e.getValue().toString();
-                                       if (v.startsWith("<"))
-                                               w.append(v);
-                                       else
-                                               w.oTag("a").attr("href", 
session.resolveUri(v), true).cTag().text(e.getKey(), true).eTag("a");
-                                       w.eTag("li");
+                       String[] links = session.getLinks();
+                       if (links.length > 0) {
+                               w.sTag(3, "ol").nl(3);
+                               for (String l : links) {
+                                       w.sTag(4, "li");
+                                       if (l.matches("(?s)\\S+\\:.*")) {
+                                               int i = l.indexOf(':');
+                                               String key = l.substring(0, i);
+                                               String val = 
l.substring(i+1).trim();
+                                               if (val.startsWith("<"))
+                                                       w.nl(4).appendln(5, 
val);
+                                               else
+                                                       
w.oTag("a").attr("href", session.resolveUri(val), true).cTag().text(key, 
true).eTag("a");
+                                               w.eTag("li").nl(4);
+                                       } else {
+                                               w.nl(4).appendln(5, l);
+                                               w.eTag(4, "li").nl(4);
+                                       }
                                }
-                               w.eTag("ol");
+                               w.eTag(3, "ol").nl(3);
                        }
                }
        }
@@ -147,35 +152,36 @@ public class HtmlDocTemplateBasic implements 
HtmlDocTemplate {
        public void aside(HtmlDocSerializerSession session, HtmlWriter w, 
HtmlDocSerializer s, Object o) throws Exception {
                String aside = session.getAside();
                if (exists(aside))
-                       w.append(aside);
+                       w.append(4, aside);
        }
 
        @Override /* HtmlDocTemplate */
        public void article(HtmlDocSerializerSession session, HtmlWriter w, 
HtmlDocSerializer s, Object o) throws Exception {
                // To allow for page formatting using CSS, we encapsulate the 
data inside two div tags:
                // <div class='outerdata'><div class='data' 
id='data'>...</div></div>
-               w.oTag(3, "div").attr("class","outerdata").append('>').nl(3);
-               w.oTag(4, "div").attr("class","data").attr("id", 
"data").append('>').nl(4);
+               w.oTag(4, "div").attr("class","outerdata").append('>').nl(4);
+               w.oTag(5, "div").attr("class","data").attr("id", 
"data").append('>').nl(5);
 
                if (o == null) {
-                       w.append(5, "<null/>").nl(5);
+                       w.append(6, "<null/>").nl(6);
                } else if (ObjectUtils.isEmpty(o)){
                        String m = session.getNoResultsMessage();
                        if (exists(m))
-                               w.append(5, m).nl(5);
+                               w.append(6, m).nl(6);
                } else {
+                       session.indent = 6;
                        s.parentSerialize(session, o);
                }
 
+               w.ie(5).eTag("div").nl(5);
                w.ie(4).eTag("div").nl(4);
-               w.ie(4).eTag("div").nl(3);
        }
 
        @Override /* HtmlDocTemplate */
        public void footer(HtmlDocSerializerSession session, HtmlWriter w, 
HtmlDocSerializer s, Object o) throws Exception {
                String footer = session.getFooter();
                if (exists(footer))
-                       w.append(footer);
+                       w.append(3, footer).nl(3);
        }
 
        @Override /* HtmlDocTemplate */
@@ -195,7 +201,7 @@ public class HtmlDocTemplateBasic implements 
HtmlDocTemplate {
 
        @Override /* HtmlDocTemplate */
        public boolean hasNav(HtmlDocSerializerSession session) {
-               return exists(session.getNav()) || session.getLinks() != null;
+               return exists(session.getNav()) || session.getLinks().length > 
0;
        }
 
        @Override /* HtmlDocTemplate */

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java 
b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
index a6046bf..0bacd20 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
@@ -298,8 +298,12 @@ public class HtmlSerializer extends XmlSerializer {
 
                        if (render != null) {
                                Object o2 = render.getContent(session, o);
-                               if (o2 != o)
-                                       return serializeAnything(session, out, 
o2, null, typeName, 2, null, false);
+                               if (o2 != o) {
+                                       session.indent -= indent;
+                                       session.pop();
+                                       out.nl(session.indent);
+                                       return serializeAnything(session, out, 
o2, null, typeName, indent, null, false);
+                               }
                        }
 
                        if (html.isAsXml() || (pMeta != null && 
pMeta.getExtendedMeta(HtmlBeanPropertyMeta.class).isAsXml())) {
@@ -597,7 +601,7 @@ public class HtmlSerializer extends XmlSerializer {
                                                        out.attr("style", 
style);
                                                out.cTag();
                                                if (link != null)
-                                                       out.oTag(i+3, 
"a").attrUri("href", m2.resolveVars(link)).cTag();
+                                                       
out.oTag("a").attrUri("href", m2.resolveVars(link)).cTag();
                                                ContentResult cr = 
serializeAnything(session, out, value, pMeta.getClassMeta(), 
p.getKey().toString(), 2, pMeta, false);
                                                if (cr == CR_NORMAL)
                                                        out.i(i+2);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java 
b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
index ee4f882..41e76d7 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
@@ -14,6 +14,7 @@ package org.apache.juneau.serializer;
 
 import java.io.*;
 import java.net.*;
+import java.util.*;
 
 import org.apache.juneau.*;
 
@@ -160,8 +161,18 @@ public class SerializerWriter extends Writer {
         * @return This object (for method chaining).
         */
        private SerializerWriter append(int indent, boolean newline, String 
text) throws IOException {
-               i(indent);
-               out.write(text);
+               
+               // If text contains newlines, we break it up into lines and 
indent them separately.
+               if (text.indexOf('\n') != -1 && useWhitespace && indent <= 
maxIndent) {
+                       for (StringTokenizer st = new StringTokenizer(text, 
"\n"); st.hasMoreTokens();) {
+                               i(indent);
+                               out.write(st.nextToken());
+                               out.write("\n");
+                       }
+               } else {
+                       i(indent);
+                       out.write(text);
+               }
                if (newline)
                        nl(indent);
                return this;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java 
b/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
index aa5f6fa..14cb23b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
@@ -70,6 +70,7 @@ public final class SoapXmlSerializer extends XmlSerializer {
                        .attr("xmlns", "soap", 
s.getProperty(SOAPXML_SOAPAction, "http://www.w3.org/2003/05/soap-envelope";))
                        .appendln(">");
                w.sTag(1, "soap", "Body").nl(1);
+               s.indent += 2;
                super.doSerialize(s, o);
                w.ie(1).eTag("soap", "Body").nl(1);
                w.eTag("soap", "Envelope").nl(0);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/javadoc/overview.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/javadoc/overview.html 
b/juneau-core/src/main/javadoc/overview.html
index 4abc48a..5e65ea2 100644
--- a/juneau-core/src/main/javadoc/overview.html
+++ b/juneau-core/src/main/javadoc/overview.html
@@ -2478,7 +2478,10 @@
                // "request:/..." URIs are relative to the request URI.
                // "servlet:/..." URIs are relative to the servlet URI.</jc>
                htmldoc=<ja>@HtmlDoc</ja>(
-                       
links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+                       links={
+                               <js>"up: request:/.."</js>,
+                               <js>"options: servlet:/?method=OPTIONS"</js>
+                       }
                ),
                
                <jc>// Properties that get applied to all serializers and 
parsers.</jc>
@@ -3429,7 +3432,9 @@
                path=<js>"/"</js>,
                messages=<js>"nls/RootResources"</js>,
                htmldoc=<ja>@HtmlDoc</ja>(
-                       links=<js>"{options:'?method=OPTIONS'}"</js>
+                       links={
+                               <js>"options: ?method=OPTIONS"</js>
+                       }
                ),
                children={
                        HelloWorldResource.<jk>class</jk>, 
@@ -3535,7 +3540,10 @@
                messages=<js>"nls/HelloWorldResource"</js>, 
                path=<js>"/helloWorld"</js>, 
                htmldoc=<ja>@HtmlDoc</ja>(
-                       
links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+                       links={
+                               <js>"up: request:/.."</js>,
+                               <js>"options: servlet:/?method=OPTIONS"</js>
+                       }
                )
        ) 
        <jk>public class</jk> HelloWorldResource <jk>extends</jk> Resource { 
@@ -3625,7 +3633,10 @@
                path=<js>"/methodExample"</js>, 
                messages=<js>"nls/MethodExampleResource"</js>, 
                htmldoc=<ja>@HtmlDoc</ja>(
-                       
links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+                       links={
+                               <js>"up: request:/.."</js>,
+                               <js>"options: servlet:/?method=OPTIONS"</js>
+                       }
                )
        ) 
        <jk>public class</jk> MethodExampleResource <jk>extends</jk> Resource { 
@@ -3854,7 +3865,9 @@
                <p class='bcode'>
        <ja>@RestResource</ja>(
                htmldoc=<ja>@HtmlDoc</ja>(
-                       links=<js>"{options:'?method=OPTIONS'}"</js>
+                       links={
+                               <js>"options: servlet:/?method=OPTIONS"</js>
+                       }
                )
        )
                </p>
@@ -4140,7 +4153,10 @@
                path=<js>"/echo"</js>,
                messages=<js>"nls/RequestEchoResource"</js>,
                htmldoc=<ja>@HtmlDoc</ja>(
-                       
links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>,
+                       links={
+                               <js>"up: request:/.."</js>,
+                               <js>"options: servlet:/?method=OPTIONS"</js>
+                       }
                ),
                properties={
                        <ja>@Property</ja>(name=<jsf>SERIALIZER_maxDepth</jsf>, 
value=<js>"10"</js>),
@@ -4664,8 +4680,11 @@
                // "servlet:/..." URIs are relative to the servlet URI.
                // "$C{...}" variables are pulled from the config file.</jc>
                htmldoc=<ja>@HtmlDoc</ja>(
-                       links=<js>"{up:'request:/..', 
options:'servlet:/?method=OPTIONS', 
-                               
source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java'}"</js>
+                       links={
+                               <js>"up: request:/.."</js>,
+                               <js>"options: servlet:/?method=OPTIONS"</js>,
+                               <js>"source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java"</js>
+                       }
                ),
 
                <jc>// Properties that get applied to all serializers and 
parsers.</jc>
@@ -5387,7 +5406,10 @@
                description=<js>"Sample class showing how to use remoteable 
proxies. The list below are exposed services that 
                        can be retrieved using 
RestClient.getProxyInterface(Class)."</js>, 
                htmldoc=<ja>@HtmlDoc</ja>(
-                       
links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+                       links={
+                               <js>"up: request:/.."</js>,
+                               <js>"options: servlet:/?method=OPTIONS"</js>
+                       }
                ),
                properties={ 
                        <jc>// Allow us to use method=POST from a browser.</jc> 
@@ -5506,7 +5528,11 @@
                path=<js>"/tempDir"</js>, 
                messages=<js>"nls/TempDirResource"</js>, 
                htmldoc=<ja>@HtmlDoc</ja>(
-                       links=<js>"{up:'request:/..', 
options:'servlet:/?method=OPTIONS', upload:'servlet:/upload'}"</js>
+                       links={
+                               <js>"up: request:/.."</js>,
+                               <js>"options: servlet:/?method=OPTIONS"</js>,
+                               <js>"upload: servlet:/upload"</js>
+                       }
                ),
                properties={ 
                        
<ja>@Property</ja>(name=<js>"DirectoryResource.rootDir"</js>, 
value=<js>"$S{java.io.tmpdir}"</js>), 
@@ -5634,7 +5660,10 @@
                path=<js>"/atom"</js>, 
                messages=<js>"nls/AtomFeedResource"</js>, 
                htmldoc=<ja>@HtmlDoc</ja>(
-                       
links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+                       links={
+                               <js>"up: request:/.."</js>,
+                               <js>"options: servlet:/?method=OPTIONS"</js>
+                       }
                ),
                properties={ 
                        
<ja>@Property</ja>(name=<jsf>SERIALIZER_quoteChar</jsf>, value=<js>"'"</js>), 
@@ -5753,7 +5782,10 @@
                path=<js>"/docker"</js>, 
                title=<js>"Sample Docker resource"</js>, 
                htmldoc=<ja>@HtmlDoc</ja>(
-                       
links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js> 
+                       links={
+                               <js>"up: request:/.."</js>,
+                               <js>"options: servlet:/?method=OPTIONS"</js>
+                       }
                )
        ) 
        <jk>public class</jk> DockerRegistryResource <jk>extends</jk> Resource 
{ 
@@ -5843,7 +5875,10 @@
                title=<js>"Tumblr parser service"</js>, 
                description=<js>"Specify a URL to a Tumblr blog and parse the 
results."</js>, 
                htmldoc=<ja>@HtmlDoc</ja>(
-                       
links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js> 
+                       links={
+                               <js>"up: request:/.."</js>,
+                               <js>"options: servlet:/?method=OPTIONS"</js>
+                       }
                )
        ) 
        <jk>public class</jk> TumblrParserResource <jk>extends</jk> Resource { 
@@ -5929,7 +5964,9 @@
                title=<js>"Photo REST service"</js>,
                description=<js>"Use a tool like Poster to upload and retrieve 
jpeg and png images."</js>,
                htmldoc=<ja>@HtmlDoc</ja>(
-                       links=<js>"{options:'?method=OPTIONS'}"</js>
+                       links={
+                               <js>"options: servlet:/?method=OPTIONS"</js>
+                       }
                )
        )
        <jk>public class</jk> PhotosResource <jk>extends</jk> 
RestServletDefault {
@@ -6073,7 +6110,10 @@
                messages=<js>"nls/JsonSchemaResource"</js>, 
                title=<js>"Sample JSON-Schema document"</js>, 
                htmldoc=<ja>@HtmlDoc</ja>(
-                       
links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js> 
+                       links={
+                               <js>"up: request:/.."</js>,
+                               <js>"options: servlet:/?method=OPTIONS"</js>
+                       }
                )
        ) 
        <jk>public class</jk> JsonSchemaResource <jk>extends</jk> ResourceJena 
{ 
@@ -6161,7 +6201,10 @@
                title=<js>"SQL query service"</js>, 
                description=<js>"Executes queries against the local derby 
'$C{SqlQueryResource/connectionUrl}' database"</js>, 
                htmldoc=<ja>@HtmlDoc</ja>(
-                       
links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js> 
+                       links={
+                               <js>"up: request:/.."</js>,
+                               <js>"options: servlet:/?method=OPTIONS"</js>
+                       }
                )
        ) 
        <jk>public class</jk> SqlQueryResource <jk>extends</jk> Resource { 
@@ -6354,7 +6397,11 @@
                title=<js>"Configuration"</js>, 
                description=<js>"Contents of configuration file."</js>, 
                htmldoc=<ja>@HtmlDoc</ja>(
-                       links=<js>"{up:'request:/..', 
options:'servlet:/?method=OPTIONS', edit:'servlet:/edit'}"</js>
+                       links={
+                               <js>"up: request:/.."</js>,
+                               <js>"options: servlet:/?method=OPTIONS"</js>,
+                               <js>"edit: servlet:/edit"</js>
+                       }
                )
        ) 
        <jk>public class</jk> ConfigResource <jk>extends</jk> Resource { 
@@ -6881,6 +6928,46 @@
                                        <li>The nav links are now an ordered 
list of elements.
                                </ul>
                        <li>
+                               Modifications to the following 
<ja>@HtmlDoc</ja> annotations:
+                               <ul>
+                                       <li>{@link 
org.apache.juneau.rest.annotation.HtmlDoc#links() links()} - Now an array of 
strings instead of a JSON object.  Simplified syntax.
+                                               <br>For example:
+                                               <p class='bcode'>
+       <jc>// Old syntax</jc>
+       htmldoc=<ja>@HtmlDoc</ja>(
+               links=<js>"{"</js>
+                       + <js>"up:'request:/..',"</js>
+                       + <js>"options:'servlet:/?method=OPTIONS',"</js>
+                       + <js>"contentTypes:'$W{contentTypeMenuItem}',"</js>
+                       + <js>"styles:'$W{styleMenuItem}',"</js>
+                       + 
<js>"source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/PetStoreResource.java'"</js>
+               + <js>"}"</js>
+       )
+       
+       <jc>// New syntax</jc>
+       htmldoc=<ja>@HtmlDoc</ja>(
+               links={
+                       <js>"up: request:/.."</js>,
+                       <js>"options: servlet:/?method=OPTIONS"</js>,
+                       <js>"$W{contentTypeMenuItem}"</js>,
+                       <js>"$W{styleMenuItem}"</js>,
+                       <js>"source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/PetStoreResource.java"</js>
+               }
+       )
+                                               </p>
+                                               Previous syntax will still 
work, but you're encouraged to use the simplified syntax.
+                                       <li>Several annotations are now arrays 
of strings instead of simple strings.
+                                               Values are simply concatenated 
with newlines which makes multi-line values cleaner.
+                                               <ul>
+                                                       <li>{@link 
org.apache.juneau.rest.annotation.HtmlDoc#header() header()}
+                                                       <li>{@link 
org.apache.juneau.rest.annotation.HtmlDoc#nav() nav()}
+                                                       <li>{@link 
org.apache.juneau.rest.annotation.HtmlDoc#aside() aside()}
+                                                       <li>{@link 
org.apache.juneau.rest.annotation.HtmlDoc#footer() footer()}
+                                                       <li>{@link 
org.apache.juneau.rest.annotation.HtmlDoc#script() script()}
+                                                       <li>{@link 
org.apache.juneau.rest.annotation.HtmlDoc#style() style()}
+                                               </ul>
+                               </ul>
+                       <li>
                                Improvements made to the {@link 
org.apache.juneau.rest.widget.Widget} API.
                                <ul>
                                        <li>
@@ -7273,7 +7360,7 @@
                                        <li>{@link 
org.apache.juneau.rest.RestConfig#setHtmlDescription(String) 
setHtmlDescription(String)}
                                        <li>{@link 
org.apache.juneau.rest.RestConfig#setHtmlBranding(String) 
setHtmlBranding(String)}
                                        <li>{@link 
org.apache.juneau.rest.RestConfig#setHtmlHeader(String) setHtmlHeader(String)}
-                                       <li>{@link 
org.apache.juneau.rest.RestConfig#setHtmlLinks(String) setHtmlLinks(String)}
+                                       
<li><code><del>setHtmlLinks(String)</del></code>
                                        <li>{@link 
org.apache.juneau.rest.RestConfig#setHtmlNav(String) setHtmlNav(String)}
                                        <li>{@link 
org.apache.juneau.rest.RestConfig#setHtmlAside(String) setHtmlAside(String)}
                                        <li>{@link 
org.apache.juneau.rest.RestConfig#setHtmlFooter(String) setHtmlFooter(String)}
@@ -7292,7 +7379,7 @@
                                        <li>{@link 
org.apache.juneau.rest.RestResponse#setHtmlDescription(Object) 
setHtmlDescription(Object)}
                                        <li>{@link 
org.apache.juneau.rest.RestResponse#setHtmlBranding(Object) 
setHtmlBranding(Object)}
                                        <li>{@link 
org.apache.juneau.rest.RestResponse#setHtmlHeader(Object) setHtmlHeader(Object)}
-                                       <li>{@link 
org.apache.juneau.rest.RestResponse#setHtmlLinks(Object) setHtmlLinks(Object)}
+                                       
<li><code><del>setHtmlLinks(Object)</del></code>
                                        <li>{@link 
org.apache.juneau.rest.RestResponse#setHtmlNav(Object) setHtmlNav(Object)}
                                        <li>{@link 
org.apache.juneau.rest.RestResponse#setHtmlAside(Object) setHtmlAside(Object)}
                                        <li>{@link 
org.apache.juneau.rest.RestResponse#setHtmlFooter(Object) setHtmlFooter(Object)}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/AtomFeedResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/AtomFeedResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/AtomFeedResource.java
index ca25161..9033b3a 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/AtomFeedResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/AtomFeedResource.java
@@ -37,7 +37,13 @@ import org.apache.juneau.rest.widget.*;
                StyleMenuItem.class
        },
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/AtomFeedResource.java'}"
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "$W{contentTypeMenuItem}",
+                       "$W{styleMenuItem}",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/AtomFeedResource.java"
+               }
        ),
        properties={
                @Property(name=SERIALIZER_quoteChar, value="'"),

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/CodeFormatterResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/CodeFormatterResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/CodeFormatterResource.java
index a409c24..33e895e 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/CodeFormatterResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/CodeFormatterResource.java
@@ -29,12 +29,17 @@ import org.apache.juneau.rest.annotation.*;
        title="Code Formatter",
        description="Utility for generating HTML code-formatted source code",
        htmldoc=@HtmlDoc(
-               
links="{up:'servlet:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/CodeFormatterResource.java'}",
-               aside=""
-                       + "<div style='min-width:200px' class='text'>"
-                       + "     <p>Utility for adding code syntax tags to Java 
and XML/HTML code.</p>"
-                       + "     <p>It's by no means perfect, but provides a 
good starting point.</p>"
-                       + "</div>",
+               links={
+                       "up: servlet:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/CodeFormatterResource.java"
+               },
+               aside={
+                       "<div style='min-width:200px' class='text'>",
+                       "       <p>Utility for adding code syntax tags to Java 
and XML/HTML code.</p>",
+                       "       <p>It's by no means perfect, but provides a 
good starting point.</p>",
+                       "</div>"
+               },
                style="aside {display:table-caption;}"
        )
 )

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java
index 78123f9..779db36 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java
@@ -41,7 +41,13 @@ import org.apache.juneau.utils.*;
                StyleMenuItem.class
        },
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/DirectoryResource.java'}"
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "$W{contentTypeMenuItem}",
+                       "$W{styleMenuItem}",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/DirectoryResource.java"
+               }
        ),
        properties={
                @Property(name=HTML_uriAnchorText, value=PROPERTY_NAME),

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DockerRegistryResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DockerRegistryResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DockerRegistryResource.java
index aac1d8a..4f6e5b5 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DockerRegistryResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DockerRegistryResource.java
@@ -28,12 +28,17 @@ import org.apache.juneau.rest.labels.*;
        path="/docker",
        title="Sample Docker resource",
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/DockerRegistryResource.java'}",
-               aside=""
-                       + "<div style='min-width:200px' class='text'>"
-                       + "     <p>REST API for searching Docker 
registries.</p>"
-                       + "     <p>To use, you must first specify the Docker 
registry URL in the <code>[Docker]</code> section of the config file.</p>"
-                       + "</div>"
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/DockerRegistryResource.java"
+               },
+               aside={
+                       "<div style='min-width:200px' class='text'>",
+                       "       <p>REST API for searching Docker 
registries.</p>",
+                       "       <p>To use, you must first specify the Docker 
registry URL in the <code>[Docker]</code> section of the config file.</p>",
+                       "</div>"
+               }
        )
 )
 public class DockerRegistryResource extends Resource {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
index d062eda..38d7916 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
@@ -24,12 +24,17 @@ import org.apache.juneau.rest.annotation.*;
        description="An example of the simplest-possible resource",
        path="/helloWorld",
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/HelloWorldResource.java'}",
-               aside=""
-                       + "<div style='max-width:400px' class='text'>"
-                       + "     <p>This page shows a resource that simply 
response with a 'Hello world!' message</p>"
-                       + "     <p>The POJO serialized is a simple String.</p>"
-                       + "</div>"
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/HelloWorldResource.java"
+               },
+               aside={
+                       "<div style='max-width:400px' class='text'>",
+                       "       <p>This page shows a resource that simply 
response with a 'Hello world!' message</p>",
+                       "       <p>The POJO serialized is a simple String.</p>",
+                       "</div>"
+               }
        )
 )
 public class HelloWorldResource extends Resource {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/JsonSchemaResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/JsonSchemaResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/JsonSchemaResource.java
index 4120e22..6f628c4 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/JsonSchemaResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/JsonSchemaResource.java
@@ -30,11 +30,18 @@ import org.apache.juneau.rest.widget.*;
                StyleMenuItem.class
        },
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/JsonSchemaResource.java'}",
-               aside=""
-                       + "<div style='min-width:200px' class='text'>"
-                       + "     <p>Shows how to produce JSON-Schema documents 
in a variety of languages using the JSON-Schema DTOs.</p>"
-                       + "</div>"
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "$W{contentTypeMenuItem}",
+                       "$W{styleMenuItem}",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/JsonSchemaResource.java"
+               },
+               aside={
+                       "<div style='min-width:200px' class='text'>",
+                       "       <p>Shows how to produce JSON-Schema documents 
in a variety of languages using the JSON-Schema DTOs.</p>",
+                       "</div>"
+               }
        )
 )
 public class JsonSchemaResource extends ResourceJena {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java
index df23b15..0c714dd 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java
@@ -29,12 +29,17 @@ import org.apache.juneau.utils.*;
        path="/methodExample",
        messages="nls/MethodExampleResource",
        htmldoc=@HtmlDoc(
-               
links="{up:'servlet:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/MethodExampleResource.java'}",
-               aside=""
-                       + "<div style='max-width:400px' class='text'>"
-                       + "     <p>Shows the different methods for retrieving 
HTTP query/form-data parameters, headers, and path variables.</p>"
-                       + "     <p>Each method is functionally equivalent but 
demonstrate different ways to accomplish the same tasks.</p>"
-                       + "</div>"
+               links={
+                       "up: servlet:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/MethodExampleResource.java"
+               },
+               aside={
+                       "<div style='max-width:400px' class='text'>",
+                       "       <p>Shows the different methods for retrieving 
HTTP query/form-data parameters, headers, and path variables.</p>",
+                       "       <p>Each method is functionally equivalent but 
demonstrate different ways to accomplish the same tasks.</p>",
+                       "</div>"
+               }
        )
 )
 public class MethodExampleResource extends Resource {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PetStoreResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PetStoreResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PetStoreResource.java
index 26b2f03..1be06ba 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PetStoreResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PetStoreResource.java
@@ -40,14 +40,21 @@ import org.apache.juneau.transforms.*;
                StyleMenuItem.class
        },
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/PetStoreResource.java'}",
-               aside=""
-                       + "<div style='max-width:400px' class='text'>"
-                       + "     <p>This page shows a standard REST resource 
that renders bean summaries and details.</p>"
-                       + "     <p>It shows how different properties can be 
rendered on the same bean in different views.</p>"
-                       + "     <p>It also shows examples of HtmlRender classes 
and @BeanProperty(format) annotations.</p>"
-                       + "     <p>It also shows how the Queryable converter 
and query widget can be used to create searchable interfaces.</p>"
-                       + "</div>"
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "$W{contentTypeMenuItem}",
+                       "$W{styleMenuItem}",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/PetStoreResource.java"
+               },
+               aside={
+                       "<div style='max-width:400px' class='text'>",
+                       "       <p>This page shows a standard REST resource 
that renders bean summaries and details.</p>",
+                       "       <p>It shows how different properties can be 
rendered on the same bean in different views.</p>",
+                       "       <p>It also shows examples of HtmlRender classes 
and @BeanProperty(format) annotations.</p>",
+                       "       <p>It also shows how the Queryable converter 
and query widget can be used to create searchable interfaces.</p>",
+                       "</div>"
+               }
        )
 )
 public class PetStoreResource extends ResourceJena {
@@ -81,14 +88,14 @@ public class PetStoreResource extends ResourceJena {
                
                // Add our menu items in the nav links.
                htmldoc=@HtmlDoc(
-                       links="{"
-                               + "up:'request:/..',"
-                               + "options:'servlet:/?method=OPTIONS',"
-                               + "query:'$W{queryMenuItem}',"
-                               + "contentTypes:'$W{contentTypeMenuItem}',"
-                               + "styles:'$W{styleMenuItem}',"
-                               + 
"source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/PetStoreResource.java'"
-                       + "}"
+                       links={
+                               "up: request:/..",
+                               "options: servlet:/?method=OPTIONS",
+                               "$W{queryMenuItem}",
+                               "$W{contentTypeMenuItem}",
+                               "$W{styleMenuItem}",
+                               "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/PetStoreResource.java"
+                       }
                )
        )
        public Collection<Pet> getPets() {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PhotosResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PhotosResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PhotosResource.java
index b56f55b..4309d11 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PhotosResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PhotosResource.java
@@ -40,12 +40,17 @@ import org.apache.juneau.serializer.*;
        title="Photo REST service",
        description="Sample resource that allows images to be uploaded and 
retrieved.",
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/PhotosResource.java'}",
-               aside=""
-                       + "<div style='max-width:400px;min-width:200px' 
class='text'>"
-                       + "     <p>Shows an example of using custom serializers 
and parsers to create REST interfaces over binary resources.</p>"
-                       + "     <p>In this case, our resources are marshalled 
jpeg and png binary streams and are stored in an in-memory 'database' (also 
known as a <code>TreeMap</code>).</p>"
-                       + "</div>"
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/PhotosResource.java"
+               },
+               aside={
+                       "<div style='max-width:400px;min-width:200px' 
class='text'>",
+                       "       <p>Shows an example of using custom serializers 
and parsers to create REST interfaces over binary resources.</p>",
+                       "       <p>In this case, our resources are marshalled 
jpeg and png binary streams and are stored in an in-memory 'database' (also 
known as a <code>TreeMap</code>).</p>",
+                       "</div>"
+               }
        ),
        properties={
                // Make the anchor text on URLs be just the path relative to 
the servlet.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
index 21e6118..57a30f6 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
@@ -37,13 +37,20 @@ import org.apache.juneau.transforms.*;
                StyleMenuItem.class
        },
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/RequestEchoResource.java'}",
-               aside=""
-                       + "<div style='max-width:400px;min-width:200px' 
class='text'>"
-                       + "     <p>Shows how even arbitrary POJOs such as 
<code>HttpServletRequest</code> can be serialized by the framework.</p>"
-                       + "     <p>Also shows how to specify serializer 
properties, filters, and swaps at the servlet level to control how POJOs are 
serialized.</p>"
-                       + "     <p>Also provides an example of how to use the 
Traversable and Queryable APIs.</p>"
-                       + "</div>"
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "$W{contentTypeMenuItem}",
+                       "$W{styleMenuItem}",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/RequestEchoResource.java"
+               },
+               aside={
+                       "<div style='max-width:400px;min-width:200px' 
class='text'>",
+                       "       <p>Shows how even arbitrary POJOs such as 
<code>HttpServletRequest</code> can be serialized by the framework.</p>",
+                       "       <p>Also shows how to specify serializer 
properties, filters, and swaps at the servlet level to control how POJOs are 
serialized.</p>",
+                       "       <p>Also provides an example of how to use the 
Traversable and Queryable APIs.</p>",
+                       "</div>"
+               }
        ),
        properties={
                @Property(name=SERIALIZER_maxDepth, value="5"),

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java
index 135232f..4944856 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java
@@ -31,21 +31,22 @@ import org.apache.juneau.rest.widget.*;
                StyleMenuItem.class
        },
        htmldoc=@HtmlDoc(
-               links="{"
-                       + "options:'?method=OPTIONS',"
-                       + "contentTypes:'$W{contentTypeMenuItem}',"
-                       + "styles:'$W{styleMenuItem}',"
-                       + 
"source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/RootResources.java'"
-               + "}",
-               aside=""
-                       + "<div style='max-width:400px' class='text'>"
-                       + "     <p>This is an example of a 'router' page that 
serves as a jumping-off point to child resources.</p>"
-                       + "     <p>Resources can be nested arbitrarily deep 
through router pages.</p>"
-                       + "     <p>Note the <span class='link'>options</span> 
link provided that lets you see the generated swagger doc for this page.</p>"
-                       + "     <p>Also note the <span 
class='link'>sources</span> link on these pages to view the source code for the 
page.</p>"
-                       + "     <p>All content on pages in the UI are 
serialized POJOs.  In this case, it's a serialized array of beans with 2 
properties, 'name' and 'description'.</p>"
-                       + "     <p>Other features (such as this aside) are 
added through annotations.</p>"
-                       + "</div>",
+               links={
+                       "options: ?method=OPTIONS",
+                       "$W{contentTypeMenuItem}",
+                       "$W{styleMenuItem}",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/RootResources.java"
+               },
+               aside={
+                       "<div style='max-width:400px' class='text'>",
+                       "       <p>This is an example of a 'router' page that 
serves as a jumping-off point to child resources.</p>",
+                       "       <p>Resources can be nested arbitrarily deep 
through router pages.</p>",
+                       "       <p>Note the <span class='link'>options</span> 
link provided that lets you see the generated swagger doc for this page.</p>",
+                       "       <p>Also note the <span 
class='link'>sources</span> link on these pages to view the source code for the 
page.</p>",
+                       "       <p>All content on pages in the UI are 
serialized POJOs.  In this case, it's a serialized array of beans with 2 
properties, 'name' and 'description'.</p>",
+                       "       <p>Other features (such as this aside) are 
added through annotations.</p>",
+                       "</div>"
+               },
                footer="$W{poweredByApache}"
        ),
        children={

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SampleRemoteableServlet.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SampleRemoteableServlet.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SampleRemoteableServlet.java
index e973893..d7de0de 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SampleRemoteableServlet.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SampleRemoteableServlet.java
@@ -30,14 +30,19 @@ import org.apache.juneau.rest.remoteable.*;
        title="Remoteable Service Proxy API",
        description="Sample class showing how to use remoteable proxies.",
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/SampleRemoteableServlet.java'}",
-               aside=""
-                       + "<div style='max-width:400px;min-width:200px' 
class='text'>"
-                       + "     <p>Shows how to use the 
<code>RemoteableServlet</code> class to define RPC-style remoteable interfaces 
using REST as a protocol.</p>"
-                       + "     <p>Remoteable proxies are retrieved on the 
client side using <code>RestClient.getInterfaceProxy(Class)</code>.</p>"
-                       + "     <p>Methods are invoked using POSTs of 
serialized arrays of objects and the returned value is marshalled back as a 
response.</p>"
-                       + "     <p>GET requests (as shown here) show the 
available methods on the interface.</p>"
-                       + "</div>"
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/SampleRemoteableServlet.java"
+               },
+               aside={
+                       "<div style='max-width:400px;min-width:200px' 
class='text'>",
+                       "       <p>Shows how to use the 
<code>RemoteableServlet</code> class to define RPC-style remoteable interfaces 
using REST as a protocol.</p>",
+                       "       <p>Remoteable proxies are retrieved on the 
client side using <code>RestClient.getInterfaceProxy(Class)</code>.</p>",
+                       "       <p>Methods are invoked using POSTs of 
serialized arrays of objects and the returned value is marshalled back as a 
response.</p>",
+                       "       <p>GET requests (as shown here) show the 
available methods on the interface.</p>",
+                       "</div>"
+               }
        ),
        properties={
                // Allow us to use method=POST from a browser.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SqlQueryResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SqlQueryResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SqlQueryResource.java
index 9406e88..1b16716 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SqlQueryResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SqlQueryResource.java
@@ -26,6 +26,7 @@ import org.apache.juneau.microservice.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.annotation.Body;
+import org.apache.juneau.rest.widget.*;
 
 /**
  * Sample resource that shows how Juneau can serialize ResultSets.
@@ -35,13 +36,20 @@ import org.apache.juneau.rest.annotation.Body;
        messages="nls/SqlQueryResource",
        title="SQL query service",
        description="Executes queries against the local derby 
'$C{SqlQueryResource/connectionUrl}' database",
+       widgets={ StyleMenuItem.class },
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',options:'servlet:/..',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/SqlQueryResource.java'}",
-               aside=""
-                       + "<div style='min-width:200px' class='text'>"
-                       + "     <p>An example of a REST interface over a 
relational database.</p>"
-                       + "     <p><a class='link' href='?sql=select+*+from 
sys.systables'>try me</a></p>"
-                       + "</div>"
+               links={
+                       "up: request:/..",
+                       "options: servlet:/..",
+                       "$W{stylesMenuItem}",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/SqlQueryResource.java"
+               },
+               aside={
+                       "<div style='min-width:200px' class='text'>",
+                       "       <p>An example of a REST interface over a 
relational database.</p>",
+                       "       <p><a class='link' href='?sql=select+*+from 
sys.systables'>try me</a></p>",
+                       "</div>"
+               }
        )
 )
 public class SqlQueryResource extends Resource {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SystemPropertiesResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SystemPropertiesResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SystemPropertiesResource.java
index 1976de4..3414948 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SystemPropertiesResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SystemPropertiesResource.java
@@ -47,23 +47,27 @@ import org.apache.juneau.rest.widget.*;
        htmldoc=@HtmlDoc(
                
                // Custom navigation links.
-               links="{"
-                       + "up:'request:/..',"
-                       + "options:'servlet:/?method=OPTIONS',"
-                       + "form:'servlet:/formPage',"
-                       + "contentTypes:'$W{contentTypeMenuItem}',"
-                       + "styles:'$W{styleMenuItem}',"
-                       + 
"source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/SystemPropertiesResource.java'"
-                       +"}",
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "form: servlet:/formPage",
+                       "$W{contentTypeMenuItem}",
+                       "$W{styleMenuItem}",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/SystemPropertiesResource.java"
+               },
 
                // Custom page text in aside section.
-               aside=""
-                       + "<div style='max-width:800px' class='text'>"
-                       + "     <p>Shows standard GET/PUT/POST/DELETE 
operations and use of Swagger annotations.</p>"
-                       + "</div>",
+               aside={
+                       "<div style='max-width:800px' class='text'>",
+                       "       <p>Shows standard GET/PUT/POST/DELETE 
operations and use of Swagger annotations.</p>",
+                       "</div>"
+               },
                        
                // Custom CSS styles applied to HTML view.
-               style="aside {display:table-caption} aside p {margin: 0px 
20px;}"
+               style={
+                       "aside {display:table-caption} ",
+                       "aside p {margin: 0px 20px;}"
+               }
        ),
                
        // Properties that get applied to all serializers and parsers.
@@ -204,10 +208,11 @@ public class SystemPropertiesResource extends Resource {
                description="A form post page for setting a single system 
property value",
                guards=AdminGuard.class,
                htmldoc=@HtmlDoc(
-                       aside=""
-                               + "<div style='max-width:400px' class='text'>"
-                               + "     <p>Shows how HTML5 beans can be used to 
quickly create arbitrary HTML.</p>"
-                               + "</div>",
+                       aside={
+                               "<div style='max-width:400px' class='text'>",
+                               "       <p>Shows how HTML5 beans can be used to 
quickly create arbitrary HTML.</p>",
+                               "</div>"
+                       },
                        style="aside {display:table-cell;}"
                )
        )

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TempDirResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TempDirResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TempDirResource.java
index 04732de..8d62db0 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TempDirResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TempDirResource.java
@@ -36,12 +36,20 @@ import org.apache.juneau.utils.*;
                StyleMenuItem.class
        },
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',upload:'servlet:/upload',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/TempDirResource.java'}",
-               aside=""
-                       + "<div style='max-width:400px' class='text'>"
-                       + "     <p>Shows how to use the predefined 
DirectoryResource class.</p>"
-                       + "     <p>Also shows how to use HTML5 beans to create 
a form entry page.</p>"
-                       + "</div>"
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "upload: servlet:/upload",
+                       "$W{contentTypeMenuItem}",
+                       "$W{styleMenuItem}",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/TempDirResource.java"
+               },
+               aside={
+                       "<div style='max-width:400px' class='text'>",
+                       "       <p>Shows how to use the predefined 
DirectoryResource class.</p>",
+                       "       <p>Also shows how to use HTML5 beans to create 
a form entry page.</p>",
+                       "</div>"
+               }
        ),
        properties={
                @Property(name="rootDir", value="$S{java.io.tmpdir}"),

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TumblrParserResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TumblrParserResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TumblrParserResource.java
index ea84e95..20d4ac6 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TumblrParserResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TumblrParserResource.java
@@ -25,12 +25,17 @@ import org.apache.juneau.rest.client.*;
        title="Tumblr parser service",
        description="Specify a URL to a Tumblr blog and parse the results.",
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/TumblrParserResource.java'}",
-               aside=""
-                       + "<div style='min-width:200px' class='text'>"
-                       + "     <p>An example of a REST interface that 
retrieves data from another REST interface.</p>"
-                       + "     <p><a class='link' 
href='$U{servlet:/ibmblr}'>try me</a></p>"
-                       + "</div>"
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/TumblrParserResource.java"
+               },
+               aside={
+                       "<div style='min-width:200px' class='text'>",
+                       "       <p>An example of a REST interface that 
retrieves data from another REST interface.</p>",
+                       "       <p><a class='link' 
href='$U{servlet:/ibmblr}'>try me</a></p>",
+                       "</div>"
+               }
        )
 )
 public class TumblrParserResource extends Resource {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/UrlEncodedFormResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/UrlEncodedFormResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/UrlEncodedFormResource.java
index 4a1425e..331196b 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/UrlEncodedFormResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/UrlEncodedFormResource.java
@@ -22,6 +22,7 @@ import org.apache.juneau.microservice.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.annotation.Body;
+import org.apache.juneau.rest.widget.*;
 import org.apache.juneau.transforms.*;
 
 /**
@@ -30,32 +31,42 @@ import org.apache.juneau.transforms.*;
 @RestResource(
        path="/urlEncodedForm",
        messages="nls/UrlEncodedFormResource",
-       title="Tumblr parser service",
-       description="Specify a URL to a Tumblr blog and parse the results.",
+       title="URL-Encoded form example",
+       widgets={ StyleMenuItem.class },
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/UrlEncodedFormResource.java'}",
-               aside=""
-                       + "<div style='min-width:200px' class='text'>"
-                       + "     <p>Shows how to process a FORM POST body into a 
bean using the <code>@Body</code> annotation.</p>"
-                       + "     <p>Submitting the form post will simply echo 
the bean back on the response.</p>"
-                       + "</div>"
+               links={
+                       "up: request:/..",
+                       "$W{styleMenuItem}",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/UrlEncodedFormResource.java"
+               },
+               aside={
+                       "<div style='min-width:200px' class='text'>",
+                       "       <p>Shows how to process a FORM POST body into a 
bean using the <code>@Body</code> annotation.</p>",
+                       "       <p>Submitting the form post will simply echo 
the bean back on the response.</p>",
+                       "</div>"
+               }
        )
 )
 public class UrlEncodedFormResource extends Resource {
        private static final long serialVersionUID = 1L;
 
        /** GET request handler */
-       @RestMethod(name="GET", path="/")
+       @RestMethod(
+               name="GET", 
+               path="/",
+               htmldoc=@HtmlDoc(
+                       script={
+                               "// Load results from IFrame into this 
document.",
+                               "function loadResults(buff) {",
+                               "       var doc = buff.contentDocument || 
buff.contentWindow.document;",
+                               "       var buffBody = 
doc.getElementById('data');",
+                               "       
document.getElementById('results').innerHTML = buffBody.innerHTML;",
+                               "}"
+                       }
+               )
+       )
        public Div doGet(RestRequest req) {
                return div(
-                       script("text/javascript",
-                               "\n     // Load results from IFrame into this 
document."
-                               +"\n    function loadResults(buff) {"
-                               +"\n            var doc = buff.contentDocument 
|| buff.contentWindow.document;"
-                               +"\n            var buffBody = 
doc.getElementById('data');"
-                               +"\n            
document.getElementById('results').innerHTML = buffBody.innerHTML;"
-                               +"\n    }"
-                       ),
                        
form().id("form").action("servlet:/").method("POST").target("buff").children(
                                table(
                                        tr(

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java
 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java
index d65fe85..9c15644 100644
--- 
a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java
+++ 
b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java
@@ -56,17 +56,24 @@ import org.apache.juneau.utils.*;
        // "servlet:/..." URIs are relative to the servlet URI.
        // "$C{...}" variables are pulled from the config file.
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}'}",
-                       aside=""
-                               + "<div 
style='max-width:400px;min-width:200px'>"
-                               + "     <p>Proof-of-concept resource that shows 
off the capabilities of working with POJO resources.</p>"
-                               + "     <p>Provides examples of: </p>"
-                               + "             <ul>"
-                               + "                     <li>XML and RDF 
namespaces"
-                               + "                     <li>Swagger 
documentation"
-                               + "                     <li>Widgets"
-                               + "             </ul>"
-                               + "</div>",
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java",
+                       "$W{contentTypeMenuItem}",
+                       "$W{styleMenuItem}"
+               },
+               aside={
+                       "<div style='max-width:400px;min-width:200px'>",
+                       "       <p>Proof-of-concept resource that shows off the 
capabilities of working with POJO resources.</p>",
+                       "       <p>Provides examples of: </p>",
+                       "       <ul>",
+                       "               <li>XML and RDF namespaces",
+                       "               <li>Swagger documentation",
+                       "               <li>Widgets",
+                       "       </ul>",
+                       "</div>"
+               },
                footer="$W{poweredByJuneau}"
        ),
 
@@ -147,7 +154,14 @@ public class AddressBookResource extends ResourceJena {
        @RestMethod(name="GET", path="/people/*",
                
converters={Traversable.class,Queryable.class,Introspectable.class},
                htmldoc=@HtmlDoc(
-                       
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',query:'$W{queryMenuItem}',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java'}"
+                       links={
+                               "up: request:/..",
+                               "options: servlet:/?method=OPTIONS",
+                               "$W{queryMenuItem}",
+                               "$W{contentTypeMenuItem}",
+                               "$W{styleMenuItem}",
+                               "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java"
+                       }
                )
        )
        public AddressBook getAllPeople() throws Exception {
@@ -174,7 +188,14 @@ public class AddressBookResource extends ResourceJena {
        @RestMethod(name="GET", path="/addresses/*",
                converters={Traversable.class,Queryable.class},
                htmldoc=@HtmlDoc(
-                       
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',query:'$W{queryMenuItem}',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java'}"
+                       links={
+                               "up: request:/..",
+                               "options: servlet:/?method=OPTIONS",
+                               "$W{queryMenuItem}",
+                               "$W{contentTypeMenuItem}",
+                               "$W{styleMenuItem}",
+                               "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java"
+                       }
                )
        )
        public List<Address> getAllAddresses() throws Exception {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/resources/org/apache/juneau/examples/rest/PetStore.json
----------------------------------------------------------------------
diff --git 
a/juneau-examples-rest/src/main/resources/org/apache/juneau/examples/rest/PetStore.json
 
b/juneau-examples-rest/src/main/resources/org/apache/juneau/examples/rest/PetStore.json
index 09abfbd..fe7ba7a 100644
--- 
a/juneau-examples-rest/src/main/resources/org/apache/juneau/examples/rest/PetStore.json
+++ 
b/juneau-examples-rest/src/main/resources/org/apache/juneau/examples/rest/PetStore.json
@@ -11,7 +11,11 @@
 // * specific language governing permissions and limitations under the 
License.                                              *
 // 
***************************************************************************************************************************
 {
-       1: {kind:'CAT',name:'Mr. 
Frisky',price:39.99,breed:'Persian',getsAlongWith:['CAT','FISH','RABBIT'],birthDate:'04
 Jul 2012'},
-       2: 
{kind:'DOG',name:'Kibbles',price:99.99,breed:'Husky',getsAlongWith:['DOG','BIRD','FISH','MOUSE','RABBIT'],birthDate:'01
 Sep 2014'},
-       3: 
{kind:'RABBIT',name:'Hoppy',price:49.99,breed:'Angora',getsAlongWith:['DOG','BIRD','FISH','MOUSE'],birthDate:'16
 Apr 2017'}
+       101: {kind:'CAT',name:'Mr. 
Frisky',price:39.99,breed:'Persian',getsAlongWith:['CAT','FISH','RABBIT'],birthDate:'04
 Jul 2012'},
+       102: 
{kind:'DOG',name:'Kibbles',price:99.99,breed:'Husky',getsAlongWith:['DOG','BIRD','FISH','MOUSE','RABBIT'],birthDate:'01
 Sep 2014'},
+       103: 
{kind:'RABBIT',name:'Hoppy',price:49.99,breed:'Angora',getsAlongWith:['DOG','BIRD','FISH','MOUSE'],birthDate:'16
 Apr 2017'},
+       104: {kind:'RABBIT',name:'Hoppy 
2',price:49.99,breed:'Angora',getsAlongWith:['DOG','BIRD','FISH','MOUSE'],birthDate:'17
 Apr 2017'},
+       105: 
{kind:'FISH',name:'Gorton',price:1.99,breed:'Gold',getsAlongWith:['FISH'],birthDate:'20
 Jun 2017'},
+       106: 
{kind:'MOUSE',name:'Hackwrench',price:4.99,breed:'Gadget',getsAlongWith:['FISH','MOUSE'],birthDate:'20
 Jun 2017'},
+       107: {kind:'SNAKE',name:'Just 
Snake',price:9.99,breed:'Human',getsAlongWith:['SNAKE'],birthDate:'21 Jun 2017'}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-microservice/src/main/java/org/apache/juneau/microservice/Resource.java
----------------------------------------------------------------------
diff --git 
a/juneau-microservice/src/main/java/org/apache/juneau/microservice/Resource.java
 
b/juneau-microservice/src/main/java/org/apache/juneau/microservice/Resource.java
index 292eee8..26a524a 100755
--- 
a/juneau-microservice/src/main/java/org/apache/juneau/microservice/Resource.java
+++ 
b/juneau-microservice/src/main/java/org/apache/juneau/microservice/Resource.java
@@ -43,7 +43,10 @@ import org.apache.juneau.svl.vars.*;
 @SuppressWarnings("serial")
 @RestResource(
        htmldoc=@HtmlDoc(
-               links="{up:'request:/..',options:'servlet:/?method=OPTIONS'}",
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS"
+               },
                stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}"
        ),
        config="$S{juneau.configFile}"

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceGroup.java
----------------------------------------------------------------------
diff --git 
a/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceGroup.java
 
b/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceGroup.java
index 5681ec3..234e000 100755
--- 
a/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceGroup.java
+++ 
b/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceGroup.java
@@ -44,7 +44,10 @@ import org.apache.juneau.svl.vars.*;
 @SuppressWarnings("serial")
 @RestResource(
        htmldoc=@HtmlDoc(
-               links="{up:'request:/..',options:'servlet:/?method=OPTIONS'}",
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS"
+               },
                stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}"
        ),
        config="$S{juneau.configFile}"

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJena.java
----------------------------------------------------------------------
diff --git 
a/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJena.java
 
b/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJena.java
index 4a319f1..e297a2a 100755
--- 
a/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJena.java
+++ 
b/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJena.java
@@ -21,7 +21,10 @@ import org.apache.juneau.rest.jena.*;
 @SuppressWarnings("serial")
 @RestResource(
        htmldoc=@HtmlDoc(
-               links="{up:'request:/..',options:'servlet:/?method=OPTIONS'}",
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS"
+               },
                stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}"
        ),
        config="$S{juneau.configFile}"

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJenaGroup.java
----------------------------------------------------------------------
diff --git 
a/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJenaGroup.java
 
b/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJenaGroup.java
index 719a4cd..f697cbc 100644
--- 
a/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJenaGroup.java
+++ 
b/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJenaGroup.java
@@ -45,7 +45,10 @@ import org.apache.juneau.svl.vars.*;
 @SuppressWarnings("serial")
 @RestResource(
        htmldoc=@HtmlDoc(
-               links="{up:'request:/..',options:'servlet:/?method=OPTIONS'}",
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS"
+               },
                stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}"
        ),
        config="$S{juneau.configFile}"

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/ConfigResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/ConfigResource.java
 
b/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/ConfigResource.java
index fd3130e..9f0abb0 100755
--- 
a/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/ConfigResource.java
+++ 
b/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/ConfigResource.java
@@ -34,7 +34,11 @@ import org.apache.juneau.rest.annotation.Body;
        title="Configuration",
        description="Contents of configuration file.",
        htmldoc=@HtmlDoc(
-               
links="{up:'request:/..',options:'servlet:/?method=OPTIONS',edit:'servlet:/edit'}"
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS",
+                       "edit: servlet:/edit"
+               }
        )
 )
 public class ConfigResource extends Resource {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
 
b/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
index 5d818bc..ea3dce8 100755
--- 
a/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
+++ 
b/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
@@ -64,15 +64,15 @@ import org.apache.juneau.utils.*;
        description="Contents of $R{attribute.path}",
        messages="nls/DirectoryResource",
        htmldoc=@HtmlDoc(
-               links="{up:'request:/..',options:'servlet:/?method=OPTIONS'}"
+               links={
+                       "up: request:/..",
+                       "options: servlet:/?method=OPTIONS"
+               }
        ),
        properties={
                @Property(name=HTML_uriAnchorText, value=PROPERTY_NAME),
                @Property(name=REST_allowMethodParam, value="*"),
-               @Property(name="DirectoryResource.rootDir", value=""),
-               @Property(name="DirectoryResource.allowViews", value="false"),
-               @Property(name="DirectoryResource.allowDeletes", value="false"),
-               @Property(name="DirectoryResource.allowPuts", value="false")
+               @Property(name="DirectoryResource.rootDir", value="")
        }
 )
 public class DirectoryResource extends Resource {

Reply via email to