Simplified syntax for HtmlDoc.links() and other annotations. Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/ffda0552 Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/ffda0552 Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/ffda0552
Branch: refs/heads/master Commit: ffda0552d3104108305b52bda21e3a9e7200ca0b Parents: fac3eb9 Author: JamesBognar <[email protected]> Authored: Sun Jul 9 20:07:18 2017 -0400 Committer: JamesBognar <[email protected]> Committed: Sun Jul 9 20:07:18 2017 -0400 ---------------------------------------------------------------------- .../main/java/org/apache/juneau/ObjectMap.java | 10 +- .../apache/juneau/dto/jsonschema/package.html | 4 +- .../juneau/html/HtmlDocSerializerContext.java | 68 ++++++---- .../juneau/html/HtmlDocSerializerSession.java | 9 +- .../juneau/html/HtmlDocTemplateBasic.java | 94 +++++++------- .../org/apache/juneau/html/HtmlSerializer.java | 10 +- .../juneau/serializer/SerializerWriter.java | 15 ++- .../apache/juneau/soap/SoapXmlSerializer.java | 1 + juneau-core/src/main/javadoc/overview.html | 125 ++++++++++++++++--- .../juneau/examples/rest/AtomFeedResource.java | 8 +- .../examples/rest/CodeFormatterResource.java | 17 ++- .../juneau/examples/rest/DirectoryResource.java | 8 +- .../examples/rest/DockerRegistryResource.java | 17 ++- .../examples/rest/HelloWorldResource.java | 17 ++- .../examples/rest/JsonSchemaResource.java | 17 ++- .../examples/rest/MethodExampleResource.java | 17 ++- .../juneau/examples/rest/PetStoreResource.java | 39 +++--- .../juneau/examples/rest/PhotosResource.java | 17 ++- .../examples/rest/RequestEchoResource.java | 21 ++-- .../juneau/examples/rest/RootResources.java | 31 ++--- .../examples/rest/SampleRemoteableServlet.java | 21 ++-- .../juneau/examples/rest/SqlQueryResource.java | 20 ++- .../examples/rest/SystemPropertiesResource.java | 39 +++--- .../juneau/examples/rest/TempDirResource.java | 20 ++- .../examples/rest/TumblrParserResource.java | 17 ++- .../examples/rest/UrlEncodedFormResource.java | 45 ++++--- .../rest/addressbook/AddressBookResource.java | 47 +++++-- .../apache/juneau/examples/rest/PetStore.json | 10 +- .../apache/juneau/microservice/Resource.java | 5 +- .../juneau/microservice/ResourceGroup.java | 5 +- .../juneau/microservice/ResourceJena.java | 5 +- .../juneau/microservice/ResourceJenaGroup.java | 5 +- .../microservice/resources/ConfigResource.java | 6 +- .../resources/DirectoryResource.java | 10 +- .../java/org/apache/juneau/rest/CallMethod.java | 42 ++++--- .../java/org/apache/juneau/rest/RestConfig.java | 35 +++--- .../org/apache/juneau/rest/RestContext.java | 10 +- .../org/apache/juneau/rest/RestRequest.java | 8 +- .../org/apache/juneau/rest/RestResponse.java | 5 +- .../apache/juneau/rest/RestServletDefault.java | 5 +- .../apache/juneau/rest/annotation/HtmlDoc.java | 77 +++++++++--- .../juneau/rest/annotation/RestResource.java | 31 +++-- .../rest/jena/RestServletJenaDefault.java | 5 +- .../java/org/apache/juneau/rest/package.html | 27 +++- .../juneau/rest/widget/ContentTypeMenuItem.java | 9 +- .../juneau/rest/widget/QueryMenuItem.java | 11 +- .../juneau/rest/widget/StyleMenuItem.java | 9 +- .../org/apache/juneau/rest/widget/Widget.java | 8 +- .../org/apache/juneau/rest/styles/devops.css | 10 +- .../org/apache/juneau/rest/styles/light.css | 22 ++-- .../juneau/rest/widget/MenuItemWidget.css | 2 +- .../apache/juneau/rest/widget/MenuItemWidget.js | 3 +- .../apache/juneau/rest/widget/QueryMenuItem.css | 36 +++--- .../juneau/rest/widget/QueryMenuItem.html | 3 +- 54 files changed, 771 insertions(+), 387 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java b/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java index 5897e4c..dad67b0 100644 --- a/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java +++ b/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java @@ -654,9 +654,15 @@ public class ObjectMap extends LinkedHashMap<String,Object> { Object s = get(Object.class, key); if (s == null) return def; + String[] r = null; if (s instanceof Collection) - return ArrayUtils.toStringArray((Collection<?>)s); - String[] r = split(StringUtils.toString(s)); + r = ArrayUtils.toStringArray((Collection<?>)s); + else if (s instanceof String[]) + r = (String[])s; + else if (s instanceof Object[]) + r = ArrayUtils.toStringArray(Arrays.asList((Object[])s)); + else + r = split(StringUtils.toString(s)); return (r.length == 0 ? def : r); } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/package.html ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/package.html b/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/package.html index 464b388..a70f4ff 100644 --- a/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/package.html +++ b/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/package.html @@ -423,7 +423,9 @@ messages=<js>"nls/JsonSchemaResource"</js>, title=<js>"Sample JSON-Schema document"</js>, htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{options:'?method=OPTIONS'}"</js> + links={ + <js>"options: ?method=OPTIONS"</js> + } ) ) <jk>public class</jk> JsonSchemaResource <jk>extends</jk> RestServletJenaDefault { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java index 0fba6e3..daa225a 100644 --- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java +++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java @@ -12,8 +12,6 @@ // *************************************************************************************************************************** package org.apache.juneau.html; -import java.util.*; - import org.apache.juneau.*; /** @@ -44,7 +42,10 @@ import org.apache.juneau.*; * htmldoc=<ja>@HtmlDoc</ja>( * title=<js>"$L{title}"</js>, * description=<js>"$L{description}"</js>, - * links=<js>"{options:'?method=OPTIONS',doc:'doc'}"</js> + * links={ + * <js>"options: ?method=OPTIONS"</js>, + * <js>"doc: doc"</js> + * } * ) * ) * </p> @@ -235,7 +236,9 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext { * <p class='bcode'> * <ja>@RestResource</ja>( * htmldoc=<ja>@HtmlDoc</ja>( - * nav=<js>"<p class='special-navigation'>This is my special navigation content</p>"</js> + * header={ + * <js>"<h1>My own header</h1>"</js> + * } * ) * ) * </p> @@ -253,9 +256,9 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext { * <b>Configuration property:</b> Page links. * * <ul> - * <li><b>Name:</b> <js>"HtmlDocSerializer.links.map"</js> - * <li><b>Data type:</b> <code>Map<String,String></code> - * <li><b>Default:</b> empty map + * <li><b>Name:</b> <js>"HtmlDocSerializer.links.list"</js> + * <li><b>Data type:</b> <code>String[]</code> + * <li><b>Default:</b> empty array * <li><b>Session-overridable:</b> <jk>true</jk> * </ul> * @@ -266,7 +269,12 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext { * This can be used to provide convenient hyperlinks when viewing the REST interface from a browser. * * <p> - * The value is a JSON object string where the keys are anchor text and the values are URLs. + * The value is an array of strings with two possible values: + * <ul> + * <li>A key-value pair representing a hyperlink label and href: + * <br><js>"google: http://google.com"</js> + * <li>Arbitrary HTML. + * </ul> * * <p> * Relative URLs are considered relative to the servlet path. @@ -283,7 +291,7 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext { * <ja>@RestResource</ja>( * properties={ * <ja>@Property</ja>(name=HtmlDocSerializerContext.<jsf>HTMLDOC_links</jsf>, - * value=<js>"{options:'?method=OPTIONS',doc:'doc'}"</js>) + * value=<js>"['options: ?method=OPTIONS', 'doc: doc']"</js>) * } * ) * <jk>public class</jk> AddressBookResource <jk>extends</jk> RestServletJenaDefault { @@ -298,21 +306,21 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext { * <p class='bcode'> * <ja>@RestResource</ja>( * htmldoc=@HtmlDoc( - * links=<js>"{options:'?method=OPTIONS',doc:'doc'}"</js> + * links={ + * <js>"options: ?method=OPTIONS"</js>, + * <js>"doc: doc"</js> + * } * ) * ) * <jk>public class</jk> AddressBookResource <jk>extends</jk> RestServletJenaDefault { * </p> - * - * <p> - * Values that start with <js>'<'</js> are assumed to be HTML and rendered as-is. */ - public static final String HTMLDOC_links = "HtmlDocSerializer.links.map"; + public static final String HTMLDOC_links = "HtmlDocSerializer.links.list"; /** * <b>Configuration property:</b> Add to the {@link #HTMLDOC_links} property. */ - public static final String HTMLDOC_links_put = "HtmlDocSerializer.links.map.put"; + public static final String HTMLDOC_links_add = "HtmlDocSerializer.links.list.add"; /** * <b>Configuration property:</b> Nav section contents. @@ -332,7 +340,9 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext { * <p class='bcode'> * <ja>@RestResource</ja>( * htmldoc=<ja>@HtmlDoc</ja>( - * nav=<js>"<p class='special-navigation'>This is my special navigation content</p>"</js> + * nav={ + * <js>"<p class='special-navigation'>This is my special navigation content</p>"</js> + * } * ) * ) * </p> @@ -367,7 +377,13 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext { * <p class='bcode'> * <ja>@RestResource</ja>( * htmldoc=<ja>@HtmlDoc</ja>( - * aside=<js>"<ul><li>Item 1<li>Item 2<li>Item 3</ul>"</js> + * aside={ + * <js>"<ul>"</js>, + * <js>" <li>Item 1"</js>, + * <js>" <li>Item 2"</js>, + * <js>" <li>Item 3"</js>, + * <js>"</ul>"</js> + * } * ) * ) * </p> @@ -397,7 +413,9 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext { * <p class='bcode'> * <ja>@RestResource</ja>( * htmldoc=<ja>@HtmlDoc</ja>( - * footer=<js>"<b>This interface is great!</b>"</js> + * footer={ + * <js>"<b>This interface is great!</b>"</js> + * } * ) * ) * </p> @@ -503,7 +521,10 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext { * <p class='bcode'> * <ja>@RestResource</ja>( * htmldoc=@HtmlDoc( - * style=<js>"h3 { color: red; }\nh5 { font-weight: bold; }"</js> + * style={ + * <js>"h3 { color: red; }"</js>, + * <js>"h5 { font-weight: bold; }"</js> + * } * ) * ) * </p> @@ -543,7 +564,9 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext { * <p class='bcode'> * <ja>@RestResource</ja>( * htmldoc=@HtmlDoc( - * script=<js>"alert('hello!');"</js> + * script={ + * <js>"alert('hello!');"</js> + * } * ) * ) * </p> @@ -584,8 +607,7 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext { public static final String HTMLDOC_template = "HtmlDocSerializer.template"; - final String[] style, stylesheet, script; - final Map<String,Object> links; + final String[] style, stylesheet, script, links; final String title, description, branding, header, nav, aside, footer, noResultsMessage; final boolean nowrap; final HtmlDocTemplate template; @@ -611,7 +633,7 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext { aside = ps.getProperty(HTMLDOC_aside, String.class, null); footer = ps.getProperty(HTMLDOC_footer, String.class, null); nowrap = ps.getProperty(HTMLDOC_nowrap, boolean.class, false); - links = ps.getMap(HTMLDOC_links, String.class, Object.class, null); + links = ps.getProperty(HTMLDOC_links, String[].class, new String[0]); noResultsMessage = ps.getProperty(HTMLDOC_noResultsMessage, String.class, "<p>no results</p>"); template = ps.getTypedProperty(HTMLDOC_template, HtmlDocTemplate.class, HtmlDocTemplateBasic.class); } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java index 66dbe25..a7f3050 100644 --- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java +++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java @@ -35,8 +35,7 @@ import org.apache.juneau.serializer.*; public final class HtmlDocSerializerSession extends HtmlSerializerSession { private final String title, description, branding, header, nav, aside, footer, noResultsMessage; - private final String[] style, stylesheet, script; - private final Map<String,Object> links; + private final String[] style, stylesheet, script, links; private final boolean nowrap; private final HtmlDocTemplate template; @@ -64,7 +63,6 @@ public final class HtmlDocSerializerSession extends HtmlSerializerSession { * The URI context. * Identifies the current request URI used for resolution of URIs to absolute or root-relative form. */ - @SuppressWarnings({ "unchecked", "rawtypes" }) protected HtmlDocSerializerSession(HtmlDocSerializerContext ctx, ObjectMap op, Object output, Method javaMethod, Locale locale, TimeZone timeZone, MediaType mediaType, UriContext uriContext) { super(ctx, op, output, javaMethod, locale, timeZone, mediaType, uriContext); @@ -91,8 +89,7 @@ public final class HtmlDocSerializerSession extends HtmlSerializerSession { nav = op.getString(HTMLDOC_nav, ctx.nav); aside = op.getString(HTMLDOC_aside, ctx.aside); footer = op.getString(HTMLDOC_footer, ctx.footer); - Map m = op.getMap(HTMLDOC_links, ctx.links); - links = ObjectUtils.isEmpty(m) ? null : new LinkedHashMap(m); + links = op.getStringArray(HTMLDOC_links, ctx.links); style = op.getStringArray(HTMLDOC_style, ctx.style); stylesheet = op.getStringArray(HTMLDOC_stylesheet, ctx.stylesheet); script = op.getStringArray(HTMLDOC_script, ctx.script); @@ -202,7 +199,7 @@ public final class HtmlDocSerializerSession extends HtmlSerializerSession { * <jk>null</jk> if not specified. * Never an empty map. */ - public final Map<String,Object> getLinks() { + public final String[] getLinks() { return links; } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocTemplateBasic.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocTemplateBasic.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocTemplateBasic.java index 616e5d8..b287458 100644 --- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocTemplateBasic.java +++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocTemplateBasic.java @@ -12,8 +12,6 @@ // *************************************************************************************************************************** package org.apache.juneau.html; -import java.util.Map; - import org.apache.juneau.internal.*; /** @@ -27,14 +25,14 @@ public class HtmlDocTemplateBasic implements HtmlDocTemplate { @Override /* HtmlDocTemplate */ public void head(HtmlDocSerializerSession session, HtmlWriter w, HtmlDocSerializer s, Object o) throws Exception { if (hasStyle(session)) { - w.sTag(1, "style").nl(1); + w.sTag(2, "style").nl(2); style(session, w, s, o); - w.ie(1).eTag("style").nl(1); + w.ie(2).eTag("style").nl(2); } if (hasScript(session)) { - w.sTag(1, "script").nl(1); + w.sTag(2, "script").nl(2); script(session, w, s, o); - w.ie(1).eTag("script").nl(1); + w.ie(2).eTag("script").nl(2); } } @@ -44,14 +42,14 @@ public class HtmlDocTemplateBasic implements HtmlDocTemplate { String[] stylesheet = session.getStylesheet(); if (! ArrayUtils.contains("NONE", stylesheet)) for (String ss : stylesheet) - w.append(2, "@import ").q().append(session.resolveUri(ss)).q().appendln("; "); + w.append(3, "@import ").q().append(session.resolveUri(ss)).q().appendln("; "); if (session.isNoWrap()) - w.appendln("div.data * {white-space:nowrap;} "); + w.appendln(3, "div.data * {white-space:nowrap;} "); if (session.getStyle() != null) for (String style : session.getStyle()) - w.append(style).appendln(" "); + w.append(3, style).appendln(" "); } @Override /* HtmlDocTemplate */ @@ -59,42 +57,42 @@ public class HtmlDocTemplateBasic implements HtmlDocTemplate { if (session.getScript() != null) for (String script : session.getScript()) - w.append(script); + w.append(3, script); } @Override /* HtmlDocTemplate */ public void body(HtmlDocSerializerSession session, HtmlWriter w, HtmlDocSerializer s, Object o) throws Exception { if (hasHeader(session)) { - w.sTag(1, "header").nl(1); + w.sTag(2, "header").nl(2); header(session, w, s, o); - w.ie(1).eTag("header").nl(1); + w.ie(2).eTag("header").nl(2); } if (hasNav(session)) { - w.sTag(1, "nav").nl(1); + w.sTag(2, "nav").nl(2); nav(session, w, s, o); - w.ie(1).eTag("nav").nl(1); + w.ie(2).eTag("nav").nl(2); } - w.sTag(1, "section").nl(1); + w.sTag(2, "section").nl(2); - w.sTag(2, "article").nl(2); + w.sTag(3, "article").nl(3); article(session, w, s, o); - w.ie(2).eTag("article").nl(2); + w.ie(3).eTag("article").nl(3); if (hasAside(session)) { - w.sTag(2, "aside").nl(2); + w.sTag(3, "aside").nl(3); aside(session, w, s, o); - w.ie(2).eTag("aside").nl(2); + w.ie(3).eTag("aside").nl(3); } - w.ie(1).eTag("section").nl(1); + w.ie(2).eTag("section").nl(2); if (hasFooter(session)) { - w.sTag(1, "footer").nl(1); + w.sTag(2, "footer").nl(2); footer(session, w, s, o); - w.ie(1).eTag("footer").nl(1); + w.ie(2).eTag("footer").nl(2); } } @@ -104,7 +102,7 @@ public class HtmlDocTemplateBasic implements HtmlDocTemplate { String header = session.getHeader(); if (header != null) { if (exists(header)) - w.append(2, header).nl(2); + w.append(3, header).nl(3); } else { String title = session.getTitle(); String description = session.getDescription(); @@ -124,21 +122,28 @@ public class HtmlDocTemplateBasic implements HtmlDocTemplate { String nav = session.getNav(); if (nav != null) { if (exists(nav)) - w.append(2, nav).nl(2); + w.append(3, nav).nl(3); } else { - Map<String,Object> htmlLinks = session.getLinks(); - if (htmlLinks != null) { - w.sTag("ol"); - for (Map.Entry<String,Object> e : htmlLinks.entrySet()) { - w.sTag("li"); - String v = e.getValue().toString(); - if (v.startsWith("<")) - w.append(v); - else - w.oTag("a").attr("href", session.resolveUri(v), true).cTag().text(e.getKey(), true).eTag("a"); - w.eTag("li"); + String[] links = session.getLinks(); + if (links.length > 0) { + w.sTag(3, "ol").nl(3); + for (String l : links) { + w.sTag(4, "li"); + if (l.matches("(?s)\\S+\\:.*")) { + int i = l.indexOf(':'); + String key = l.substring(0, i); + String val = l.substring(i+1).trim(); + if (val.startsWith("<")) + w.nl(4).appendln(5, val); + else + w.oTag("a").attr("href", session.resolveUri(val), true).cTag().text(key, true).eTag("a"); + w.eTag("li").nl(4); + } else { + w.nl(4).appendln(5, l); + w.eTag(4, "li").nl(4); + } } - w.eTag("ol"); + w.eTag(3, "ol").nl(3); } } } @@ -147,35 +152,36 @@ public class HtmlDocTemplateBasic implements HtmlDocTemplate { public void aside(HtmlDocSerializerSession session, HtmlWriter w, HtmlDocSerializer s, Object o) throws Exception { String aside = session.getAside(); if (exists(aside)) - w.append(aside); + w.append(4, aside); } @Override /* HtmlDocTemplate */ public void article(HtmlDocSerializerSession session, HtmlWriter w, HtmlDocSerializer s, Object o) throws Exception { // To allow for page formatting using CSS, we encapsulate the data inside two div tags: // <div class='outerdata'><div class='data' id='data'>...</div></div> - w.oTag(3, "div").attr("class","outerdata").append('>').nl(3); - w.oTag(4, "div").attr("class","data").attr("id", "data").append('>').nl(4); + w.oTag(4, "div").attr("class","outerdata").append('>').nl(4); + w.oTag(5, "div").attr("class","data").attr("id", "data").append('>').nl(5); if (o == null) { - w.append(5, "<null/>").nl(5); + w.append(6, "<null/>").nl(6); } else if (ObjectUtils.isEmpty(o)){ String m = session.getNoResultsMessage(); if (exists(m)) - w.append(5, m).nl(5); + w.append(6, m).nl(6); } else { + session.indent = 6; s.parentSerialize(session, o); } + w.ie(5).eTag("div").nl(5); w.ie(4).eTag("div").nl(4); - w.ie(4).eTag("div").nl(3); } @Override /* HtmlDocTemplate */ public void footer(HtmlDocSerializerSession session, HtmlWriter w, HtmlDocSerializer s, Object o) throws Exception { String footer = session.getFooter(); if (exists(footer)) - w.append(footer); + w.append(3, footer).nl(3); } @Override /* HtmlDocTemplate */ @@ -195,7 +201,7 @@ public class HtmlDocTemplateBasic implements HtmlDocTemplate { @Override /* HtmlDocTemplate */ public boolean hasNav(HtmlDocSerializerSession session) { - return exists(session.getNav()) || session.getLinks() != null; + return exists(session.getNav()) || session.getLinks().length > 0; } @Override /* HtmlDocTemplate */ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java index a6046bf..0bacd20 100644 --- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java +++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java @@ -298,8 +298,12 @@ public class HtmlSerializer extends XmlSerializer { if (render != null) { Object o2 = render.getContent(session, o); - if (o2 != o) - return serializeAnything(session, out, o2, null, typeName, 2, null, false); + if (o2 != o) { + session.indent -= indent; + session.pop(); + out.nl(session.indent); + return serializeAnything(session, out, o2, null, typeName, indent, null, false); + } } if (html.isAsXml() || (pMeta != null && pMeta.getExtendedMeta(HtmlBeanPropertyMeta.class).isAsXml())) { @@ -597,7 +601,7 @@ public class HtmlSerializer extends XmlSerializer { out.attr("style", style); out.cTag(); if (link != null) - out.oTag(i+3, "a").attrUri("href", m2.resolveVars(link)).cTag(); + out.oTag("a").attrUri("href", m2.resolveVars(link)).cTag(); ContentResult cr = serializeAnything(session, out, value, pMeta.getClassMeta(), p.getKey().toString(), 2, pMeta, false); if (cr == CR_NORMAL) out.i(i+2); http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java index ee4f882..41e76d7 100644 --- a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java +++ b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java @@ -14,6 +14,7 @@ package org.apache.juneau.serializer; import java.io.*; import java.net.*; +import java.util.*; import org.apache.juneau.*; @@ -160,8 +161,18 @@ public class SerializerWriter extends Writer { * @return This object (for method chaining). */ private SerializerWriter append(int indent, boolean newline, String text) throws IOException { - i(indent); - out.write(text); + + // If text contains newlines, we break it up into lines and indent them separately. + if (text.indexOf('\n') != -1 && useWhitespace && indent <= maxIndent) { + for (StringTokenizer st = new StringTokenizer(text, "\n"); st.hasMoreTokens();) { + i(indent); + out.write(st.nextToken()); + out.write("\n"); + } + } else { + i(indent); + out.write(text); + } if (newline) nl(indent); return this; http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java b/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java index aa5f6fa..14cb23b 100644 --- a/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java +++ b/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java @@ -70,6 +70,7 @@ public final class SoapXmlSerializer extends XmlSerializer { .attr("xmlns", "soap", s.getProperty(SOAPXML_SOAPAction, "http://www.w3.org/2003/05/soap-envelope")) .appendln(">"); w.sTag(1, "soap", "Body").nl(1); + s.indent += 2; super.doSerialize(s, o); w.ie(1).eTag("soap", "Body").nl(1); w.eTag("soap", "Envelope").nl(0); http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-core/src/main/javadoc/overview.html ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/javadoc/overview.html b/juneau-core/src/main/javadoc/overview.html index 4abc48a..5e65ea2 100644 --- a/juneau-core/src/main/javadoc/overview.html +++ b/juneau-core/src/main/javadoc/overview.html @@ -2478,7 +2478,10 @@ // "request:/..." URIs are relative to the request URI. // "servlet:/..." URIs are relative to the servlet URI.</jc> htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js> + links={ + <js>"up: request:/.."</js>, + <js>"options: servlet:/?method=OPTIONS"</js> + } ), <jc>// Properties that get applied to all serializers and parsers.</jc> @@ -3429,7 +3432,9 @@ path=<js>"/"</js>, messages=<js>"nls/RootResources"</js>, htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{options:'?method=OPTIONS'}"</js> + links={ + <js>"options: ?method=OPTIONS"</js> + } ), children={ HelloWorldResource.<jk>class</jk>, @@ -3535,7 +3540,10 @@ messages=<js>"nls/HelloWorldResource"</js>, path=<js>"/helloWorld"</js>, htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js> + links={ + <js>"up: request:/.."</js>, + <js>"options: servlet:/?method=OPTIONS"</js> + } ) ) <jk>public class</jk> HelloWorldResource <jk>extends</jk> Resource { @@ -3625,7 +3633,10 @@ path=<js>"/methodExample"</js>, messages=<js>"nls/MethodExampleResource"</js>, htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js> + links={ + <js>"up: request:/.."</js>, + <js>"options: servlet:/?method=OPTIONS"</js> + } ) ) <jk>public class</jk> MethodExampleResource <jk>extends</jk> Resource { @@ -3854,7 +3865,9 @@ <p class='bcode'> <ja>@RestResource</ja>( htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{options:'?method=OPTIONS'}"</js> + links={ + <js>"options: servlet:/?method=OPTIONS"</js> + } ) ) </p> @@ -4140,7 +4153,10 @@ path=<js>"/echo"</js>, messages=<js>"nls/RequestEchoResource"</js>, htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js>, + links={ + <js>"up: request:/.."</js>, + <js>"options: servlet:/?method=OPTIONS"</js> + } ), properties={ <ja>@Property</ja>(name=<jsf>SERIALIZER_maxDepth</jsf>, value=<js>"10"</js>), @@ -4664,8 +4680,11 @@ // "servlet:/..." URIs are relative to the servlet URI. // "$C{...}" variables are pulled from the config file.</jc> htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{up:'request:/..', options:'servlet:/?method=OPTIONS', - source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java'}"</js> + links={ + <js>"up: request:/.."</js>, + <js>"options: servlet:/?method=OPTIONS"</js>, + <js>"source: $C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java"</js> + } ), <jc>// Properties that get applied to all serializers and parsers.</jc> @@ -5387,7 +5406,10 @@ description=<js>"Sample class showing how to use remoteable proxies. The list below are exposed services that can be retrieved using RestClient.getProxyInterface(Class)."</js>, htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js> + links={ + <js>"up: request:/.."</js>, + <js>"options: servlet:/?method=OPTIONS"</js> + } ), properties={ <jc>// Allow us to use method=POST from a browser.</jc> @@ -5506,7 +5528,11 @@ path=<js>"/tempDir"</js>, messages=<js>"nls/TempDirResource"</js>, htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{up:'request:/..', options:'servlet:/?method=OPTIONS', upload:'servlet:/upload'}"</js> + links={ + <js>"up: request:/.."</js>, + <js>"options: servlet:/?method=OPTIONS"</js>, + <js>"upload: servlet:/upload"</js> + } ), properties={ <ja>@Property</ja>(name=<js>"DirectoryResource.rootDir"</js>, value=<js>"$S{java.io.tmpdir}"</js>), @@ -5634,7 +5660,10 @@ path=<js>"/atom"</js>, messages=<js>"nls/AtomFeedResource"</js>, htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js> + links={ + <js>"up: request:/.."</js>, + <js>"options: servlet:/?method=OPTIONS"</js> + } ), properties={ <ja>@Property</ja>(name=<jsf>SERIALIZER_quoteChar</jsf>, value=<js>"'"</js>), @@ -5753,7 +5782,10 @@ path=<js>"/docker"</js>, title=<js>"Sample Docker resource"</js>, htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js> + links={ + <js>"up: request:/.."</js>, + <js>"options: servlet:/?method=OPTIONS"</js> + } ) ) <jk>public class</jk> DockerRegistryResource <jk>extends</jk> Resource { @@ -5843,7 +5875,10 @@ title=<js>"Tumblr parser service"</js>, description=<js>"Specify a URL to a Tumblr blog and parse the results."</js>, htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js> + links={ + <js>"up: request:/.."</js>, + <js>"options: servlet:/?method=OPTIONS"</js> + } ) ) <jk>public class</jk> TumblrParserResource <jk>extends</jk> Resource { @@ -5929,7 +5964,9 @@ title=<js>"Photo REST service"</js>, description=<js>"Use a tool like Poster to upload and retrieve jpeg and png images."</js>, htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{options:'?method=OPTIONS'}"</js> + links={ + <js>"options: servlet:/?method=OPTIONS"</js> + } ) ) <jk>public class</jk> PhotosResource <jk>extends</jk> RestServletDefault { @@ -6073,7 +6110,10 @@ messages=<js>"nls/JsonSchemaResource"</js>, title=<js>"Sample JSON-Schema document"</js>, htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js> + links={ + <js>"up: request:/.."</js>, + <js>"options: servlet:/?method=OPTIONS"</js> + } ) ) <jk>public class</jk> JsonSchemaResource <jk>extends</jk> ResourceJena { @@ -6161,7 +6201,10 @@ title=<js>"SQL query service"</js>, description=<js>"Executes queries against the local derby '$C{SqlQueryResource/connectionUrl}' database"</js>, htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{up:'request:/..',options:'servlet:/?method=OPTIONS'}"</js> + links={ + <js>"up: request:/.."</js>, + <js>"options: servlet:/?method=OPTIONS"</js> + } ) ) <jk>public class</jk> SqlQueryResource <jk>extends</jk> Resource { @@ -6354,7 +6397,11 @@ title=<js>"Configuration"</js>, description=<js>"Contents of configuration file."</js>, htmldoc=<ja>@HtmlDoc</ja>( - links=<js>"{up:'request:/..', options:'servlet:/?method=OPTIONS', edit:'servlet:/edit'}"</js> + links={ + <js>"up: request:/.."</js>, + <js>"options: servlet:/?method=OPTIONS"</js>, + <js>"edit: servlet:/edit"</js> + } ) ) <jk>public class</jk> ConfigResource <jk>extends</jk> Resource { @@ -6881,6 +6928,46 @@ <li>The nav links are now an ordered list of elements. </ul> <li> + Modifications to the following <ja>@HtmlDoc</ja> annotations: + <ul> + <li>{@link org.apache.juneau.rest.annotation.HtmlDoc#links() links()} - Now an array of strings instead of a JSON object. Simplified syntax. + <br>For example: + <p class='bcode'> + <jc>// Old syntax</jc> + htmldoc=<ja>@HtmlDoc</ja>( + links=<js>"{"</js> + + <js>"up:'request:/..',"</js> + + <js>"options:'servlet:/?method=OPTIONS',"</js> + + <js>"contentTypes:'$W{contentTypeMenuItem}',"</js> + + <js>"styles:'$W{styleMenuItem}',"</js> + + <js>"source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/PetStoreResource.java'"</js> + + <js>"}"</js> + ) + + <jc>// New syntax</jc> + htmldoc=<ja>@HtmlDoc</ja>( + links={ + <js>"up: request:/.."</js>, + <js>"options: servlet:/?method=OPTIONS"</js>, + <js>"$W{contentTypeMenuItem}"</js>, + <js>"$W{styleMenuItem}"</js>, + <js>"source: $C{Source/gitHub}/org/apache/juneau/examples/rest/PetStoreResource.java"</js> + } + ) + </p> + Previous syntax will still work, but you're encouraged to use the simplified syntax. + <li>Several annotations are now arrays of strings instead of simple strings. + Values are simply concatenated with newlines which makes multi-line values cleaner. + <ul> + <li>{@link org.apache.juneau.rest.annotation.HtmlDoc#header() header()} + <li>{@link org.apache.juneau.rest.annotation.HtmlDoc#nav() nav()} + <li>{@link org.apache.juneau.rest.annotation.HtmlDoc#aside() aside()} + <li>{@link org.apache.juneau.rest.annotation.HtmlDoc#footer() footer()} + <li>{@link org.apache.juneau.rest.annotation.HtmlDoc#script() script()} + <li>{@link org.apache.juneau.rest.annotation.HtmlDoc#style() style()} + </ul> + </ul> + <li> Improvements made to the {@link org.apache.juneau.rest.widget.Widget} API. <ul> <li> @@ -7273,7 +7360,7 @@ <li>{@link org.apache.juneau.rest.RestConfig#setHtmlDescription(String) setHtmlDescription(String)} <li>{@link org.apache.juneau.rest.RestConfig#setHtmlBranding(String) setHtmlBranding(String)} <li>{@link org.apache.juneau.rest.RestConfig#setHtmlHeader(String) setHtmlHeader(String)} - <li>{@link org.apache.juneau.rest.RestConfig#setHtmlLinks(String) setHtmlLinks(String)} + <li><code><del>setHtmlLinks(String)</del></code> <li>{@link org.apache.juneau.rest.RestConfig#setHtmlNav(String) setHtmlNav(String)} <li>{@link org.apache.juneau.rest.RestConfig#setHtmlAside(String) setHtmlAside(String)} <li>{@link org.apache.juneau.rest.RestConfig#setHtmlFooter(String) setHtmlFooter(String)} @@ -7292,7 +7379,7 @@ <li>{@link org.apache.juneau.rest.RestResponse#setHtmlDescription(Object) setHtmlDescription(Object)} <li>{@link org.apache.juneau.rest.RestResponse#setHtmlBranding(Object) setHtmlBranding(Object)} <li>{@link org.apache.juneau.rest.RestResponse#setHtmlHeader(Object) setHtmlHeader(Object)} - <li>{@link org.apache.juneau.rest.RestResponse#setHtmlLinks(Object) setHtmlLinks(Object)} + <li><code><del>setHtmlLinks(Object)</del></code> <li>{@link org.apache.juneau.rest.RestResponse#setHtmlNav(Object) setHtmlNav(Object)} <li>{@link org.apache.juneau.rest.RestResponse#setHtmlAside(Object) setHtmlAside(Object)} <li>{@link org.apache.juneau.rest.RestResponse#setHtmlFooter(Object) setHtmlFooter(Object)} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/AtomFeedResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/AtomFeedResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/AtomFeedResource.java index ca25161..9033b3a 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/AtomFeedResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/AtomFeedResource.java @@ -37,7 +37,13 @@ import org.apache.juneau.rest.widget.*; StyleMenuItem.class }, htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/AtomFeedResource.java'}" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "$W{contentTypeMenuItem}", + "$W{styleMenuItem}", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/AtomFeedResource.java" + } ), properties={ @Property(name=SERIALIZER_quoteChar, value="'"), http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/CodeFormatterResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/CodeFormatterResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/CodeFormatterResource.java index a409c24..33e895e 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/CodeFormatterResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/CodeFormatterResource.java @@ -29,12 +29,17 @@ import org.apache.juneau.rest.annotation.*; title="Code Formatter", description="Utility for generating HTML code-formatted source code", htmldoc=@HtmlDoc( - links="{up:'servlet:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/CodeFormatterResource.java'}", - aside="" - + "<div style='min-width:200px' class='text'>" - + " <p>Utility for adding code syntax tags to Java and XML/HTML code.</p>" - + " <p>It's by no means perfect, but provides a good starting point.</p>" - + "</div>", + links={ + "up: servlet:/..", + "options: servlet:/?method=OPTIONS", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/CodeFormatterResource.java" + }, + aside={ + "<div style='min-width:200px' class='text'>", + " <p>Utility for adding code syntax tags to Java and XML/HTML code.</p>", + " <p>It's by no means perfect, but provides a good starting point.</p>", + "</div>" + }, style="aside {display:table-caption;}" ) ) http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java index 78123f9..779db36 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java @@ -41,7 +41,13 @@ import org.apache.juneau.utils.*; StyleMenuItem.class }, htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/DirectoryResource.java'}" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "$W{contentTypeMenuItem}", + "$W{styleMenuItem}", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/DirectoryResource.java" + } ), properties={ @Property(name=HTML_uriAnchorText, value=PROPERTY_NAME), http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DockerRegistryResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DockerRegistryResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DockerRegistryResource.java index aac1d8a..4f6e5b5 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DockerRegistryResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DockerRegistryResource.java @@ -28,12 +28,17 @@ import org.apache.juneau.rest.labels.*; path="/docker", title="Sample Docker resource", htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/DockerRegistryResource.java'}", - aside="" - + "<div style='min-width:200px' class='text'>" - + " <p>REST API for searching Docker registries.</p>" - + " <p>To use, you must first specify the Docker registry URL in the <code>[Docker]</code> section of the config file.</p>" - + "</div>" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/DockerRegistryResource.java" + }, + aside={ + "<div style='min-width:200px' class='text'>", + " <p>REST API for searching Docker registries.</p>", + " <p>To use, you must first specify the Docker registry URL in the <code>[Docker]</code> section of the config file.</p>", + "</div>" + } ) ) public class DockerRegistryResource extends Resource { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java index d062eda..38d7916 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java @@ -24,12 +24,17 @@ import org.apache.juneau.rest.annotation.*; description="An example of the simplest-possible resource", path="/helloWorld", htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/HelloWorldResource.java'}", - aside="" - + "<div style='max-width:400px' class='text'>" - + " <p>This page shows a resource that simply response with a 'Hello world!' message</p>" - + " <p>The POJO serialized is a simple String.</p>" - + "</div>" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/HelloWorldResource.java" + }, + aside={ + "<div style='max-width:400px' class='text'>", + " <p>This page shows a resource that simply response with a 'Hello world!' message</p>", + " <p>The POJO serialized is a simple String.</p>", + "</div>" + } ) ) public class HelloWorldResource extends Resource { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/JsonSchemaResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/JsonSchemaResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/JsonSchemaResource.java index 4120e22..6f628c4 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/JsonSchemaResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/JsonSchemaResource.java @@ -30,11 +30,18 @@ import org.apache.juneau.rest.widget.*; StyleMenuItem.class }, htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/JsonSchemaResource.java'}", - aside="" - + "<div style='min-width:200px' class='text'>" - + " <p>Shows how to produce JSON-Schema documents in a variety of languages using the JSON-Schema DTOs.</p>" - + "</div>" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "$W{contentTypeMenuItem}", + "$W{styleMenuItem}", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/JsonSchemaResource.java" + }, + aside={ + "<div style='min-width:200px' class='text'>", + " <p>Shows how to produce JSON-Schema documents in a variety of languages using the JSON-Schema DTOs.</p>", + "</div>" + } ) ) public class JsonSchemaResource extends ResourceJena { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java index df23b15..0c714dd 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java @@ -29,12 +29,17 @@ import org.apache.juneau.utils.*; path="/methodExample", messages="nls/MethodExampleResource", htmldoc=@HtmlDoc( - links="{up:'servlet:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/MethodExampleResource.java'}", - aside="" - + "<div style='max-width:400px' class='text'>" - + " <p>Shows the different methods for retrieving HTTP query/form-data parameters, headers, and path variables.</p>" - + " <p>Each method is functionally equivalent but demonstrate different ways to accomplish the same tasks.</p>" - + "</div>" + links={ + "up: servlet:/..", + "options: servlet:/?method=OPTIONS", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/MethodExampleResource.java" + }, + aside={ + "<div style='max-width:400px' class='text'>", + " <p>Shows the different methods for retrieving HTTP query/form-data parameters, headers, and path variables.</p>", + " <p>Each method is functionally equivalent but demonstrate different ways to accomplish the same tasks.</p>", + "</div>" + } ) ) public class MethodExampleResource extends Resource { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PetStoreResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PetStoreResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PetStoreResource.java index 26b2f03..1be06ba 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PetStoreResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PetStoreResource.java @@ -40,14 +40,21 @@ import org.apache.juneau.transforms.*; StyleMenuItem.class }, htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/PetStoreResource.java'}", - aside="" - + "<div style='max-width:400px' class='text'>" - + " <p>This page shows a standard REST resource that renders bean summaries and details.</p>" - + " <p>It shows how different properties can be rendered on the same bean in different views.</p>" - + " <p>It also shows examples of HtmlRender classes and @BeanProperty(format) annotations.</p>" - + " <p>It also shows how the Queryable converter and query widget can be used to create searchable interfaces.</p>" - + "</div>" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "$W{contentTypeMenuItem}", + "$W{styleMenuItem}", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/PetStoreResource.java" + }, + aside={ + "<div style='max-width:400px' class='text'>", + " <p>This page shows a standard REST resource that renders bean summaries and details.</p>", + " <p>It shows how different properties can be rendered on the same bean in different views.</p>", + " <p>It also shows examples of HtmlRender classes and @BeanProperty(format) annotations.</p>", + " <p>It also shows how the Queryable converter and query widget can be used to create searchable interfaces.</p>", + "</div>" + } ) ) public class PetStoreResource extends ResourceJena { @@ -81,14 +88,14 @@ public class PetStoreResource extends ResourceJena { // Add our menu items in the nav links. htmldoc=@HtmlDoc( - links="{" - + "up:'request:/..'," - + "options:'servlet:/?method=OPTIONS'," - + "query:'$W{queryMenuItem}'," - + "contentTypes:'$W{contentTypeMenuItem}'," - + "styles:'$W{styleMenuItem}'," - + "source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/PetStoreResource.java'" - + "}" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "$W{queryMenuItem}", + "$W{contentTypeMenuItem}", + "$W{styleMenuItem}", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/PetStoreResource.java" + } ) ) public Collection<Pet> getPets() { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PhotosResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PhotosResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PhotosResource.java index b56f55b..4309d11 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PhotosResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PhotosResource.java @@ -40,12 +40,17 @@ import org.apache.juneau.serializer.*; title="Photo REST service", description="Sample resource that allows images to be uploaded and retrieved.", htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/PhotosResource.java'}", - aside="" - + "<div style='max-width:400px;min-width:200px' class='text'>" - + " <p>Shows an example of using custom serializers and parsers to create REST interfaces over binary resources.</p>" - + " <p>In this case, our resources are marshalled jpeg and png binary streams and are stored in an in-memory 'database' (also known as a <code>TreeMap</code>).</p>" - + "</div>" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/PhotosResource.java" + }, + aside={ + "<div style='max-width:400px;min-width:200px' class='text'>", + " <p>Shows an example of using custom serializers and parsers to create REST interfaces over binary resources.</p>", + " <p>In this case, our resources are marshalled jpeg and png binary streams and are stored in an in-memory 'database' (also known as a <code>TreeMap</code>).</p>", + "</div>" + } ), properties={ // Make the anchor text on URLs be just the path relative to the servlet. http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java index 21e6118..57a30f6 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java @@ -37,13 +37,20 @@ import org.apache.juneau.transforms.*; StyleMenuItem.class }, htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/RequestEchoResource.java'}", - aside="" - + "<div style='max-width:400px;min-width:200px' class='text'>" - + " <p>Shows how even arbitrary POJOs such as <code>HttpServletRequest</code> can be serialized by the framework.</p>" - + " <p>Also shows how to specify serializer properties, filters, and swaps at the servlet level to control how POJOs are serialized.</p>" - + " <p>Also provides an example of how to use the Traversable and Queryable APIs.</p>" - + "</div>" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "$W{contentTypeMenuItem}", + "$W{styleMenuItem}", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/RequestEchoResource.java" + }, + aside={ + "<div style='max-width:400px;min-width:200px' class='text'>", + " <p>Shows how even arbitrary POJOs such as <code>HttpServletRequest</code> can be serialized by the framework.</p>", + " <p>Also shows how to specify serializer properties, filters, and swaps at the servlet level to control how POJOs are serialized.</p>", + " <p>Also provides an example of how to use the Traversable and Queryable APIs.</p>", + "</div>" + } ), properties={ @Property(name=SERIALIZER_maxDepth, value="5"), http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java index 135232f..4944856 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java @@ -31,21 +31,22 @@ import org.apache.juneau.rest.widget.*; StyleMenuItem.class }, htmldoc=@HtmlDoc( - links="{" - + "options:'?method=OPTIONS'," - + "contentTypes:'$W{contentTypeMenuItem}'," - + "styles:'$W{styleMenuItem}'," - + "source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/RootResources.java'" - + "}", - aside="" - + "<div style='max-width:400px' class='text'>" - + " <p>This is an example of a 'router' page that serves as a jumping-off point to child resources.</p>" - + " <p>Resources can be nested arbitrarily deep through router pages.</p>" - + " <p>Note the <span class='link'>options</span> link provided that lets you see the generated swagger doc for this page.</p>" - + " <p>Also note the <span class='link'>sources</span> link on these pages to view the source code for the page.</p>" - + " <p>All content on pages in the UI are serialized POJOs. In this case, it's a serialized array of beans with 2 properties, 'name' and 'description'.</p>" - + " <p>Other features (such as this aside) are added through annotations.</p>" - + "</div>", + links={ + "options: ?method=OPTIONS", + "$W{contentTypeMenuItem}", + "$W{styleMenuItem}", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/RootResources.java" + }, + aside={ + "<div style='max-width:400px' class='text'>", + " <p>This is an example of a 'router' page that serves as a jumping-off point to child resources.</p>", + " <p>Resources can be nested arbitrarily deep through router pages.</p>", + " <p>Note the <span class='link'>options</span> link provided that lets you see the generated swagger doc for this page.</p>", + " <p>Also note the <span class='link'>sources</span> link on these pages to view the source code for the page.</p>", + " <p>All content on pages in the UI are serialized POJOs. In this case, it's a serialized array of beans with 2 properties, 'name' and 'description'.</p>", + " <p>Other features (such as this aside) are added through annotations.</p>", + "</div>" + }, footer="$W{poweredByApache}" ), children={ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SampleRemoteableServlet.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SampleRemoteableServlet.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SampleRemoteableServlet.java index e973893..d7de0de 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SampleRemoteableServlet.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SampleRemoteableServlet.java @@ -30,14 +30,19 @@ import org.apache.juneau.rest.remoteable.*; title="Remoteable Service Proxy API", description="Sample class showing how to use remoteable proxies.", htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/SampleRemoteableServlet.java'}", - aside="" - + "<div style='max-width:400px;min-width:200px' class='text'>" - + " <p>Shows how to use the <code>RemoteableServlet</code> class to define RPC-style remoteable interfaces using REST as a protocol.</p>" - + " <p>Remoteable proxies are retrieved on the client side using <code>RestClient.getInterfaceProxy(Class)</code>.</p>" - + " <p>Methods are invoked using POSTs of serialized arrays of objects and the returned value is marshalled back as a response.</p>" - + " <p>GET requests (as shown here) show the available methods on the interface.</p>" - + "</div>" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/SampleRemoteableServlet.java" + }, + aside={ + "<div style='max-width:400px;min-width:200px' class='text'>", + " <p>Shows how to use the <code>RemoteableServlet</code> class to define RPC-style remoteable interfaces using REST as a protocol.</p>", + " <p>Remoteable proxies are retrieved on the client side using <code>RestClient.getInterfaceProxy(Class)</code>.</p>", + " <p>Methods are invoked using POSTs of serialized arrays of objects and the returned value is marshalled back as a response.</p>", + " <p>GET requests (as shown here) show the available methods on the interface.</p>", + "</div>" + } ), properties={ // Allow us to use method=POST from a browser. http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SqlQueryResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SqlQueryResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SqlQueryResource.java index 9406e88..1b16716 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SqlQueryResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SqlQueryResource.java @@ -26,6 +26,7 @@ import org.apache.juneau.microservice.*; import org.apache.juneau.rest.*; import org.apache.juneau.rest.annotation.*; import org.apache.juneau.rest.annotation.Body; +import org.apache.juneau.rest.widget.*; /** * Sample resource that shows how Juneau can serialize ResultSets. @@ -35,13 +36,20 @@ import org.apache.juneau.rest.annotation.Body; messages="nls/SqlQueryResource", title="SQL query service", description="Executes queries against the local derby '$C{SqlQueryResource/connectionUrl}' database", + widgets={ StyleMenuItem.class }, htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/..',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/SqlQueryResource.java'}", - aside="" - + "<div style='min-width:200px' class='text'>" - + " <p>An example of a REST interface over a relational database.</p>" - + " <p><a class='link' href='?sql=select+*+from sys.systables'>try me</a></p>" - + "</div>" + links={ + "up: request:/..", + "options: servlet:/..", + "$W{stylesMenuItem}", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/SqlQueryResource.java" + }, + aside={ + "<div style='min-width:200px' class='text'>", + " <p>An example of a REST interface over a relational database.</p>", + " <p><a class='link' href='?sql=select+*+from sys.systables'>try me</a></p>", + "</div>" + } ) ) public class SqlQueryResource extends Resource { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SystemPropertiesResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SystemPropertiesResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SystemPropertiesResource.java index 1976de4..3414948 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SystemPropertiesResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/SystemPropertiesResource.java @@ -47,23 +47,27 @@ import org.apache.juneau.rest.widget.*; htmldoc=@HtmlDoc( // Custom navigation links. - links="{" - + "up:'request:/..'," - + "options:'servlet:/?method=OPTIONS'," - + "form:'servlet:/formPage'," - + "contentTypes:'$W{contentTypeMenuItem}'," - + "styles:'$W{styleMenuItem}'," - + "source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/SystemPropertiesResource.java'" - +"}", + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "form: servlet:/formPage", + "$W{contentTypeMenuItem}", + "$W{styleMenuItem}", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/SystemPropertiesResource.java" + }, // Custom page text in aside section. - aside="" - + "<div style='max-width:800px' class='text'>" - + " <p>Shows standard GET/PUT/POST/DELETE operations and use of Swagger annotations.</p>" - + "</div>", + aside={ + "<div style='max-width:800px' class='text'>", + " <p>Shows standard GET/PUT/POST/DELETE operations and use of Swagger annotations.</p>", + "</div>" + }, // Custom CSS styles applied to HTML view. - style="aside {display:table-caption} aside p {margin: 0px 20px;}" + style={ + "aside {display:table-caption} ", + "aside p {margin: 0px 20px;}" + } ), // Properties that get applied to all serializers and parsers. @@ -204,10 +208,11 @@ public class SystemPropertiesResource extends Resource { description="A form post page for setting a single system property value", guards=AdminGuard.class, htmldoc=@HtmlDoc( - aside="" - + "<div style='max-width:400px' class='text'>" - + " <p>Shows how HTML5 beans can be used to quickly create arbitrary HTML.</p>" - + "</div>", + aside={ + "<div style='max-width:400px' class='text'>", + " <p>Shows how HTML5 beans can be used to quickly create arbitrary HTML.</p>", + "</div>" + }, style="aside {display:table-cell;}" ) ) http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TempDirResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TempDirResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TempDirResource.java index 04732de..8d62db0 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TempDirResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TempDirResource.java @@ -36,12 +36,20 @@ import org.apache.juneau.utils.*; StyleMenuItem.class }, htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',upload:'servlet:/upload',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/TempDirResource.java'}", - aside="" - + "<div style='max-width:400px' class='text'>" - + " <p>Shows how to use the predefined DirectoryResource class.</p>" - + " <p>Also shows how to use HTML5 beans to create a form entry page.</p>" - + "</div>" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "upload: servlet:/upload", + "$W{contentTypeMenuItem}", + "$W{styleMenuItem}", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/TempDirResource.java" + }, + aside={ + "<div style='max-width:400px' class='text'>", + " <p>Shows how to use the predefined DirectoryResource class.</p>", + " <p>Also shows how to use HTML5 beans to create a form entry page.</p>", + "</div>" + } ), properties={ @Property(name="rootDir", value="$S{java.io.tmpdir}"), http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TumblrParserResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TumblrParserResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TumblrParserResource.java index ea84e95..20d4ac6 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TumblrParserResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TumblrParserResource.java @@ -25,12 +25,17 @@ import org.apache.juneau.rest.client.*; title="Tumblr parser service", description="Specify a URL to a Tumblr blog and parse the results.", htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/TumblrParserResource.java'}", - aside="" - + "<div style='min-width:200px' class='text'>" - + " <p>An example of a REST interface that retrieves data from another REST interface.</p>" - + " <p><a class='link' href='$U{servlet:/ibmblr}'>try me</a></p>" - + "</div>" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/TumblrParserResource.java" + }, + aside={ + "<div style='min-width:200px' class='text'>", + " <p>An example of a REST interface that retrieves data from another REST interface.</p>", + " <p><a class='link' href='$U{servlet:/ibmblr}'>try me</a></p>", + "</div>" + } ) ) public class TumblrParserResource extends Resource { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/UrlEncodedFormResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/UrlEncodedFormResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/UrlEncodedFormResource.java index 4a1425e..331196b 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/UrlEncodedFormResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/UrlEncodedFormResource.java @@ -22,6 +22,7 @@ import org.apache.juneau.microservice.*; import org.apache.juneau.rest.*; import org.apache.juneau.rest.annotation.*; import org.apache.juneau.rest.annotation.Body; +import org.apache.juneau.rest.widget.*; import org.apache.juneau.transforms.*; /** @@ -30,32 +31,42 @@ import org.apache.juneau.transforms.*; @RestResource( path="/urlEncodedForm", messages="nls/UrlEncodedFormResource", - title="Tumblr parser service", - description="Specify a URL to a Tumblr blog and parse the results.", + title="URL-Encoded form example", + widgets={ StyleMenuItem.class }, htmldoc=@HtmlDoc( - links="{up:'request:/..',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/UrlEncodedFormResource.java'}", - aside="" - + "<div style='min-width:200px' class='text'>" - + " <p>Shows how to process a FORM POST body into a bean using the <code>@Body</code> annotation.</p>" - + " <p>Submitting the form post will simply echo the bean back on the response.</p>" - + "</div>" + links={ + "up: request:/..", + "$W{styleMenuItem}", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/UrlEncodedFormResource.java" + }, + aside={ + "<div style='min-width:200px' class='text'>", + " <p>Shows how to process a FORM POST body into a bean using the <code>@Body</code> annotation.</p>", + " <p>Submitting the form post will simply echo the bean back on the response.</p>", + "</div>" + } ) ) public class UrlEncodedFormResource extends Resource { private static final long serialVersionUID = 1L; /** GET request handler */ - @RestMethod(name="GET", path="/") + @RestMethod( + name="GET", + path="/", + htmldoc=@HtmlDoc( + script={ + "// Load results from IFrame into this document.", + "function loadResults(buff) {", + " var doc = buff.contentDocument || buff.contentWindow.document;", + " var buffBody = doc.getElementById('data');", + " document.getElementById('results').innerHTML = buffBody.innerHTML;", + "}" + } + ) + ) public Div doGet(RestRequest req) { return div( - script("text/javascript", - "\n // Load results from IFrame into this document." - +"\n function loadResults(buff) {" - +"\n var doc = buff.contentDocument || buff.contentWindow.document;" - +"\n var buffBody = doc.getElementById('data');" - +"\n document.getElementById('results').innerHTML = buffBody.innerHTML;" - +"\n }" - ), form().id("form").action("servlet:/").method("POST").target("buff").children( table( tr( http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java index d65fe85..9c15644 100644 --- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java +++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java @@ -56,17 +56,24 @@ import org.apache.juneau.utils.*; // "servlet:/..." URIs are relative to the servlet URI. // "$C{...}" variables are pulled from the config file. htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}'}", - aside="" - + "<div style='max-width:400px;min-width:200px'>" - + " <p>Proof-of-concept resource that shows off the capabilities of working with POJO resources.</p>" - + " <p>Provides examples of: </p>" - + " <ul>" - + " <li>XML and RDF namespaces" - + " <li>Swagger documentation" - + " <li>Widgets" - + " </ul>" - + "</div>", + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java", + "$W{contentTypeMenuItem}", + "$W{styleMenuItem}" + }, + aside={ + "<div style='max-width:400px;min-width:200px'>", + " <p>Proof-of-concept resource that shows off the capabilities of working with POJO resources.</p>", + " <p>Provides examples of: </p>", + " <ul>", + " <li>XML and RDF namespaces", + " <li>Swagger documentation", + " <li>Widgets", + " </ul>", + "</div>" + }, footer="$W{poweredByJuneau}" ), @@ -147,7 +154,14 @@ public class AddressBookResource extends ResourceJena { @RestMethod(name="GET", path="/people/*", converters={Traversable.class,Queryable.class,Introspectable.class}, htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',query:'$W{queryMenuItem}',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java'}" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "$W{queryMenuItem}", + "$W{contentTypeMenuItem}", + "$W{styleMenuItem}", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java" + } ) ) public AddressBook getAllPeople() throws Exception { @@ -174,7 +188,14 @@ public class AddressBookResource extends ResourceJena { @RestMethod(name="GET", path="/addresses/*", converters={Traversable.class,Queryable.class}, htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',query:'$W{queryMenuItem}',contentTypes:'$W{contentTypeMenuItem}',styles:'$W{styleMenuItem}',source:'$C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java'}" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "$W{queryMenuItem}", + "$W{contentTypeMenuItem}", + "$W{styleMenuItem}", + "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java" + } ) ) public List<Address> getAllAddresses() throws Exception { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-examples-rest/src/main/resources/org/apache/juneau/examples/rest/PetStore.json ---------------------------------------------------------------------- diff --git a/juneau-examples-rest/src/main/resources/org/apache/juneau/examples/rest/PetStore.json b/juneau-examples-rest/src/main/resources/org/apache/juneau/examples/rest/PetStore.json index 09abfbd..fe7ba7a 100644 --- a/juneau-examples-rest/src/main/resources/org/apache/juneau/examples/rest/PetStore.json +++ b/juneau-examples-rest/src/main/resources/org/apache/juneau/examples/rest/PetStore.json @@ -11,7 +11,11 @@ // * specific language governing permissions and limitations under the License. * // *************************************************************************************************************************** { - 1: {kind:'CAT',name:'Mr. Frisky',price:39.99,breed:'Persian',getsAlongWith:['CAT','FISH','RABBIT'],birthDate:'04 Jul 2012'}, - 2: {kind:'DOG',name:'Kibbles',price:99.99,breed:'Husky',getsAlongWith:['DOG','BIRD','FISH','MOUSE','RABBIT'],birthDate:'01 Sep 2014'}, - 3: {kind:'RABBIT',name:'Hoppy',price:49.99,breed:'Angora',getsAlongWith:['DOG','BIRD','FISH','MOUSE'],birthDate:'16 Apr 2017'} + 101: {kind:'CAT',name:'Mr. Frisky',price:39.99,breed:'Persian',getsAlongWith:['CAT','FISH','RABBIT'],birthDate:'04 Jul 2012'}, + 102: {kind:'DOG',name:'Kibbles',price:99.99,breed:'Husky',getsAlongWith:['DOG','BIRD','FISH','MOUSE','RABBIT'],birthDate:'01 Sep 2014'}, + 103: {kind:'RABBIT',name:'Hoppy',price:49.99,breed:'Angora',getsAlongWith:['DOG','BIRD','FISH','MOUSE'],birthDate:'16 Apr 2017'}, + 104: {kind:'RABBIT',name:'Hoppy 2',price:49.99,breed:'Angora',getsAlongWith:['DOG','BIRD','FISH','MOUSE'],birthDate:'17 Apr 2017'}, + 105: {kind:'FISH',name:'Gorton',price:1.99,breed:'Gold',getsAlongWith:['FISH'],birthDate:'20 Jun 2017'}, + 106: {kind:'MOUSE',name:'Hackwrench',price:4.99,breed:'Gadget',getsAlongWith:['FISH','MOUSE'],birthDate:'20 Jun 2017'}, + 107: {kind:'SNAKE',name:'Just Snake',price:9.99,breed:'Human',getsAlongWith:['SNAKE'],birthDate:'21 Jun 2017'} } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-microservice/src/main/java/org/apache/juneau/microservice/Resource.java ---------------------------------------------------------------------- diff --git a/juneau-microservice/src/main/java/org/apache/juneau/microservice/Resource.java b/juneau-microservice/src/main/java/org/apache/juneau/microservice/Resource.java index 292eee8..26a524a 100755 --- a/juneau-microservice/src/main/java/org/apache/juneau/microservice/Resource.java +++ b/juneau-microservice/src/main/java/org/apache/juneau/microservice/Resource.java @@ -43,7 +43,10 @@ import org.apache.juneau.svl.vars.*; @SuppressWarnings("serial") @RestResource( htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS'}", + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS" + }, stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}" ), config="$S{juneau.configFile}" http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceGroup.java ---------------------------------------------------------------------- diff --git a/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceGroup.java b/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceGroup.java index 5681ec3..234e000 100755 --- a/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceGroup.java +++ b/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceGroup.java @@ -44,7 +44,10 @@ import org.apache.juneau.svl.vars.*; @SuppressWarnings("serial") @RestResource( htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS'}", + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS" + }, stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}" ), config="$S{juneau.configFile}" http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJena.java ---------------------------------------------------------------------- diff --git a/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJena.java b/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJena.java index 4a319f1..e297a2a 100755 --- a/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJena.java +++ b/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJena.java @@ -21,7 +21,10 @@ import org.apache.juneau.rest.jena.*; @SuppressWarnings("serial") @RestResource( htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS'}", + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS" + }, stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}" ), config="$S{juneau.configFile}" http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJenaGroup.java ---------------------------------------------------------------------- diff --git a/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJenaGroup.java b/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJenaGroup.java index 719a4cd..f697cbc 100644 --- a/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJenaGroup.java +++ b/juneau-microservice/src/main/java/org/apache/juneau/microservice/ResourceJenaGroup.java @@ -45,7 +45,10 @@ import org.apache.juneau.svl.vars.*; @SuppressWarnings("serial") @RestResource( htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS'}", + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS" + }, stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}" ), config="$S{juneau.configFile}" http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/ConfigResource.java ---------------------------------------------------------------------- diff --git a/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/ConfigResource.java b/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/ConfigResource.java index fd3130e..9f0abb0 100755 --- a/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/ConfigResource.java +++ b/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/ConfigResource.java @@ -34,7 +34,11 @@ import org.apache.juneau.rest.annotation.Body; title="Configuration", description="Contents of configuration file.", htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS',edit:'servlet:/edit'}" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS", + "edit: servlet:/edit" + } ) ) public class ConfigResource extends Resource { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ffda0552/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java ---------------------------------------------------------------------- diff --git a/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java b/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java index 5d818bc..ea3dce8 100755 --- a/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java +++ b/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java @@ -64,15 +64,15 @@ import org.apache.juneau.utils.*; description="Contents of $R{attribute.path}", messages="nls/DirectoryResource", htmldoc=@HtmlDoc( - links="{up:'request:/..',options:'servlet:/?method=OPTIONS'}" + links={ + "up: request:/..", + "options: servlet:/?method=OPTIONS" + } ), properties={ @Property(name=HTML_uriAnchorText, value=PROPERTY_NAME), @Property(name=REST_allowMethodParam, value="*"), - @Property(name="DirectoryResource.rootDir", value=""), - @Property(name="DirectoryResource.allowViews", value="false"), - @Property(name="DirectoryResource.allowDeletes", value="false"), - @Property(name="DirectoryResource.allowPuts", value="false") + @Property(name="DirectoryResource.rootDir", value="") } ) public class DirectoryResource extends Resource {
