This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 8501bde  JUNEAU-102 Expanded REST annotations
8501bde is described below

commit 8501bdefcf9c7271b76956ea148b6c8dc577c7bc
Author: JamesBognar <[email protected]>
AuthorDate: Sun May 12 16:16:06 2019 -0400

    JUNEAU-102 Expanded REST annotations
---
 .../org/apache/juneau/html/HtmlDocSerializer.java  |   1 +
 .../juneau/html/HtmlDocSerializerSession.java      |   1 +
 .../juneau/examples/rest/HelloWorldResource.java   |  19 +--
 .../juneau/examples/rest/RequestEchoResource.java  |  63 +++++-----
 .../apache/juneau/examples/rest/RootResources.java |  45 +++----
 .../juneau/examples/rest/dto/AtomFeedResource.java |  29 ++---
 .../juneau/examples/rest/dto/DtoExamples.java      |  37 +++---
 .../examples/rest/dto/JsonSchemaResource.java      |  37 +++---
 .../rest/dto/PredefinedLabelsResource.java         |  27 ++--
 .../rest/petstore/rest/PetStoreResource.java       | 136 +++++++++++----------
 .../rest/petstore/rest/PhotosResource.java         |  36 +++---
 .../rest/petstore/rest/SqlQueryResource.java       |  51 ++++----
 .../java/org/apache/juneau/rest/RestContext.java   |   1 +
 .../java/org/apache/juneau/rest/RestRequest.java   |   3 +
 .../org/apache/juneau/rest/vars/WidgetVar.java     |  34 ++++--
 15 files changed, 277 insertions(+), 243 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
index 2072ba2..2cc93e0 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
@@ -856,6 +856,7 @@ public class HtmlDocSerializer extends 
HtmlStrippedDocSerializer {
                                .append("nowrap", nowrap)
                                .append("template", template)
                                .append("noResultsMessage", noResultsMessage)
+                               .append("widgets", widgets.keySet())
                        );
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
index f552e30..621a825 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
@@ -86,6 +86,7 @@ public class HtmlDocSerializerSession extends 
HtmlStrippedDocSerializerSession {
                                .append("script", script)
                                .append("style", style)
                                .append("stylesheet", stylesheet)
+                               .append("varResolver", getVarResolver())
                        );
        }
 
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
index fc424b1..ba1a71c 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
@@ -15,6 +15,7 @@ package org.apache.juneau.examples.rest;
 import static org.apache.juneau.http.HttpMethodName.*;
 
 import org.apache.juneau.dto.swagger.*;
