You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2017/06/07 00:27:47 UTC
[4/5] incubator-juneau git commit: Enhancements to HTML Doc rendering.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
index 3716d23..0d3a773 100644
--- a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
@@ -902,8 +902,8 @@ public class SerializerBuilder extends CoreObjectBuilder {
}
@Override /* CoreObjectBuilder */
- public SerializerBuilder debug(boolean value) {
- super.debug(value);
+ public SerializerBuilder debug() {
+ super.debug();
return this;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroupBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroupBuilder.java b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroupBuilder.java
index 74f923a..65c188d 100644
--- a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroupBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroupBuilder.java
@@ -1017,14 +1017,13 @@ public class SerializerGroupBuilder {
}
/**
- * Sets the {@link BeanContext#BEAN_debug} property on all serializers in this group.
+ * Sets the {@link BeanContext#BEAN_debug} property to <jk>true</jk> on all serializers in this group.
*
- * @param value The new value for this property.
* @return This object (for method chaining).
* @see BeanContext#BEAN_debug
*/
- public SerializerGroupBuilder debug(boolean value) {
- return property(BEAN_debug, value);
+ public SerializerGroupBuilder debug() {
+ return property(BEAN_debug, true);
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 81580f2..580a799 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
@@ -68,14 +68,14 @@ 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();
- super.serialize(s, o);
+ super.doSerialize(s, o);
w.eTag(1, "soap", "Body").nl();
w.eTag("soap", "Envelope").nl();
}
@Override /* Serializer */
public ObjectMap getResponseHeaders(ObjectMap properties) {
- return super.getResponseHeaders(properties)
+ return new ObjectMap(super.getResponseHeaders(properties))
.append("SOAPAction", properties.getString(SOAPXML_SOAPAction, "http://www.w3.org/2003/05/soap-envelope"));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
index ad67be4..c95c349 100644
--- a/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
@@ -555,8 +555,8 @@ public class SoapXmlSerializerBuilder extends XmlSerializerBuilder {
}
@Override /* CoreObjectBuilder */
- public SoapXmlSerializerBuilder debug(boolean value) {
- super.debug(value);
+ public SoapXmlSerializerBuilder debug() {
+ super.debug();
return this;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-core/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/uon/UonParserBuilder.java b/juneau-core/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
index 4d1f576..e4eccd1 100644
--- a/juneau-core/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
@@ -447,8 +447,8 @@ public class UonParserBuilder extends ParserBuilder {
}
@Override /* CoreObjectBuilder */
- public UonParserBuilder debug(boolean value) {
- super.debug(value);
+ public UonParserBuilder debug() {
+ super.debug();
return this;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-core/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
index b64350e..d031a9b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
@@ -535,8 +535,8 @@ public class UonSerializerBuilder extends SerializerBuilder {
}
@Override /* CoreObjectBuilder */
- public UonSerializerBuilder debug(boolean value) {
- super.debug(value);
+ public UonSerializerBuilder debug() {
+ super.debug();
return this;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-core/src/main/java/org/apache/juneau/uon/package.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/uon/package.html b/juneau-core/src/main/java/org/apache/juneau/uon/package.html
index 440f5b2..0050e8a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/uon/package.html
+++ b/juneau-core/src/main/java/org/apache/juneau/uon/package.html
@@ -988,7 +988,9 @@
messages=<js>"nls/AddressBookResource"</js>,
title=<js>"$L{title}"</js>,
description=<js>"$L{description}"</js>,
- pageLinks=<js>"{options:'?method=OPTIONS',doc:'doc'}"</js>,
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{options:'?method=OPTIONS'}"</js>
+ ),
properties={
<ja>@Property</ja>(name=SerializerContext.<jsf>SERIALIZER_useWhitespace</jsf>, value=<js>"true"</js>)
},
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
index 56b8448..731ea51 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
@@ -466,8 +466,8 @@ public class UrlEncodingParserBuilder extends UonParserBuilder {
}
@Override /* CoreObjectBuilder */
- public UrlEncodingParserBuilder debug(boolean value) {
- super.debug(value);
+ public UrlEncodingParserBuilder debug() {
+ super.debug();
return this;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
index 5fee28f..4c307b5 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
@@ -598,8 +598,8 @@ public class UrlEncodingSerializerBuilder extends UonSerializerBuilder {
}
@Override /* CoreObjectBuilder */
- public UrlEncodingSerializerBuilder debug(boolean value) {
- super.debug(value);
+ public UrlEncodingSerializerBuilder debug() {
+ super.debug();
return this;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html b/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html
index 88349fc..445bcc6 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html
@@ -988,7 +988,9 @@
messages=<js>"nls/AddressBookResource"</js>,
title=<js>"$L{title}"</js>,
description=<js>"$L{description}"</js>,
- pageLinks=<js>"{options:'?method=OPTIONS',doc:'doc'}"</js>,
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{options:'?method=OPTIONS'}"</js>
+ ),
properties={
<ja>@Property</ja>(name=SerializerContext.<jsf>SERIALIZER_useWhitespace</jsf>, value=<js>"true"</js>)
},
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
index fcde50e..eaf97f8 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
@@ -568,8 +568,8 @@ public class XmlParserBuilder extends ParserBuilder {
}
@Override /* CoreObjectBuilder */
- public XmlParserBuilder debug(boolean value) {
- super.debug(value);
+ public XmlParserBuilder debug() {
+ super.debug();
return this;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializerBuilder.java
index 37e7061..7fba517 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializerBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializerBuilder.java
@@ -535,8 +535,8 @@ public class XmlSchemaSerializerBuilder extends XmlSerializerBuilder {
}
@Override /* CoreObjectBuilder */
- public XmlSchemaSerializerBuilder debug(boolean value) {
- super.debug(value);
+ public XmlSchemaSerializerBuilder debug() {
+ super.debug();
return this;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
index 339904b..a4db76c 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
@@ -681,8 +681,8 @@ public class XmlSerializerBuilder extends SerializerBuilder {
}
@Override /* CoreObjectBuilder */
- public XmlSerializerBuilder debug(boolean value) {
- super.debug(value);
+ public XmlSerializerBuilder debug() {
+ super.debug();
return this;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-core/src/main/java/org/apache/juneau/xml/package.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/package.html b/juneau-core/src/main/java/org/apache/juneau/xml/package.html
index 4b293da..672ca2f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/package.html
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/package.html
@@ -2922,7 +2922,9 @@
messages=<js>"nls/AddressBookResource"</js>,
title=<js>"$L{title}"</js>,
description=<js>"$L{description}"</js>,
- pageLinks=<js>"{options:'?method=OPTIONS',doc:'doc'}"</js>,
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{options:'?method=OPTIONS'}"</js>
+ ),
properties={
<ja>@Property</ja>(name=SerializerContext.<jsf>SERIALIZER_quoteChar</jsf>, value=<js>"'"</js>),
<ja>@Property</ja>(name=HtmlSerializerContext.<jsf>HTML_uriAnchorText</jsf>, value=<jsf>TO_STRING</jsf>)
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-core/src/main/javadoc/doc-files/NewExamplesPage.png
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/javadoc/doc-files/NewExamplesPage.png b/juneau-core/src/main/javadoc/doc-files/NewExamplesPage.png
new file mode 100644
index 0000000..265e727
Binary files /dev/null and b/juneau-core/src/main/javadoc/doc-files/NewExamplesPage.png differ
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 9488d20..bc56b1e 100644
--- a/juneau-core/src/main/javadoc/overview.html
+++ b/juneau-core/src/main/javadoc/overview.html
@@ -2196,7 +2196,9 @@
<jc>// Links on the HTML rendition page.
// "request:/..." URIs are relative to the request URI.
// "servlet:/..." URIs are relative to the servlet URI.</jc>
- pageLinks=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>,
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ ),
<jc>// Properties that get applied to all serializers and parsers.</jc>
properties={
@@ -2211,12 +2213,14 @@
encoders=GzipEncoder.<jk>class</jk>,
<jc>// Swagger info.</jc>
- contact=<js>"{name:'John Smith',email:'john@smith.com'}"</js>,
- license=<js>"{name:'Apache 2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'}"</js>,
- version=<js>"2.0"</js>,
- termsOfService=<js>"You're on your own."</js>,
- tags=<js>"[{name:'Java',description:'Java utility',externalDocs:{description:'Home page',url:'http://juneau.apache.org'}}]"</js>,
- externalDocs=<js>"{description:'Home page',url:'http://juneau.apache.org'}"</js>
+ swagger=<ja>@ResourceSwagger</ja>(
+ contact=<js>"{name:'John Smith',email:'john@smith.com'}"</js>,
+ license=<js>"{name:'Apache 2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'}"</js>,
+ version=<js>"2.0"</js>,
+ termsOfService=<js>"You're on your own."</js>,
+ tags=<js>"[{name:'Java',description:'Java utility',externalDocs:{description:'Home page',url:'http://juneau.apache.org'}}]"</js>,
+ externalDocs=<js>"{description:'Home page',url:'http://juneau.apache.org'}"</js>
+ )
)
<jk>public class</jk> SystemPropertiesResource <jk>extends</jk> RestServletDefault {
@@ -3000,7 +3004,9 @@
<ja>@RestResource</ja>(
path=<js>"/"</js>,
messages=<js>"nls/RootResources"</js>,
- pageLinks=<js>"{options:'?method=OPTIONS'}"</js>,
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{options:'?method=OPTIONS'}"</js>
+ ),
children={
HelloWorldResource.<jk>class</jk>,
MethodExampleResource.<jk>class</jk>,
@@ -3093,7 +3099,9 @@
<ja>@RestResource</ja>(
messages=<js>"nls/HelloWorldResource"</js>,
path=<js>"/helloWorld"</js>,
- pageLinks=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ )
)
<jk>public class</jk> HelloWorldResource <jk>extends</jk> Resource {
<jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L;
@@ -3168,7 +3176,9 @@
<ja>@RestResource</ja>(
path=<js>"/methodExample"</js>,
messages=<js>"nls/MethodExampleResource"</js>,
- pageLinks=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ )
)
<jk>public class</jk> MethodExampleResource <jk>extends</jk> Resource {
<jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L;
@@ -3372,7 +3382,9 @@
</p>
<p class='bcode'>
<ja>@RestResource</ja>(
- pageLinks=<js>"{options:'?method=OPTIONS'}"</js>
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{options:'?method=OPTIONS'}"</js>
+ )
)
</p>
<p>
@@ -3637,7 +3649,9 @@
<ja>@RestResource</ja>(
path=<js>"/echo"</js>,
messages=<js>"nls/RequestEchoResource"</js>,
- pageLinks=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>,
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>,
+ ),
properties={
<ja>@Property</ja>(name=<jsf>SERIALIZER_maxDepth</jsf>, value=<js>"10"</js>),
<ja>@Property</ja>(name=<jsf>SERIALIZER_detectRecursions</jsf>, value=<js>"true"</js>)
@@ -4098,7 +4112,9 @@
// "request:/..." URIs are relative to the request URI.
// "servlet:/..." URIs are relative to the servlet URI.
// "$C{...}" variables are pulled from the config file.</jc>
- pageLinks=<js>"{up:'request:/..', options:'servlet:/?method=OPTIONS', source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java'}"</js>,
+ 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>
+ ),
<jc>// Properties that get applied to all serializers and parsers.</jc>
properties={
@@ -4766,7 +4782,9 @@
messages=<js>"nls/SampleRemoteableServlet"</js>,
title=<js>"Remoteable Service Proxy API"</js>,
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>,
- pageLinks=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>,
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ ),
properties={
<jc>// Allow us to use method=POST from a browser.</jc>
<ja>@Property</ja>(name=<jsf>REST_allowMethodParam</jsf>, value=<js>"*"</js>)
@@ -4870,7 +4888,9 @@
<ja>@RestResource</ja>(
path=<js>"/tempDir"</js>,
messages=<js>"nls/TempDirResource"</js>,
- pageLinks=<js>"{up:'request:/..', options:'servlet:/?method=OPTIONS', upload:'servlet:/upload'}"</js>,
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{up:'request:/..', options:'servlet:/?method=OPTIONS', upload:'servlet:/upload'}"</js>
+ ),
properties={
<ja>@Property</ja>(name=<js>"DirectoryResource.rootDir"</js>, value=<js>"$S{java.io.tmpdir}"</js>),
<ja>@Property</ja>(name=<js>"DirectoryResource.allowViews"</js>, value=<js>"true"</js>),
@@ -4988,7 +5008,9 @@
<ja>@RestResource</ja>(
path=<js>"/atom"</js>,
messages=<js>"nls/AtomFeedResource"</js>,
- pageLinks=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>,
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ ),
properties={
<ja>@Property</ja>(name=<jsf>SERIALIZER_quoteChar</jsf>, value=<js>"'"</js>),
<ja>@Property</ja>(name=<jsf>RDF_rdfxml_tab</jsf>, value=<js>"5"</js>),
@@ -5096,7 +5118,9 @@
<ja>@RestResource</ja>(
path=<js>"/docker"</js>,
title=<js>"Sample Docker resource"</js>,
- pageLinks=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ )
)
<jk>public class</jk> DockerRegistryResource <jk>extends</jk> Resource {
<jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L;
@@ -5177,7 +5201,9 @@
messages=<js>"nls/TumblrParserResource"</js>,
title=<js>"Tumblr parser service"</js>,
description=<js>"Specify a URL to a Tumblr blog and parse the results."</js>,
- pageLinks=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ )
)
<jk>public class</jk> TumblrParserResource <jk>extends</jk> Resource {
<jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L;
@@ -5259,7 +5285,9 @@
messages=<js>"nls/PhotosResource"</js>,
title=<js>"Photo REST service"</js>,
description=<js>"Use a tool like Poster to upload and retrieve jpeg and png images."</js>,
- pageLinks=<js>"{options:'?method=OPTIONS'}"</js>
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{options:'?method=OPTIONS'}"</js>
+ )
)
<jk>public class</jk> PhotosResource <jk>extends</jk> RestServletDefault {
@@ -5398,7 +5426,9 @@
path=<js>"/jsonSchema"</js>,
messages=<js>"nls/JsonSchemaResource"</js>,
title=<js>"Sample JSON-Schema document"</js>,
- pageLinks=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ )
)
<jk>public class</jk> JsonSchemaResource <jk>extends</jk> ResourceJena {
<jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L;
@@ -5479,7 +5509,9 @@
messages=<js>"nls/SqlQueryResource"</js>,
title=<js>"SQL query service"</js>,
description=<js>"Executes queries against the local derby '$C{SqlQueryResource/connectionUrl}' database"</js>,
- pageLinks=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>
+ )
)
<jk>public class</jk> SqlQueryResource <jk>extends</jk> Resource {
<jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L;
@@ -5666,7 +5698,9 @@
path=<js>"/config"</js>,
title=<js>"Configuration"</js>,
description=<js>"Contents of configuration file."</js>,
- pageLinks=<js>"{up:'request:/..', options:'servlet:/?method=OPTIONS', edit:'servlet:/edit'}"</js>
+ htmldoc=<ja>@HtmlDoc</ja>(
+ links=<js>"{up:'request:/..', options:'servlet:/?method=OPTIONS', edit:'servlet:/edit'}"</js>
+ )
)
<jk>public class</jk> ConfigResource <jk>extends</jk> Resource {
<jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L;
@@ -6166,9 +6200,6 @@
<li>{@link org.apache.juneau.ini.ConfigFile#getObjectWithDefault(String,Object,Class) getObjectWithDefault(String,Object,Class)}
</ul>
<li>New ability to interact with config file sections with proxy interfaces with new method {@link org.apache.juneau.ini.ConfigFile#getSectionAsInterface(String,Class)}.
- <li>New {@link org.apache.juneau.html.annotation.Html#render() @Html.render()} annotation and {@link org.apache.juneau.html.HtmlRender} class that allows you
- to customize the HTML output and CSS style on bean properties:<br>
- <img class='bordered' src='doc-files/HtmlRender_1.png'>
<li>{@link org.apache.juneau.annotation.BeanProperty @BeanProperty} annotation can now be applied to getters
and setters defined on interfaces.
<li>New methods on {@link org.apache.juneau.serializer.SerializerSession} and {@link org.apache.juneau.parser.ParserSession}
@@ -6203,11 +6234,11 @@
</ul>
For example, currently we define HTML page links using variables and servlet-relative URIs...
<p class='bcode'>
- pageLinks=<js>"{up:'$R{requestParentURI}', options:'?method=OPTIONS', upload:'upload'}"</js>
+ pages=<js>"{up:'$R{requestParentURI}', options:'?method=OPTIONS', upload:'upload'}"</js>
</p>
With these new protocols, we can define them like so:
<p class='bcode'>
- pageLinks=<js>"{top:'context:/', up:'request:/..' ,options:'servlet:/?method=OPTIONS', upload:'servlet:/upload'}"</js>
+ links=<js>"{top:'context:/', up:'request:/..' ,options:'servlet:/?method=OPTIONS', upload:'servlet:/upload'}"</js>
</p>
The old method of using variables and servlet-relative URIs will still be supported, but using
these new protocols should (hopefully) be easier to understand.
@@ -6252,10 +6283,35 @@
<li>The {@link org.apache.juneau.BeanContext#BEAN_debug} flag will now capture parser input and make it
available through the {@link org.apache.juneau.parser.ParserSession#getInputAsString()} method so that it can be used
in the listeners.
+ <li>Significant new functionality introduced to the HTML serializer.
+ <br>Lots of new options for customizing the HTML output.
+ <ul>
+ <li>New {@link org.apache.juneau.html.annotation.Html#render() @Html.render()} annotation and {@link org.apache.juneau.html.HtmlRender} class that allows you
+ to customize the HTML output and CSS style on bean properties:
+ <br><img class='bordered' src='doc-files/HtmlRender_1.png'>
+ <br>Annotation can be applied to POJO classes and bean properties.
+ <li>Several new properties for customizing parts of the HTML page:
+ <ul>
+ <li>{@link org.apache.juneau.html.HtmlDocSerializerContext#HTMLDOC_title}
+ <li>{@link org.apache.juneau.html.HtmlDocSerializerContext#HTMLDOC_description}
+ <li>{@link org.apache.juneau.html.HtmlDocSerializerContext#HTMLDOC_header}
+ <li>{@link org.apache.juneau.html.HtmlDocSerializerContext#HTMLDOC_nav}
+ <li>{@link org.apache.juneau.html.HtmlDocSerializerContext#HTMLDOC_aside}
+ <li>{@link org.apache.juneau.html.HtmlDocSerializerContext#HTMLDOC_footer}
+ <li>{@link org.apache.juneau.html.HtmlDocSerializerContext#HTMLDOC_noResultsMessage}
+ <li>{@link org.apache.juneau.html.HtmlDocSerializerContext#HTMLDOC_cssUrl}
+ <li>{@link org.apache.juneau.html.HtmlDocSerializerContext#HTMLDOC_css}
+ <li>{@link org.apache.juneau.html.HtmlDocSerializerContext#HTMLDOC_template}
+ </ul>
+ <li>New interface {@link org.apache.juneau.html.HtmlDocTemplate} that allows full control over rendering
+ of HTML produced by {@link org.apache.juneau.html.HtmlDocSerializer}.
+
+ </ul>
</ul>
<h6 class='topic'>org.apache.juneau.rest</h6>
<ul class='spaced-list'>
+ <li>MAJOR enhancements made to the REST API.
<li>The {@link org.apache.juneau.rest.RestRequest} class functionality has been broken up into the following
functional pieces to reduce its complexity:
<ul>
@@ -6374,7 +6430,67 @@
<li>{@link org.apache.juneau.rest.annotation.Header#def @Header.def()} - Default header value.
<li>{@link org.apache.juneau.rest.annotation.Query#def @Query.def()} - Default query parameter value.
<li>{@link org.apache.juneau.rest.annotation.FormData#def @FormData.def()} - Default form data parameter value.
- </ul>
+ </ul>
+ <li>New attributes on {@link org.apache.juneau.rest.annotation.RestResource @RestResource}:
+ <ul>
+ <li>{@link org.apache.juneau.rest.annotation.RestResource#serializerListener() serializerListener()}
+ <li>{@link org.apache.juneau.rest.annotation.RestResource#parserListener() parserListener()}
+ <li>{@link org.apache.juneau.rest.annotation.RestResource#widgets() widgets()}
+ <li>{@link org.apache.juneau.rest.annotation.RestResource#swagger() swagger()}
+ <li>{@link org.apache.juneau.rest.annotation.RestResource#htmldoc() htmldoc()}
+ </ul>
+ <li>New attributes on {@link org.apache.juneau.rest.annotation.RestMethod @RestMethod}:
+ <ul>
+ <li>{@link org.apache.juneau.rest.annotation.RestMethod#widgets() widgets()}
+ <li>{@link org.apache.juneau.rest.annotation.RestMethod#swagger() swagger()}
+ <li>{@link org.apache.juneau.rest.annotation.RestMethod#htmldoc() htmldoc()}
+ </ul>
+ <li>New string vars:
+ <ul>
+ <li>{@link org.apache.juneau.rest.vars.UrlVar} - Resolve <js>"$U{...}"</js> variables to URLs.
+ <li>{@link org.apache.juneau.rest.vars.WidgetVar} - Resolve <js>"$W{...}"</js> variables to widget contents.
+ </ul>
+ <li>New methods on {@link org.apache.juneau.rest.RestConfig}:
+ <ul>
+ <li>{@link org.apache.juneau.rest.RestConfig#setHtmlTitle(String) setHtmlTitle(String)}
+ <li>{@link org.apache.juneau.rest.RestConfig#setHtmlDescription(String) setHtmlDescription(String)}
+ <li>{@link org.apache.juneau.rest.RestConfig#setHtmlHeader(String) setHtmlHeader(String)}
+ <li>{@link org.apache.juneau.rest.RestConfig#setHtmlLinks(String) setHtmlLinks(String)}
+ <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)}
+ <li>{@link org.apache.juneau.rest.RestConfig#setHtmlCss(String) setHtmlCss(String)}
+ <li>{@link org.apache.juneau.rest.RestConfig#setHtmlCssUrl(String) setHtmlCssUrl(String)}
+ <li>{@link org.apache.juneau.rest.RestConfig#setHtmlNoWrap(boolean) setHtmlNoWrap(boolean)}
+ <li>{@link org.apache.juneau.rest.RestConfig#setHtmlNoResultsMessage(String) setHtmlNoResultsMessage(String)}
+ <li>{@link org.apache.juneau.rest.RestConfig#setHtmlTemplate(Class) setHtmlTemplate(Class)}
+ <li>{@link org.apache.juneau.rest.RestConfig#setHtmlTemplate(HtmlDocTemplate) setHtmlTemplate(HtmlDocTemplate)}
+ <li>{@link org.apache.juneau.rest.RestConfig#addWidget(Class) addWidget(Class)}
+ </ul>
+ <li>New methods on {@link org.apache.juneau.rest.RestResponse}:
+ <ul>
+ <li>{@link org.apache.juneau.rest.RestResponse#setHtmlTitle(Object) setHtmlTitle(Object)}
+ <li>{@link org.apache.juneau.rest.RestResponse#setHtmlDescription(Object) setHtmlDescription(Object)}
+ <li>{@link org.apache.juneau.rest.RestResponse#setHtmlHeader(Object) setHtmlHeader(Object)}
+ <li>{@link org.apache.juneau.rest.RestResponse#setHtmlLinks(Object) setHtmlLinks(Object)}
+ <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)}
+ <li>{@link org.apache.juneau.rest.RestResponse#setHtmlCss(Object) setHtmlCss(Object)}
+ <li>{@link org.apache.juneau.rest.RestResponse#setHtmlCssUrl(Object) setHtmlCssUrl(Object)}
+ <li>{@link org.apache.juneau.rest.RestResponse#setHtmlNoWrap(boolean) setHtmlNoWrap(boolean)}
+ <li>{@link org.apache.juneau.rest.RestResponse#setHtmlNoResultsMessage(Object) setHtmlNoResultsMessage(Object)}
+ <li>{@link org.apache.juneau.rest.RestResponse#setHtmlTemplate(Class) setHtmlTemplate(Class)}
+ <li>{@link org.apache.juneau.rest.RestResponse#setHtmlTemplate(HtmlDocTemplate) setHtmlTemplate(HtmlDocTemplate)}
+ </ul>
+ <li><code>&plainText=true</code> parameter now works on byte-based serializers by converting the output to hex.
+ <li>New classes for widget support:
+ <ul>
+ <li>{@link org.apache.juneau.rest.widget.Widget}
+ <li>{@link org.apache.juneau.rest.widget.PoweredByJuneauWidget}
+ <li>{@link org.apache.juneau.rest.widget.ContentTypeLinksWidget}
+ </ul>
+ <li><code>devops.css</code> cleaned up.
</ul>
<h6 class='topic'>org.apache.juneau.rest.client</h6>
@@ -6392,6 +6508,13 @@
<h6 class='topic'>org.apache.juneau.microservice</h6>
<ul class='spaced-list'>
</ul>
+
+ <h6 class='topic'>org.apache.juneau.examples.rest</h6>
+ <ul class='spaced-list'>
+ <li>Many code enhancements make to examples to reflect new functionality.
+ <li>All pages now render aside comments to help explain what feature they're trying to explain.
+ <br><img class='bordered' src='doc-files/NewExamplesPage.png'>
+ </ul>
</div>
<!-- ======================================================================================================== -->
@@ -6538,12 +6661,12 @@
<li>New annotations added to {@link org.apache.juneau.rest.annotation.RestResource @RestResource} and {@link org.apache.juneau.rest.annotation.RestMethod @RestMethod}
to simplify defining page title, text, and links on HTML views:
<ul>
- <li>{@link org.apache.juneau.rest.annotation.RestResource#pageTitle() @RestResource.pageTitle()}
- <li>{@link org.apache.juneau.rest.annotation.RestMethod#pageTitle() @RestMethod.pageTitle()}
- <li>{@link org.apache.juneau.rest.annotation.RestResource#pageText() @RestResource.pageText()}
- <li>{@link org.apache.juneau.rest.annotation.RestMethod#pageText() @RestMethod.pageText()}
- <li>{@link org.apache.juneau.rest.annotation.RestResource#pageLinks() @RestResource.pageLinks()}
- <li>{@link org.apache.juneau.rest.annotation.RestMethod#pageLinks() @RestMethod.pageLinks()}
+ <li><code><del>@RestResource.pageTitle()</del></code>
+ <li><code><del>@RestMethod.pageTitle()</del></code>
+ <li><code><del>@RestResource.pageText()</del></code>
+ <li><code><del>@RestMethod.pageText()</del></code>
+ <li><code><del>@RestResource.pageLinks()</del></code>
+ <li><code><del>@RestMethod.pageLinks()</del></code>
</ul>
<p class='bcode'>
<jc>// Old method</jc>
@@ -6650,7 +6773,7 @@
<li>{@link org.apache.juneau.rest.client.RestClientBuilder#noTrace() noTrace()} - Adds a <code>No-Trace: true</code> header on all requests to prevent
the servlet from logging errors.
<br>Useful for testing scenarios when you don't want the console to end up showing errors done on purpose.
- <li>{@link org.apache.juneau.rest.client.RestClientBuilder#debug(boolean) debug(boolean)} now adds a <code>Debug: true</code> header on all requests.
+ <li>{@link org.apache.juneau.rest.client.RestClientBuilder#debug() debug()} now adds a <code>Debug: true</code> header on all requests.
</ul>
<li>New methods added/updated to {@link org.apache.juneau.rest.client.RestCall}:
<ul>
@@ -7065,19 +7188,19 @@
<ul>
<li>{@link org.apache.juneau.rest.annotation.RestResource#title() @RestResource.title()} / {@link org.apache.juneau.rest.RestInfoProvider#getTitle(RestRequest)}
<li>{@link org.apache.juneau.rest.annotation.RestResource#description() @RestResource.description()} / {@link org.apache.juneau.rest.RestInfoProvider#getDescription(RestRequest)}
- <li>{@link org.apache.juneau.rest.annotation.RestResource#termsOfService() @RestResource.termsOfService()} / {@link org.apache.juneau.rest.RestInfoProvider#getTermsOfService(RestRequest)}
- <li>{@link org.apache.juneau.rest.annotation.RestResource#contact() @RestResource.contact()} / {@link org.apache.juneau.rest.RestInfoProvider#getContact(RestRequest)}
- <li>{@link org.apache.juneau.rest.annotation.RestResource#license() @RestResource.license()} / {@link org.apache.juneau.rest.RestInfoProvider#getLicense(RestRequest)}
- <li>{@link org.apache.juneau.rest.annotation.RestResource#version() @RestResource.version()} / {@link org.apache.juneau.rest.RestInfoProvider#getVersion(RestRequest)}
- <li>{@link org.apache.juneau.rest.annotation.RestResource#tags() @RestResource.tags()} / {@link org.apache.juneau.rest.RestInfoProvider#getTags(RestRequest)}
- <li>{@link org.apache.juneau.rest.annotation.RestResource#externalDocs() @RestResource.externalDocs()} / {@link org.apache.juneau.rest.RestInfoProvider#getExternalDocs(RestRequest)}
+ <li><code><del>@RestResource.termsOfService()</del></code> / {@link org.apache.juneau.rest.RestInfoProvider#getTermsOfService(RestRequest)}
+ <li><code><del>@RestResource.contact()</del></code> / {@link org.apache.juneau.rest.RestInfoProvider#getContact(RestRequest)}
+ <li><code><del>@RestResource.license()</del></code> / {@link org.apache.juneau.rest.RestInfoProvider#getLicense(RestRequest)}
+ <li><code><del>@RestResource.version()</del></code> / {@link org.apache.juneau.rest.RestInfoProvider#getVersion(RestRequest)}
+ <li><code><del>@RestResource.tags()</del></code> / {@link org.apache.juneau.rest.RestInfoProvider#getTags(RestRequest)}
+ <li><code><del>@RestResource.externalDocs()</del></code> / {@link org.apache.juneau.rest.RestInfoProvider#getExternalDocs(RestRequest)}
<li>{@link org.apache.juneau.rest.annotation.RestMethod#summary() @RestMethod.summary()} / {@link org.apache.juneau.rest.RestInfoProvider#getMethodSummary(String,RestRequest)}
<li>{@link org.apache.juneau.rest.annotation.RestMethod#description() @RestMethod.description()} / {@link org.apache.juneau.rest.RestInfoProvider#getMethodDescription(String,RestRequest)}
- <li>{@link org.apache.juneau.rest.annotation.RestMethod#externalDocs() @RestMethod.externalDocs()}
- <li>{@link org.apache.juneau.rest.annotation.RestMethod#tags() @RestMethod.tags()}
- <li>{@link org.apache.juneau.rest.annotation.RestMethod#deprecated() @RestMethod.deprecated()}
- <li>{@link org.apache.juneau.rest.annotation.RestMethod#parameters() @RestMethod.parameters()}
- <li>{@link org.apache.juneau.rest.annotation.RestMethod#responses() @RestMethod.responses()}
+ <li><code><del>@RestMethod.externalDocs()</del></code>
+ <li><code><del>@RestMethod.tags()</del></code>
+ <li><code><del>@RestMethod.deprecated()</del></code>
+ <li><code><del>@RestMethod.parameters()</del></code>
+ <li><code><del>@RestMethod.responses()</del></code>
</ul>
</li>
</ul>
@@ -7747,7 +7870,7 @@
<ul class='spaced-list'>
<li>Fixed bug where localized strings weren't resolving when using chained resource bundles.
<li>Servlet and method labels and descriptions can now contain embedded string variables.
- <li>New <del><code>RestMethod.input()</code></del> and org.apache.juneau.rest.annotation.RestMethod#responses()}
+ <li>New <del><code>RestMethod.input()</code></del> and <code><del>RestMethod.responses()</del></code>
annotations.
These replace the various <code>description</code> annotations added 2 days ago with a simpler design.
<li>New methods on {@link org.apache.juneau.rest.RestServlet}:
@@ -7861,7 +7984,7 @@
<li><del><code>RestResource.label()</code></del>
<li>{@link org.apache.juneau.rest.annotation.RestResource#description()}
<li>{@link org.apache.juneau.rest.annotation.RestMethod#description()}
- <li>{@link org.apache.juneau.rest.annotation.RestMethod#responses()}
+ <li><del><code>RestMethod#responses()</code></del>
<li><del><code>Attr.description()</code></del>
<li><del><code>Content.description()</code></del>
<li><del><code>HasParam.description()</code></del>
@@ -7901,7 +8024,7 @@
</ul>
<li>New {@link org.apache.juneau.dto.jsonschema.JsonType#ANY} enum.
<li>New {@link org.apache.juneau.html.annotation.Html#asPlainText @Html.asPlainText()} annotation.
- <li>New {@link org.apache.juneau.html.HtmlDocSerializerContext#HTMLDOC_cssImports} property.
+ <li>New <code><del>HtmlDocSerializerContext.HTMLDOC_cssImports</del></code> property.
<li>Signifant changes to RDF support.
<ul>
<li>New {@link org.apache.juneau.jena.annotation.Rdf @Rdf} and {@link org.apache.juneau.jena.annotation.RdfSchema @RdfSchema}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 49fc847..fcfe9b9 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
@@ -23,6 +23,7 @@ import org.apache.juneau.dto.atom.*;
import org.apache.juneau.encoders.*;
import org.apache.juneau.microservice.*;
import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.widget.*;
/**
* Sample resource that shows how to generate ATOM feeds.
@@ -31,12 +32,23 @@ import org.apache.juneau.rest.annotation.*;
path="/atom",
title="Sample ATOM feed resource",
description="Sample resource that shows how to render ATOM feeds",
- pageLinks="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/AtomFeedResource.java'}",
+ htmldoc=@HtmlDoc(
+ links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/AtomFeedResource.java'}",
+ aside=""
+ + "<div style='min-width:200px' class='text'>"
+ + " <p>Shows how to produce ATOM feeds in a variety of languages.</p>"
+ + " <p>$W{contentTypeLinks}</p>"
+ + "</div>",
+ css="aside {display:table-caption;}"
+ ),
properties={
@Property(name=SERIALIZER_quoteChar, value="'"),
@Property(name=RDF_rdfxml_tab, value="5"),
@Property(name=RDF_addRootProperty, value="true")
},
+ widgets={
+ ContentTypeLinksWidget.class
+ },
encoders=GzipEncoder.class
)
public class AtomFeedResource extends ResourceJena {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 10a0b07..ed66794 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
@@ -12,8 +12,9 @@
// ***************************************************************************************************************************
package org.apache.juneau.examples.rest;
-import java.io.*;
+import static org.apache.juneau.dto.html5.HtmlBuilder.*;
+import org.apache.juneau.dto.html5.*;
import org.apache.juneau.microservice.*;
import org.apache.juneau.rest.*;
import org.apache.juneau.rest.annotation.*;
@@ -27,15 +28,63 @@ import org.apache.juneau.rest.annotation.*;
messages="nls/CodeFormatterResource",
title="Code Formatter",
description="Utility for generating HTML code-formatted source code",
- pageLinks="{options:'?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/CodeFormatterResource.java'}"
+ 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>",
+ css="aside {display:table-caption;}"
+ )
)
@SuppressWarnings({"serial"})
public class CodeFormatterResource extends Resource {
/** [GET /] - Display query entry page. */
@RestMethod(name="GET", path="/")
- public ReaderResource getQueryEntryPage(RestRequest req) throws IOException {
- return req.getReaderResource("CodeFormatterResource.html", true);
+ public Div getQueryEntryPage(RestRequest req) {
+ return div(
+ script("text/javascript",
+ "\n // Quick and dirty function to allow tabs in textarea."
+ +"\n function checkTab(e) {"
+ +"\n if (e.keyCode == 9) {"
+ +"\n var t = e.target;"
+ +"\n var ss = t.selectionStart, se = t.selectionEnd;"
+ +"\n t.value = t.value.slice(0,ss).concat('\\t').concat(t.value.slice(ss,t.value.length));"
+ +"\n e.preventDefault();"
+ +"\n }"
+ +"\n }"
+ +"\n // Load results from IFrame into this document."
+ +"\n function loadResults(b) {"
+ +"\n var doc = b.contentDocument || b.contentWindow.document;"
+ +"\n var data = doc.getElementById('data') || doc.getElementsByTagName('body')[0];"
+ +"\n document.getElementById('results').innerHTML = data.innerHTML;"
+ +"\n }"
+ ),
+ form("form").action("codeFormatter").method("POST").target("buff").children(
+ table(
+ tr(
+ th("Language: "),
+ td(
+ select().name("lang").children(
+ option("java","Java"),
+ option("xml", "XML")
+ )
+ ),
+ td(button("submit", "Submit"), button("reset", "Reset"))
+ ),
+ tr(
+ td().colspan(3).children(
+ textarea().name("code").style("min-width:800px;min-height:400px;font-family:Courier;font-size:9pt;").onkeydown("checkTab(event)")
+ )
+ )
+ )
+ ),
+ br(),
+ div().id("results")._class("monospace"),
+ iframe().name("buff").style("display:none").onload("parent.loadResults(this)")
+ );
}
/** [POST /] - Add syntax highlighting to input. */
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 753fcf7..31a845c 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
@@ -35,7 +35,9 @@ import org.apache.juneau.utils.*;
*/
@RestResource(
messages="nls/DirectoryResource",
- pageLinks="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/DirectoryResource.java'}",
+ htmldoc=@HtmlDoc(
+ links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/DirectoryResource.java'}"
+ ),
properties={
@Property(name=HTML_uriAnchorText, value=PROPERTY_NAME),
@Property(name=REST_allowMethodParam, value="*"),
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 1b021f0..ae3f18b 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
@@ -27,7 +27,14 @@ import org.apache.juneau.rest.labels.*;
@RestResource(
path="/docker",
title="Sample Docker resource",
- pageLinks="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/DockerRegistryResource.java'}"
+ 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>"
+ )
)
public class DockerRegistryResource extends Resource {
private static final long serialVersionUID = 1L;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/FileSpaceResource.java
----------------------------------------------------------------------
diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/FileSpaceResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/FileSpaceResource.java
index 6a32824..8cd48ce 100644
--- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/FileSpaceResource.java
+++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/FileSpaceResource.java
@@ -32,7 +32,13 @@ import org.apache.juneau.serializer.*;
path="/fileSpace",
title="Available file space resource",
description="Shows how to use HtmlRender class to customize HTML output.",
- pageLinks="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/EnhancedHtmlResource.java'}"
+ htmldoc=@HtmlDoc(
+ links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/EnhancedHtmlResource.java'}",
+ aside=""
+ + "<div style='min-width:200px' class='text'>"
+ + " <p>Shows how you can use <code>HtmlRender</code> class to customize the output generated by the HTML serializer.</p>"
+ + "</div>"
+ )
)
public class FileSpaceResource extends Resource {
private static final long serialVersionUID = 1L;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 49e9a06..d062eda 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
@@ -20,10 +20,17 @@ import org.apache.juneau.rest.annotation.*;
*/
@RestResource(
messages="nls/HelloWorldResource",
- title="Hello World sample resource",
- description="Simplest possible resource",
+ title="Hello World",
+ description="An example of the simplest-possible resource",
path="/helloWorld",
- pageLinks="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/HelloWorldResource.java'}"
+ 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>"
+ )
)
public class HelloWorldResource extends Resource {
private static final long serialVersionUID = 1L;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 9e71264..6b1fffb 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
@@ -15,6 +15,7 @@ package org.apache.juneau.examples.rest;
import org.apache.juneau.dto.jsonschema.*;
import org.apache.juneau.microservice.*;
import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.widget.*;
/**
* Sample resource that shows how to serialize JSON-Schema documents.
@@ -24,7 +25,17 @@ import org.apache.juneau.rest.annotation.*;
messages="nls/JsonSchemaResource",
title="Sample JSON-Schema document",
description="Sample resource that shows how to generate JSON-Schema documents",
- pageLinks="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/JsonSchemaResource.java'}"
+ htmldoc=@HtmlDoc(
+ links="{up:'request:/..',options:'servlet:/?method=OPTIONS',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>"
+ + " <p>$W{contentTypeLinks}</p>"
+ + "</div>"
+ ),
+ widgets={
+ ContentTypeLinksWidget.class
+ }
)
public class JsonSchemaResource extends ResourceJena {
private static final long serialVersionUID = 1L;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 f396cd8..3c8c789 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
@@ -26,7 +26,14 @@ import org.apache.juneau.rest.annotation.Method;
@RestResource(
path="/methodExample",
messages="nls/MethodExampleResource",
- pageLinks="{up:'servlet:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/MethodExampleResource.java'}"
+ 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>The top-level path simply redirects to the first example method and spits out the results as a string.</p>"
+ + "</div>"
+ )
)
public class MethodExampleResource extends Resource {
private static final long serialVersionUID = 1L;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 f8875ff..0121c84 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
@@ -13,6 +13,7 @@
package org.apache.juneau.examples.rest;
import static javax.servlet.http.HttpServletResponse.*;
+import static org.apache.juneau.html.HtmlSerializerContext.*;
import java.awt.image.*;
import java.io.*;
@@ -38,13 +39,24 @@ import org.apache.juneau.serializer.*;
messages="nls/PhotosResource",
title="Photo REST service",
description="Sample resource that allows images to be uploaded and retrieved.",
- pageLinks="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/PhotosResource.java'}"
+ 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>"
+ ),
+ properties={
+ // Make the anchor text on URLs be just the path relative to the servlet.
+ @Property(name=HTML_uriAnchorText, value="SERVLET_RELATIVE")
+ }
)
public class PhotosResource extends Resource {
private static final long serialVersionUID = 1L;
// Our cache of photos
- private Map<Integer,Photo> photos = new TreeMap<Integer,Photo>();
+ private Map<String,Photo> photos = new TreeMap<String,Photo>();
@Override /* Servlet */
public void init() {
@@ -52,7 +64,7 @@ public class PhotosResource extends Resource {
// Preload an image.
InputStream is = getClass().getResourceAsStream("averycutecat.jpg");
BufferedImage image = ImageIO.read(is);
- Photo photo = new Photo(0, image);
+ Photo photo = new Photo("cat", image);
photos.put(photo.id, photo);
} catch (IOException e) {
throw new RuntimeException(e);
@@ -61,16 +73,16 @@ public class PhotosResource extends Resource {
/** Our bean class for storing photos */
public static class Photo {
- int id;
+ String id;
BufferedImage image;
- Photo(int id, BufferedImage image) {
+ Photo(String id, BufferedImage image) {
this.id = id;
this.image = image;
}
public URI getURI() throws URISyntaxException {
- return new URI(""+id);
+ return new URI("servlet:/" + id);
}
}
@@ -82,7 +94,7 @@ public class PhotosResource extends Resource {
/** GET request handler for single photo */
@RestMethod(name="GET", path="/{id}", serializers=ImageSerializer.class, summary="Get a photo by ID")
- public BufferedImage getPhoto(@Path int id) throws Exception {
+ public BufferedImage getPhoto(@Path String id) throws Exception {
Photo p = photos.get(id);
if (p == null)
throw new RestException(SC_NOT_FOUND, "Photo not found");
@@ -90,24 +102,23 @@ public class PhotosResource extends Resource {
}
/** PUT request handler */
- @RestMethod(name="PUT", path="/{id}", parsers=ImageParser.class, summary="Add a photo")
- public String addPhoto(@Path int id, @Body BufferedImage image) throws Exception {
+ @RestMethod(name="PUT", path="/{id}", parsers=ImageParser.class, summary="Add or overwrite a photo")
+ public String addPhoto(@Path String id, @Body BufferedImage image) throws Exception {
photos.put(id, new Photo(id, image));
return "OK";
}
-
+
/** POST request handler */
- @RestMethod(name="POST", path="/", parsers=ImageParser.class, summary="Overwrite a photo by ID")
+ @RestMethod(name="POST", path="/", parsers=ImageParser.class, summary="Add a photo")
public Photo setPhoto(@Body BufferedImage image) throws Exception {
- int id = photos.size();
- Photo p = new Photo(id, image);
- photos.put(id, p);
+ Photo p = new Photo(UUID.randomUUID().toString(), image);
+ photos.put(p.id, p);
return p;
}
/** DELETE request handler */
@RestMethod(name="DELETE", path="/{id}", summary="Delete a photo by ID")
- public String deletePhoto(@Path int id) throws Exception {
+ public String deletePhoto(@Path String id) throws Exception {
Photo p = photos.remove(id);
if (p == null)
throw new RestException(SC_NOT_FOUND, "Photo not found");
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 84c7d7a..e17458a 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
@@ -31,7 +31,15 @@ import org.apache.juneau.transforms.*;
path="/echo",
title="Request echo service",
description="Echos the current HttpServletRequest object back to the browser.",
- pageLinks="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/RequestEchoResource.java'}",
+ htmldoc=@HtmlDoc(
+ links="{up:'request:/..',options:'servlet:/?method=OPTIONS',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"),
@Property(name=SERIALIZER_detectRecursions, value="true")
@@ -52,7 +60,7 @@ public class RequestEchoResource extends Resource {
@RestMethod(name="*", path="/*", converters={Traversable.class,Queryable.class}, summary="Serializes the incoming HttpServletRequest object.")
public HttpServletRequest doGet(RestRequest req, RestResponse res, @Properties ObjectMap properties) {
// Set the HtmlDocSerializer title programmatically.
- res.setPageTitle("Contents of HttpServletRequest object");
+ res.setHtmlTitle("Contents of HttpServletRequest object");
// Just echo the request back as the response.
return req;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 726ae3b..2637411 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
@@ -16,6 +16,7 @@ import org.apache.juneau.examples.rest.addressbook.*;
import org.apache.juneau.microservice.*;
import org.apache.juneau.microservice.resources.*;
import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.widget.*;
/**
* Sample REST resource showing how to implement a "router" resource page.
@@ -23,8 +24,24 @@ import org.apache.juneau.rest.annotation.*;
@RestResource(
path="/",
title="Root resources",
- description="This is an example of a router resource that is used to access other resources.",
- pageLinks="{options:'?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/RootResources.java'}",
+ description="Example of a router resource page.",
+ htmldoc=@HtmlDoc(
+ links="{options:'?method=OPTIONS',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'>SOURCE</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.</p>"
+ + " <p>Other features (such as this aside) are added through annotations.</p>"
+ + "</div>",
+ footer="$W{poweredByJuneau}"
+ ),
+ widgets={
+ PoweredByJuneauWidget.class,
+ ContentTypeLinksWidget.class
+ },
children={
HelloWorldResource.class,
SystemPropertiesResource.class,
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 dd8da66..9451692 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
@@ -28,8 +28,17 @@ import org.apache.juneau.rest.remoteable.*;
path="/remoteable",
messages="nls/SampleRemoteableServlet",
title="Remoteable Service Proxy API",
- description="Sample class showing how to use remoteable proxies. The list below are exposed services that can be retrieved using RestClient.getProxyInterface(Class).",
- pageLinks="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/SampleRemoteableServlet.java'}",
+ 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>"
+ ),
properties={
// Allow us to use method=POST from a browser.
@Property(name=REST_allowMethodParam, value="*")
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 ea7c661..54a5415 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
@@ -35,7 +35,14 @@ 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",
- pageLinks="{up:'request:/..',options:'servlet:/..',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/SqlQueryResource.java'}"
+ 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>"
+ )
)
public class SqlQueryResource extends Resource {
private static final long serialVersionUID = 1L;
@@ -63,7 +70,7 @@ public class SqlQueryResource extends Resource {
/** GET request handler - Display the query entry page. */
@RestMethod(name="GET", path="/", summary="Display the query entry page")
- public Div doGet(RestRequest req) {
+ public Div doGet(RestRequest req, @Query("sql") String sql) {
return div(
script("text/javascript",
"\n // Quick and dirty function to allow tabs in textarea."
@@ -93,7 +100,7 @@ public class SqlQueryResource extends Resource {
),
tr(
td().colspan(5).children(
- textarea().name("sql").style("width:100%;height:200px;font-family:Courier;font-size:9pt;").onkeydown("checkTab(event)")
+ textarea().name("sql").text(sql == null ? " " : sql).style("width:100%;height:200px;font-family:Courier;font-size:9pt;").onkeydown("checkTab(event)")
)
)
)
@@ -114,8 +121,6 @@ public class SqlQueryResource extends Resource {
if (isEmpty(in.sql))
return results;
- System.err.println("SQL=["+in.sql+"]");
-
if (in.pos < 1 || in.pos > 10000)
throw new RestException(SC_BAD_REQUEST, "Invalid value for position. Must be between 1-10000");
if (in.limit < 1 || in.limit > 10000)
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 4b494ac..8cb01e5 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
@@ -19,7 +19,6 @@ import java.util.*;
import java.util.Map;
import org.apache.juneau.dto.html5.*;
-import org.apache.juneau.dto.swagger.*;
import org.apache.juneau.encoders.*;
import org.apache.juneau.microservice.*;
import org.apache.juneau.rest.*;
@@ -38,7 +37,14 @@ import org.apache.juneau.rest.annotation.Body;
// "request:/..." URIs are relative to the request URI.
// "servlet:/..." URIs are relative to the servlet URI.
// "$C{...}" variables are pulled from the config file.
- pageLinks="{up:'request:/..',options:'servlet:/?method=OPTIONS',form:'servlet:/formPage',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/SystemPropertiesResource.java'}",
+ htmldoc=@HtmlDoc(
+ links="{up:'request:/..',options:'servlet:/?method=OPTIONS',form:'servlet:/formPage',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/SystemPropertiesResource.java'}",
+ aside=""
+ + "<div style='max-width:800px' class='text'>"
+ + " <p>Shows standard GET/PUT/POST/DELETE operations and use of Swagger annotations.</p>"
+ + "</div>",
+ css="aside {display:table-caption;}"
+ ),
// Properties that get applied to all serializers and parsers.
properties={
@@ -52,12 +58,14 @@ import org.apache.juneau.rest.annotation.Body;
// Support GZIP encoding on Accept-Encoding header.
encoders=GzipEncoder.class,
- contact="{name:'John Smith',email:'john@smith.com'}",
- license="{name:'Apache 2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'}",
- version="2.0",
- termsOfService="You're on your own.",
- tags="[{name:'Java',description:'Java utility',externalDocs:{description:'Home page',url:'http://juneau.apache.org'}}]",
- externalDocs="{description:'Home page',url:'http://juneau.apache.org'}"
+ swagger=@ResourceSwagger(
+ contact="{name:'John Smith',email:'john@smith.com'}",
+ license="{name:'Apache 2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'}",
+ version="2.0",
+ termsOfService="You're on your own.",
+ tags="[{name:'Java',description:'Java utility',externalDocs:{description:'Home page',url:'http://juneau.apache.org'}}]",
+ externalDocs="{description:'Home page',url:'http://juneau.apache.org'}"
+ )
)
public class SystemPropertiesResource extends Resource {
private static final long serialVersionUID = 1L;
@@ -66,12 +74,14 @@ public class SystemPropertiesResource extends Resource {
name="GET", path="/",
summary="Show all system properties",
description="Returns all system properties defined in the JVM.",
- parameters={
- @Parameter(in="query", name="sort", description="Sort results alphabetically.", _default="false")
- },
- responses={
- @Response(value=200, description="Returns a map of key/value pairs.")
- }
+ swagger=@MethodSwagger(
+ parameters={
+ @Parameter(in="query", name="sort", description="Sort results alphabetically.", _default="false")
+ },
+ responses={
+ @Response(value=200, description="Returns a map of key/value pairs.")
+ }
+ )
)
@SuppressWarnings({"rawtypes", "unchecked"})
public Map getSystemProperties(@Query("sort") boolean sort) throws Throwable {
@@ -84,12 +94,14 @@ public class SystemPropertiesResource extends Resource {
name="GET", path="/{propertyName}",
summary="Get system property",
description="Returns the value of the specified system property.",
- parameters={
- @Parameter(in="path", name="propertyName", description="The system property name.")
- },
- responses={
- @Response(value=200, description="The system property value, or null if not found.")
- }
+ swagger=@MethodSwagger(
+ parameters={
+ @Parameter(in="path", name="propertyName", description="The system property name.")
+ },
+ responses={
+ @Response(value=200, description="The system property value, or null if not found.")
+ }
+ )
)
public String getSystemProperty(@Path String propertyName) throws Throwable {
return System.getProperty(propertyName);
@@ -100,22 +112,24 @@ public class SystemPropertiesResource extends Resource {
summary="Replace system property",
description="Sets a new value for the specified system property.",
guards=AdminGuard.class,
- parameters={
- @Parameter(in="path", name="propertyName", description="The system property name."),
- @Parameter(in="body", description="The new system property value."),
- },
- responses={
- @Response(value=302,
- headers={
- @Parameter(name="Location", description="The root URL of this resource.")
- }
- ),
- @Response(value=403, description="User is not an admin.")
- }
+ swagger=@MethodSwagger(
+ parameters={
+ @Parameter(in="path", name="propertyName", description="The system property name."),
+ @Parameter(in="body", description="The new system property value."),
+ },
+ responses={
+ @Response(value=302,
+ headers={
+ @Parameter(name="Location", description="The root URL of this resource.")
+ }
+ ),
+ @Response(value=403, description="User is not an admin.")
+ }
+ )
)
public Redirect setSystemProperty(@Path String propertyName, @Body String value) {
System.setProperty(propertyName, value);
- return new Redirect();
+ return new Redirect("servlet:/");
}
@RestMethod(
@@ -123,22 +137,24 @@ public class SystemPropertiesResource extends Resource {
summary="Add an entire set of system properties",
description="Takes in a map of key/value pairs and creates a set of new system properties.",
guards=AdminGuard.class,
- parameters={
- @Parameter(in="path", name="propertyName", description="The system property key."),
- @Parameter(in="body", description="The new system property values.", schema="{example:{key1:'val1',key2:123}}"),
- },
- responses={
- @Response(value=302,
- headers={
- @Parameter(name="Location", description="The root URL of this resource.")
- }
- ),
- @Response(value=403, description="Unauthorized: User is not an admin.")
- }
+ swagger=@MethodSwagger(
+ parameters={
+ @Parameter(in="path", name="propertyName", description="The system property key."),
+ @Parameter(in="body", description="The new system property values.", schema="{example:{key1:'val1',key2:123}}"),
+ },
+ responses={
+ @Response(value=302,
+ headers={
+ @Parameter(name="Location", description="The root URL of this resource.")
+ }
+ ),
+ @Response(value=403, description="Unauthorized: User is not an admin.")
+ }
+ )
)
public Redirect setSystemProperties(@Body java.util.Properties newProperties) {
System.setProperties(newProperties);
- return new Redirect();
+ return new Redirect("servlet:/");
}
@RestMethod(
@@ -146,38 +162,37 @@ public class SystemPropertiesResource extends Resource {
summary="Delete system property",
description="Deletes the specified system property.",
guards=AdminGuard.class,
- parameters={
- @Parameter(in="path", name="propertyName", description="The system property name."),
- },
- responses={
- @Response(value=302,
- headers={
- @Parameter(name="Location", description="The root URL of this resource.")
- }
- ),
- @Response(value=403, description="Unauthorized: User is not an admin")
- }
+ swagger=@MethodSwagger(
+ parameters={
+ @Parameter(in="path", name="propertyName", description="The system property name."),
+ },
+ responses={
+ @Response(value=302,
+ headers={
+ @Parameter(name="Location", description="The root URL of this resource.")
+ }
+ ),
+ @Response(value=403, description="Unauthorized: User is not an admin")
+ }
+ )
)
public Redirect deleteSystemProperty(@Path String propertyName) {
System.clearProperty(propertyName);
- return new Redirect();
+ return new Redirect("servlet:/");
}
- @Override
- @RestMethod(
- name="OPTIONS", path="/*",
- summary="Show resource options",
- description="Show resource options as a Swagger doc"
- )
- public Swagger getOptions(RestRequest req) {
- return req.getSwagger();
- }
-
@RestMethod(
name="GET", path="/formPage",
summary="Form entry page",
description="A form post page for setting a single system property value",
- guards=AdminGuard.class
+ 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>",
+ css="aside {display:table-cell;}"
+ )
)
public Form getFormPage() {
return form().method("POST").action("formPagePost").children(
@@ -195,6 +210,6 @@ public class SystemPropertiesResource extends Resource {
)
public Redirect formPagePost(@FormData("name") String name, @FormData("value") String value) {
System.setProperty(name, value);
- return new Redirect();
+ return new Redirect("servlet:/");
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 e3ac5bd..f6f949d 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
@@ -30,7 +30,14 @@ import org.apache.juneau.utils.*;
path="/tempDir",
title="Temp Directory View Service",
description="View and download files in the '$S{java.io.tmpdir}' directory.",
- pageLinks="{up:'request:/..',options:'servlet:/?method=OPTIONS',upload:'servlet:/upload',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/TempDirResource.java'}",
+ htmldoc=@HtmlDoc(
+ links="{up:'request:/..',options:'servlet:/?method=OPTIONS',upload:'servlet:/upload',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}"),
@Property(name="allowViews", value="true"),
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 62920fb..2e98fdf 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
@@ -24,14 +24,23 @@ import org.apache.juneau.rest.client.*;
messages="nls/TumblrParserResource",
title="Tumblr parser service",
description="Specify a URL to a Tumblr blog and parse the results.",
- pageLinks="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/TumblrParserResource.java'}"
+ 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>"
+ )
)
public class TumblrParserResource extends Resource {
private static final long serialVersionUID = 1L;
+
+ private static final int MAX_POSTS = 100;
@RestMethod(name="GET", path="/", summary="Get the instructions page")
public String getInstructions() throws Exception {
- return "Append the Tumblr blog name to the URL above (e.g. /juneau/sample/tumblrParser/mytumblrblog)";
+ return "Append the Tumblr blog name to the URL above (e.g. /tumblrParser/mytumblrblog)";
}
@RestMethod(name="GET", path="/{blogName}", summary="Parse the specified blog")
@@ -41,7 +50,7 @@ public class TumblrParserResource extends Resource {
try {
String site = "http://" + blogName + ".tumblr.com/api/read/json";
ObjectMap m = rc.doGet(site).getResponse(ObjectMap.class);
- int postsTotal = m.getInt("posts-total");
+ int postsTotal = Math.min(m.getInt("posts-total"), MAX_POSTS);
for (int i = 0; i < postsTotal; i += 20) {
m = rc.doGet(site + "?start=" + i + "&num=20&filter=text").getResponse(ObjectMap.class);
ObjectList ol = m.getObjectList("posts");
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 06541ab..95b2198 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
@@ -32,7 +32,14 @@ import org.apache.juneau.transforms.*;
messages="nls/UrlEncodedFormResource",
title="Tumblr parser service",
description="Specify a URL to a Tumblr blog and parse the results.",
- pageLinks="{up:'request:/..',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/UrlEncodedFormResource.java'}"
+ 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>"
+ )
)
public class UrlEncodedFormResource extends Resource {
private static final long serialVersionUID = 1L;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/f4812b7c/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 d228173..6677c29 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
@@ -23,7 +23,6 @@ import java.util.*;
import org.apache.juneau.*;
import org.apache.juneau.dto.*;
import org.apache.juneau.dto.cognos.*;
-import org.apache.juneau.dto.swagger.*;
import org.apache.juneau.encoders.*;
import org.apache.juneau.examples.addressbook.*;
import org.apache.juneau.examples.rest.*;
@@ -31,6 +30,7 @@ import org.apache.juneau.microservice.*;
import org.apache.juneau.rest.*;
import org.apache.juneau.rest.annotation.*;
import org.apache.juneau.rest.converters.*;
+import org.apache.juneau.rest.widget.*;
import org.apache.juneau.transform.*;
import org.apache.juneau.utils.*;
@@ -47,7 +47,28 @@ import org.apache.juneau.utils.*;
// "request:/..." URIs are relative to the request URI.
// "servlet:/..." URIs are relative to the servlet URI.
// "$C{...}" variables are pulled from the config file.
- pageLinks="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java'}",
+ htmldoc=@HtmlDoc(
+ links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java'}",
+ 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>"
+ + " <p style='text-weight:bold;text-decoration:underline;'>Available Content Types</p>"
+ + " $W{contentTypeLinks}"
+ + "</div>",
+ footer="$W{poweredByJuneau}"
+ ),
+
+ // Widgets for $W variables above.
+ widgets={
+ PoweredByJuneauWidget.class,
+ ContentTypeLinksWidget.class
+ },
// Properties that get applied to all serializers and parsers.
properties={
@@ -78,12 +99,14 @@ import org.apache.juneau.utils.*;
encoders=GzipEncoder.class,
// Swagger info.
- contact="{name:'John Smith',email:'john@smith.com'}",
- license="{name:'Apache 2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'}",
- version="2.0",
- termsOfService="You're on your own.",
- tags="[{name:'Java',description:'Java utility',externalDocs:{description:'Home page',url:'http://juneau.apache.org'}}]",
- externalDocs="{description:'Home page',url:'http://juneau.apache.org'}"
+ swagger=@ResourceSwagger(
+ contact="{name:'John Smith',email:'john@smith.com'}",
+ license="{name:'Apache 2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'}",
+ version="2.0",
+ termsOfService="You're on your own.",
+ tags="[{name:'Java',description:'Java utility',externalDocs:{description:'Home page',url:'http://juneau.apache.org'}}]",
+ externalDocs="{description:'Home page',url:'http://juneau.apache.org'}"
+ )
)
public class AddressBookResource extends ResourceJena {
private static final long serialVersionUID = 1L;
@@ -307,16 +330,6 @@ public class AddressBookResource extends ResourceJena {
return addressBook;
}
- /**
- * [OPTIONS /*]
- * View resource options
- */
- @Override /* RestServletJenaDefault */
- @RestMethod(name="OPTIONS", path="/*")
- public Swagger getOptions(RestRequest req) {
- return req.getSwagger();
- }
-
/** Convenience method - Find a person by ID */
private Person findPerson(int id) throws RestException {
Person p = addressBook.findPerson(id);