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 */