+import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 
@@ -29,15 +30,15 @@ import org.apache.juneau.rest.annotation.*;
 @RestResource(
        title="Hello World",
        description="An example of the simplest-possible resource",
-       path="/helloWorld",
-       htmldoc=@HtmlDoc(
-               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>"
-               }
-       )
+       path="/helloWorld"
+)
+@HtmlDocConfig(
+       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 implements BasicRestConfig {
 
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
index 9f5f37f..23e6d71 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
@@ -17,6 +17,7 @@ import javax.servlet.http.*;
 
 import org.apache.juneau.jsonschema.annotation.ExternalDocs;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
@@ -36,35 +37,6 @@ import org.apache.juneau.transforms.*;
        path="/echo",
        title="Request echo service",
        description="Echos the current HttpServletRequest object back to the 
browser.",
-       htmldoc=@HtmlDoc(
-               widgets={
-                       ContentTypeMenuItem.class,
-                       ThemeMenuItem.class
-               },
-               navlinks={
-                       "up: request:/..",
-                       "options: servlet:/?method=OPTIONS",
-                       "$W{ContentTypeMenuItem}",
-                       "$W{ThemeMenuItem}",
-                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.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>"
-               },
-               nowrap="false"
-       ),
-       beanFilters={
-               // Interpret these as their parent classes, not subclasses
-               HttpServletRequest.class, HttpSession.class, 
ServletContext.class,
-       },
-       pojoSwaps={
-               // Add a special filter for Enumerations
-               EnumerationSwap.class
-       },
        swagger=@ResourceSwagger(
                contact=@Contact(name="Juneau 
Developer",email="[email protected]"),
                license=@License(name="Apache 
2.0",url="http://www.apache.org/licenses/LICENSE-2.0.html";),
@@ -73,9 +45,38 @@ import org.apache.juneau.transforms.*;
                externalDocs=@ExternalDocs(description="Apache 
Juneau",url="http://juneau.apache.org";)
        )
 )
+@HtmlDocConfig(
+       widgets={
+               ContentTypeMenuItem.class,
+               ThemeMenuItem.class
+       },
+       navlinks={
+               "up: request:/..",
+               "options: servlet:/?method=OPTIONS",
+               "$W{ContentTypeMenuItem}",
+               "$W{ThemeMenuItem}",
+               "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.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>"
+       },
+       nowrap="false"
+)
 @BeanConfig(
-       maxDepth="5", 
-       detectRecursions="true"
+       maxDepth="5",
+       detectRecursions="true",
+       beanFilters={
+               // Interpret these as their parent classes, not subclasses
+               HttpServletRequest.class, HttpSession.class, 
ServletContext.class,
+       },
+       pojoSwaps={
+               // Add a special filter for Enumerations
+               EnumerationSwap.class
+       }
 )
 public class RequestEchoResource extends BasicRest {
 
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java
index c6ccb34..a4f80b4 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java
@@ -14,6 +14,7 @@ package org.apache.juneau.examples.rest;
 
 import org.apache.juneau.examples.rest.dto.*;
 import org.apache.juneau.examples.rest.petstore.rest.*;
+import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.microservice.resources.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
@@ -32,28 +33,6 @@ import org.apache.juneau.serializer.annotation.*;
        path="/*",
        title="Root resources",
        description="Example of a router resource page.",
-       htmldoc=@HtmlDoc(
-               widgets={
-                       ContentTypeMenuItem.class,
-                       ThemeMenuItem.class
-               },
-               navlinks={
-                       "options: ?method=OPTIONS",
-                       "$W{ContentTypeMenuItem}",
-                       "$W{ThemeMenuItem}",
-                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.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>"
-               }
-       ),
        children={
                HelloWorldResource.class,
                PetStoreResource.class,
@@ -63,6 +42,28 @@ import org.apache.juneau.serializer.annotation.*;
                ShutdownResource.class
        }
 )
+@HtmlDocConfig(
+       widgets={
+               ContentTypeMenuItem.class,
+               ThemeMenuItem.class
+       },
+       navlinks={
+               "options: ?method=OPTIONS",
+               "$W{ContentTypeMenuItem}",
+               "$W{ThemeMenuItem}",
+               "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.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>"
+       }
+)
 @SerializerConfig(
        // For testing purposes, we want to use single quotes in all the 
serializers so it's easier to do simple
        // String comparisons.
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/AtomFeedResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/AtomFeedResource.java
index ab84319..fbc129f 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/AtomFeedResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/AtomFeedResource.java
@@ -20,6 +20,7 @@ import org.apache.juneau.jsonschema.annotation.ExternalDocs;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.dto.atom.*;
 import org.apache.juneau.encoders.*;
+import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.http.annotation.Body;
 import org.apache.juneau.jena.annotation.*;
@@ -40,19 +41,6 @@ import org.apache.juneau.serializer.annotation.*;
        path="/atom",
        title="Sample ATOM feed resource",
        description="Sample resource that shows how to render ATOM feeds",
-       htmldoc=@HtmlDoc(
-               widgets={
-                       ContentTypeMenuItem.class,
-                       ThemeMenuItem.class
-               },
-               navlinks={
-                       "up: request:/..",
-                       "options: servlet:/?method=OPTIONS",
-                       "$W{ContentTypeMenuItem}",
-                       "$W{ThemeMenuItem}",
-                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/dto/$R{servletClassSimple}.java"
-               }
-       ),
        encoders=GzipEncoder.class,
        swagger=@ResourceSwagger(
                contact=@Contact(name="Juneau 
Developer",email="[email protected]"),
@@ -62,11 +50,24 @@ import org.apache.juneau.serializer.annotation.*;
                externalDocs=@ExternalDocs(description="Apache 
Juneau",url="http://juneau.apache.org";)
        )
 )
+@HtmlDocConfig(
+       widgets={
+               ContentTypeMenuItem.class,
+               ThemeMenuItem.class
+       },
+       navlinks={
+               "up: request:/..",
+               "options: servlet:/?method=OPTIONS",
+               "$W{ContentTypeMenuItem}",
+               "$W{ThemeMenuItem}",
+               "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/dto/$R{servletClassSimple}.java"
+       }
+)
 @SerializerConfig(
        quoteChar="'"
 )
 @RdfConfig(
-       rdfxml_tab="5", 
+       rdfxml_tab="5",
        addRootProperty="true"
 )
 @BeanConfig(
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/DtoExamples.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/DtoExamples.java
index 5ea49c0..697d039 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/DtoExamples.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/DtoExamples.java
@@ -12,6 +12,7 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.examples.rest.dto;
 
+import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.widget.*;
@@ -29,30 +30,30 @@ import org.apache.juneau.serializer.annotation.*;
        path="/dto",
        title="DTO examples",
        description="Example serialization of predefined Data Transfer 
Objects.",
-       htmldoc=@HtmlDoc(
-               widgets={
-                       ContentTypeMenuItem.class,
-                       ThemeMenuItem.class
-               },
-               navlinks={
-                       "up: request:/..",
-                       "options: ?method=OPTIONS",
-                       "$W{ContentTypeMenuItem}",
-                       "$W{ThemeMenuItem}",
-                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/dto/$R{servletClassSimple}.java"
-               },
-               aside={
-                       "<div style='max-width:400px' class='text'>",
-                       "       <p>This is an example of a nested 'router' page 
that serves as a jumping-off point to other child resources.</p>",
-                       "</div>"
-               }
-       ),
        children={
                AtomFeedResource.class,
                JsonSchemaResource.class,
                PredefinedLabelsResource.class,
        }
 )
+@HtmlDocConfig(
+       widgets={
+               ContentTypeMenuItem.class,
+               ThemeMenuItem.class
+       },
+       navlinks={
+               "up: request:/..",
+               "options: ?method=OPTIONS",
+               "$W{ContentTypeMenuItem}",
+               "$W{ThemeMenuItem}",
+               "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/dto/$R{servletClassSimple}.java"
+       },
+       aside={
+               "<div style='max-width:400px' class='text'>",
+               "       <p>This is an example of a nested 'router' page that 
serves as a jumping-off point to other child resources.</p>",
+               "</div>"
+       }
+)
 @SerializerConfig(
        // For testing purposes, we want to use single quotes in all the 
serializers so it's easier to do simple
        // String comparisons.
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/JsonSchemaResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/JsonSchemaResource.java
index c3fb644..6d41be2 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/JsonSchemaResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/JsonSchemaResource.java
@@ -15,6 +15,7 @@ package org.apache.juneau.examples.rest.dto;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.jsonschema.annotation.ExternalDocs;
 import org.apache.juneau.dto.jsonschema.*;
+import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.http.annotation.Body;
 import org.apache.juneau.rest.*;
@@ -34,24 +35,6 @@ import org.apache.juneau.rest.widget.*;
        messages="nls/JsonSchemaResource",
        title="Sample JSON-Schema document",
        description="Sample resource that shows how to generate JSON-Schema 
documents",
-       htmldoc=@HtmlDoc(
-               widgets={
-                       ContentTypeMenuItem.class,
-                       ThemeMenuItem.class
-               },
-               navlinks={
-                       "up: request:/..",
-                       "options: servlet:/?method=OPTIONS",
-                       "$W{ContentTypeMenuItem}",
-                       "$W{ThemeMenuItem}",
-                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/dto/$R{servletClassSimple}.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>"
-               }
-       ),
        swagger=@ResourceSwagger(
                contact=@Contact(name="Juneau 
Developer",email="[email protected]"),
                license=@License(name="Apache 
2.0",url="http://www.apache.org/licenses/LICENSE-2.0.html";),
@@ -60,6 +43,24 @@ import org.apache.juneau.rest.widget.*;
                externalDocs=@ExternalDocs(description="Apache 
Juneau",url="http://juneau.apache.org";)
        )
 )
+@HtmlDocConfig(
+       widgets={
+               ContentTypeMenuItem.class,
+               ThemeMenuItem.class
+       },
+       navlinks={
+               "up: request:/..",
+               "options: servlet:/?method=OPTIONS",
+               "$W{ContentTypeMenuItem}",
+               "$W{ThemeMenuItem}",
+               "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/dto/$R{servletClassSimple}.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>"
+       }
+)
 @BeanConfig(
        examples="Schema: $F{JsonSchemaResource_example.json}"
 )
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/PredefinedLabelsResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/PredefinedLabelsResource.java
index f115a7e..44988ee 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/PredefinedLabelsResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/dto/PredefinedLabelsResource.java
@@ -15,6 +15,7 @@ package org.apache.juneau.examples.rest.dto;
 import org.apache.juneau.jsonschema.annotation.ExternalDocs;
 import org.apache.juneau.dto.*;
 import org.apache.juneau.examples.rest.petstore.dto.*;
+import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
@@ -33,19 +34,6 @@ import org.apache.juneau.rest.widget.*;
        path="/predefinedLabels",
        title="Predefined Label Beans",
        description="Shows examples of predefined label beans",
-       htmldoc=@HtmlDoc(
-               widgets={
-                       ContentTypeMenuItem.class,
-                       ThemeMenuItem.class
-               },
-               navlinks={
-                       "up: request:/..",
-                       "options: servlet:/?method=OPTIONS",
-                       "$W{ContentTypeMenuItem}",
-                       "$W{ThemeMenuItem}",
-                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/dto/$R{servletClassSimple}.java"
-               }
-       ),
        swagger=@ResourceSwagger(
                contact=@Contact(name="Juneau 
Developer",email="[email protected]"),
                license=@License(name="Apache 
2.0",url="http://www.apache.org/licenses/LICENSE-2.0.html";),
@@ -54,6 +42,19 @@ import org.apache.juneau.rest.widget.*;
                externalDocs=@ExternalDocs(description="Apache 
Juneau",url="http://juneau.apache.org";)
        )
 )
+@HtmlDocConfig(
+       widgets={
+               ContentTypeMenuItem.class,
+               ThemeMenuItem.class
+       },
+       navlinks={
+               "up: request:/..",
+               "options: servlet:/?method=OPTIONS",
+               "$W{ContentTypeMenuItem}",
+               "$W{ThemeMenuItem}",
+               "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/dto/$R{servletClassSimple}.java"
+       }
+)
 public class PredefinedLabelsResource extends BasicRestServlet {
        private static final long serialVersionUID = 1L;
 
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/rest/PetStoreResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/rest/PetStoreResource.java
index 2d57fc7..fb52b48 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/rest/PetStoreResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/rest/PetStoreResource.java
@@ -23,9 +23,11 @@ import java.util.Map;
 
 import org.apache.juneau.jsonschema.annotation.ExternalDocs;
 import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
 import org.apache.juneau.dto.html5.*;
 import org.apache.juneau.examples.rest.petstore.*;
 import org.apache.juneau.examples.rest.petstore.dto.*;
+import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.http.annotation.FormData;
 import org.apache.juneau.http.annotation.Path;
@@ -54,37 +56,6 @@ import org.apache.juneau.rest.converters.*;
                "This is a sample server Petstore server based on the Petstore 
sample at Swagger.io.",
                "You can find out more about Swagger at http://swagger.io.";,
        },
-       htmldoc=@HtmlDoc(
-               widgets={
-                       ContentTypeMenuItem.class,
-                       ThemeMenuItem.class,
-               },
-               navlinks={
-                       "up: request:/..",
-                       "options: servlet:/?method=OPTIONS",
-                       "init: servlet:/init",
-                       "$W{ContentTypeMenuItem}",
-                       "$W{ThemeMenuItem}",
-                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/petstore/$R{servletClassSimple}.java"
-               },
-               head={
-                       "<link rel='icon' href='$U{servlet:/htdocs/cat.png}'/>" 
 // Add a cat icon to the page.
-               },
-               header={
-                       "<h1>$R{resourceTitle}</h1>",
-                       "<h2>$R{methodSummary}</h2>",
-                       "$C{PetStore/headerImage}"
-               },
-               aside={
-                       "<div style='max-width:400px' class='text'>",
-                       "       <p>This page shows a standard nested REST 
resource.</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>"
-               },
-               stylesheet="servlet:/htdocs/themes/dark.css"  // Use dark theme 
by default.
-       ),
        properties= {
                // Resolve recursive references when showing schema info in the 
swagger.
                @Property(name=SWAGGERUI_resolveRefsMaxDepth, value="99")
@@ -135,6 +106,37 @@ import org.apache.juneau.rest.converters.*;
                PhotosResource.class
        }
 )
+@HtmlDocConfig(
+       widgets={
+               ContentTypeMenuItem.class,
+               ThemeMenuItem.class,
+       },
+       navlinks={
+               "up: request:/..",
+               "options: servlet:/?method=OPTIONS",
+               "init: servlet:/init",
+               "$W{ContentTypeMenuItem}",
+               "$W{ThemeMenuItem}",
+               "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/petstore/$R{servletClassSimple}.java"
+       },
+       head={
+               "<link rel='icon' href='$U{servlet:/htdocs/cat.png}'/>"  // Add 
a cat icon to the page.
+       },
+       header={
+               "<h1>$R{resourceTitle}</h1>",
+               "<h2>$R{methodSummary}</h2>",
+               "$C{PetStore/headerImage}"
+       },
+       aside={
+               "<div style='max-width:400px' class='text'>",
+               "       <p>This page shows a standard nested REST 
resource.</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>"
+       },
+       stylesheet="servlet:/htdocs/themes/dark.css"  // Use dark theme by 
default.
+)
 public class PetStoreResource extends BasicRestJena implements PetStore {
        private static final long serialVersionUID = 1L;
 
@@ -148,18 +150,18 @@ public class PetStoreResource extends BasicRestJena 
implements PetStore {
        @RestMethod(
                name=GET,
                path="/",
-               summary="Navigation page",
-               htmldoc=@HtmlDoc(
-                       style={
-                               "INHERIT",  // Flag for inheriting 
resource-level CSS.
-                               "body { ",
-                                       "background-image: 
url('petstore/htdocs/background.jpg'); ",
-                                       "background-color: black; ",
-                                       "background-size: cover; ",
-                                       "background-attachment: fixed; ",
-                               "}"
-                       }
-               )
+               summary="Navigation page"
+       )
+       @HtmlDocConfig(
+               style={
+                       "INHERIT",  // Flag for inheriting resource-level CSS.
+                       "body { ",
+                               "background-image: 
url('petstore/htdocs/background.jpg'); ",
+                               "background-color: black; ",
+                               "background-size: cover; ",
+                               "background-attachment: fixed; ",
+                       "}"
+               }
        )
        public ResourceDescriptions getTopPage() {
                return new ResourceDescriptions()
@@ -228,20 +230,22 @@ public class PetStoreResource extends BasicRestJena 
implements PetStore {
                                Queryable.SWAGGER_PARAMS
                        }
                ),
-               bpx="Pet: tags,photo",
-               htmldoc=@HtmlDoc(
-                       widgets={
-                               QueryMenuItem.class,
-                               AddPetMenuItem.class
-                       },
-                       navlinks={
-                               "INHERIT",                // Inherit links from 
class.
-                               "[2]:$W{QueryMenuItem}",  // Insert QUERY link 
in position 2.
-                               "[3]:$W{AddPetMenuItem}"  // Insert ADD link in 
position 3.
-                       }
-               ),
                converters={Queryable.class}
        )
+       @HtmlDocConfig(
+               widgets={
+                       QueryMenuItem.class,
+                       AddPetMenuItem.class
+               },
+               navlinks={
+                       "INHERIT",                // Inherit links from class.
+                       "[2]:$W{QueryMenuItem}",  // Insert QUERY link in 
position 2.
+                       "[3]:$W{AddPetMenuItem}"  // Insert ADD link in 
position 3.
+               }
+       )
+       @BeanConfig(
+               bpx="Pet: tags,photo"
+       )
        public Collection<Pet> getPets() throws NotAcceptable {
                return store.getPets();
        }
@@ -449,19 +453,19 @@ public class PetStoreResource extends BasicRestJena 
implements PetStore {
                summary="Petstore orders",
                swagger=@MethodSwagger(
                        tags="store"
-               ),
-               htmldoc=@HtmlDoc(
-                       widgets={
-                               QueryMenuItem.class,
-                               AddOrderMenuItem.class
-                       },
-                       navlinks={
-                               "INHERIT",                // Inherit links from 
class.
-                               "[2]:$W{QueryMenuItem}",  // Insert QUERY link 
in position 2.
-                               "[3]:$W{AddOrderMenuItem}"  // Insert ADD link 
in position 3.
-                       }
                )
        )
+       @HtmlDocConfig(
+               widgets={
+                       QueryMenuItem.class,
+                       AddOrderMenuItem.class
+               },
+               navlinks={
+                       "INHERIT",                // Inherit links from class.
+                       "[2]:$W{QueryMenuItem}",  // Insert QUERY link in 
position 2.
+                       "[3]:$W{AddOrderMenuItem}"  // Insert ADD link in 
position 3.
+               }
+       )
        public Collection<Order> getOrders() throws NotAcceptable {
                return store.getOrders();
        }
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/rest/PhotosResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/rest/PhotosResource.java
index ffbef0b..7bf2aea 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/rest/PhotosResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/rest/PhotosResource.java
@@ -54,24 +54,6 @@ import org.apache.juneau.serializer.*;
        messages="nls/PhotosResource",
        title="Photo REST service",
        description="Sample resource that allows images to be uploaded and 
retrieved.",
-       htmldoc=@HtmlDoc(
-               navlinks={
-                       "up: request:/..",
-                       "options: servlet:/?method=OPTIONS",
-                       "$W{UploadPhotoMenuItem}",
-                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.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>"
-               },
-               widgets={
-                       UploadPhotoMenuItem.class
-               },
-               stylesheet="servlet:/htdocs/themes/dark.css"
-       ),
        swagger=@ResourceSwagger(
                contact=@Contact(name="Juneau 
Developer",email="[email protected]"),
                license=@License(name="Apache 
2.0",url="http://www.apache.org/licenses/LICENSE-2.0.html";),
@@ -80,6 +62,24 @@ import org.apache.juneau.serializer.*;
                externalDocs=@ExternalDocs(description="Apache 
Juneau",url="http://juneau.apache.org";)
        )
 )
+@HtmlDocConfig(
+       navlinks={
+               "up: request:/..",
+               "options: servlet:/?method=OPTIONS",
+               "$W{UploadPhotoMenuItem}",
+               "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.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>"
+       },
+       widgets={
+               UploadPhotoMenuItem.class
+       },
+       stylesheet="servlet:/htdocs/themes/dark.css"
+)
 @HtmlConfig(
        // Make the anchor text on URLs be just the path relative to the 
servlet.
        uriAnchorText="SERVLET_RELATIVE"
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/rest/SqlQueryResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/rest/SqlQueryResource.java
index 51fe908..ca993c2 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/rest/SqlQueryResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/rest/SqlQueryResource.java
@@ -24,6 +24,7 @@ import org.apache.juneau.jsonschema.annotation.ExternalDocs;
 import org.apache.juneau.config.*;
 import org.apache.juneau.dto.*;
 import org.apache.juneau.dto.html5.*;
+import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.http.annotation.Body;
 import org.apache.juneau.http.annotation.Query;
@@ -45,31 +46,6 @@ import org.apache.juneau.rest.widget.*;
        path="/sql",
        title="SQL query service",
        description="Executes queries against the local derby 
'$C{SqlQueryResource/connectionUrl}' database",
-       htmldoc=@HtmlDoc(
-               widgets={
-                       ThemeMenuItem.class
-               },
-               navlinks={
-                       "up: request:/..",
-                       "options: servlet:/?method=OPTIONS",
-                       "$W{ThemeMenuItem}",
-                       "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.java"
-               },
-               aside={
-                       "<div style='min-width:200px' class='text'>",
-                       "       <p>An example of a REST interface over a 
relational database that serializes ResultSet objects.</p>",
-                       "       <p>Specify one or more queries delimited by 
semicolons.</p>",
-                       "       <h5>Examples:</h5>",
-                       "       <ul>",
-                       "               <li><a class='link' 
href='?sql=select+*+from+sys.systables'>Tables</a>",
-                       "               <li><a class='link' 
href='?sql=select+*+from+PetstorePet'>Pets</a>",
-                       "               <li><a class='link' 
href='?sql=select+*+from+PetstoreOrder'>Orders</a>",
-                       "               <li><a class='link' 
href='?sql=select+*+from+PetstoreUser'>Users</a>",
-                       "       </ul>",
-                       "</div>"
-               },
-               stylesheet="servlet:/htdocs/themes/dark.css"
-       ),
        swagger=@ResourceSwagger(
                contact=@Contact(name="Juneau 
Developer",email="[email protected]"),
                license=@License(name="Apache 
2.0",url="http://www.apache.org/licenses/LICENSE-2.0.html";),
@@ -78,6 +54,31 @@ import org.apache.juneau.rest.widget.*;
                externalDocs=@ExternalDocs(description="Apache 
Juneau",url="http://juneau.apache.org";)
        )
 )
+@HtmlDocConfig(
+       widgets={
+               ThemeMenuItem.class
+       },
+       navlinks={
+               "up: request:/..",
+               "options: servlet:/?method=OPTIONS",
+               "$W{ThemeMenuItem}",
+               "source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.java"
+       },
+       aside={
+               "<div style='min-width:200px' class='text'>",
+               "       <p>An example of a REST interface over a relational 
database that serializes ResultSet objects.</p>",
+               "       <p>Specify one or more queries delimited by 
semicolons.</p>",
+               "       <h5>Examples:</h5>",
+               "       <ul>",
+               "               <li><a class='link' 
href='?sql=select+*+from+sys.systables'>Tables</a>",
+               "               <li><a class='link' 
href='?sql=select+*+from+PetstorePet'>Pets</a>",
+               "               <li><a class='link' 
href='?sql=select+*+from+PetstoreOrder'>Orders</a>",
+               "               <li><a class='link' 
href='?sql=select+*+from+PetstoreUser'>Users</a>",
+               "       </ul>",
+               "</div>"
+       },
+       stylesheet="servlet:/htdocs/themes/dark.css"
+)
 public class SqlQueryResource extends BasicRestServlet {
        private static final long serialVersionUID = 1L;
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 7ecb99a..cd62a79 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -3103,6 +3103,7 @@ public final class RestContext extends BeanContext {
         * @param builder The servlet configuration object.
         * @throws Exception If any initialization problems were encountered.
         */
+       @SuppressWarnings("deprecation")
        RestContext(RestContextBuilder builder) throws Exception {
                super(builder.getPropertyStore());
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index 20bec98..b478ece 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -1495,7 +1495,10 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
         * @return
         *      The widgets used for resolving <js>"$W{...}"</js> string 
variables.
         *      Never <jk>null</jk>.
+        *
+        * @deprecated
         */
+       @Deprecated
        public Map<String,Widget> getWidgets() {
                return restJavaMethod == null ? 
Collections.<String,Widget>emptyMap() : restJavaMethod.widgets;
        }
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/WidgetVar.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/WidgetVar.java
index 1eb76b0..7b40847 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/WidgetVar.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/WidgetVar.java
@@ -12,6 +12,9 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.vars;
 
+import java.util.*;
+
+import org.apache.juneau.html.*;
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.widget.*;
@@ -36,7 +39,10 @@ import org.apache.juneau.svl.*;
  * <ul>
  *     <li class='link'>{@doc juneau-rest-server.SvlVariables}
  * </ul>
+ *
+ * @deprecated Use {@link HtmlWidgetVar}
  */
+@Deprecated
 public class WidgetVar extends SimpleVar {
 
        private static final String SESSION_req = "req";
@@ -59,7 +65,6 @@ public class WidgetVar extends SimpleVar {
                RestRequest req = session.getSessionObject(RestRequest.class, 
SESSION_req, true);
                RestResponse res = session.getSessionObject(RestResponse.class, 
SESSION_res, true);
 
-               // >>> Deprecated - Remove in 9.0 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                boolean isScript = false, isStyle = false;
 
                if (key.endsWith(".script")) {
@@ -71,17 +76,28 @@ public class WidgetVar extends SimpleVar {
                        key = key.substring(0, key.length() - 6);
                        isStyle = true;
                }
-               // 
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-               
-               Widget w = req.getWidgets().get(key);
+
+               HtmlWidget w = req.getWidgets().get(key);
+
+               if (w == null) {
+                       Map<String,Widget> widgetMap = 
session.getSessionObject(Map.class, "htmlWidgets", false);
+                       if (widgetMap != null)
+                               w = widgetMap.get(key);
+               }
+
                if (w == null)
                        return "unknown-widget-"+key;
 
-               if (isScript)
-                       return w.getScript(req, res);
-               if (isStyle)
-                       return w.getStyle(req, res);
-               return w.getHtml(req, res);
+               if (w instanceof Widget) {
+                       Widget w2 = (Widget)w;
+                       if (isScript)
+                               return w2.getScript(req, res);
+                       if (isStyle)
+                               return w2.getStyle(req, res);
+                       return w2.getHtml(req, res);
+               }
+
+               return w.getHtml(session);
        }
 
        @Override /* Var */

Reply via email to