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 2018/04/15 18:39:19 UTC
[juneau] branch master updated: Clean up examples.
This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new 2ccd72d Clean up examples.
2ccd72d is described below
commit 2ccd72dd6b301954d3d30474c99dedb5d849e2bc
Author: JamesBognar <ja...@apache.org>
AuthorDate: Sun Apr 15 14:39:18 2018 -0400
Clean up examples.
---
juneau-doc/src/main/javadoc/overview.html | 113 ++-------------------
.../rest/{RootResources.java => DtoExamples.java} | 42 ++------
.../apache/juneau/examples/rest/RootResources.java | 7 +-
.../juneau/examples/rest/TumblrParserResource.java | 102 -------------------
4 files changed, 15 insertions(+), 249 deletions(-)
diff --git a/juneau-doc/src/main/javadoc/overview.html b/juneau-doc/src/main/javadoc/overview.html
index 0264198..edd958a 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -400,7 +400,6 @@
<li><p><a class='doclink' href='#juneau-examples-rest.TempDirResource'>TempDirResource</a></p>
<li><p><a class='doclink' href='#juneau-examples-rest.AtomFeedResource'>AtomFeedResource</a></p>
<li><p><a class='doclink' href='#juneau-examples-rest.DockerRegistryResource'>DockerRegistryResource</a></p>
- <li><p><a class='doclink' href='#juneau-examples-rest.TumblrParserResource'>TumblrParserResource</a></p>
<li><p><a class='doclink' href='#juneau-examples-rest.PhotosResource'>PhotosResource</a></p>
<li><p><a class='doclink' href='#juneau-examples-rest.JsonSchemaResource'>JsonSchemaResource</a></p>
<li><p><a class='doclink' href='#juneau-examples-rest.SqlQueryResource'>SqlQueryResource</a></p>
@@ -11097,7 +11096,6 @@
AtomFeedResource.<jk>class</jk>,
JsonSchemaResource.<jk>class</jk>,
SqlQueryResource.<jk>class</jk>,
- TumblrParserResource.<jk>class</jk>,
CodeFormatterResource.<jk>class</jk>,
UrlEncodedFormResource.<jk>class</jk>,
SourceResource.<jk>class</jk>,
@@ -17476,7 +17474,6 @@
AtomFeedResource.<jk>class</jk>,
JsonSchemaResource.<jk>class</jk>,
SqlQueryResource.<jk>class</jk>,
- TumblrParserResource.<jk>class</jk>,
CodeFormatterResource.<jk>class</jk>,
UrlEncodedFormResource.<jk>class</jk>,
ConfigResource.<jk>class</jk>,
@@ -20019,106 +20016,8 @@
</div>
<!-- ======================================================================================================= -->
- <a id='juneau-examples-rest.TumblrParserResource'></a>
- <h4 class='topic' onclick='toggle(this)'>12.12 - TumblrParserResource</h4>
- <div class='topic'>
- <p>
- <b>Note:</b> As of March 2018, this resource is known to not work against the Tumblr API.
- </p>
- <p>
- The <l>TumblrParserResource</l> class shows examples of the following:
- </p>
- <ul class='spaced-list'>
- <li>
- Using {@link org.apache.juneau.rest.client.RestClient} to retrieve information from other REST resources.
- <li>
- Using {@link org.apache.juneau.ObjectMap} and {@link org.apache.juneau.ObjectList} to produce
- generalized POJO models.
- </ul>
- <p>
- Pointing a browser at a Tumblr blog name, such as <l>ibmblr</l> causes a REST call to be make to the Tumblr
- blog and the results to be parsed:
- </p>
- <p class='bcode w800'>
- http://localhost:10000/tumblrParser/ibmblr
- </p>
- <img class='bordered w800' src='doc-files/juneau-examples-rest.TumblrParserResource.1.png'>
-
- <h5 class='figure'>TumblrParserResource.java</h5>
- <p class='bcode w800'>
- <ja>@RestResource</ja>(
- path=<js>"/tumblrParser"</js>,
- 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>,
- htmldoc=<ja>@HtmlDoc</ja>(
- navlinks={
- <js>"up: request:/.."</js>,
- <js>"options: servlet:/?method=OPTIONS"</js>,
- <js>"source: $C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.java"</js>
- },
- aside={
- <js>"<div style='min-width:200px' class='text'>"</js>,
- <js>" <p>An example of a REST interface that retrieves data from another REST interface.</p>"</js>,
- <js>" <p><a class='link' href='$U{servlet:/ibmblr}'>try me</a></p>"</js>,
- <js>"</div>"</js>
- }
- )
- )
- <jk>public class</jk> TumblrParserResource <jk>extends</jk> BasicRestServlet {
- <jk>private static final long</jk> <jsf>serialVersionUID</jsf> = 1L;
-
- <ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/"</js>)
- <jk>public</jk> String getInstructions() <jk>throws</jk> Exception {
- <jk>return</jk> <js>"Append the Tumblr blog name to the URL above (e.g. /tumblrParser/mytumblrblog)"</js>;
- }
-
- <ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/{blogName}"</js>)
- <jk>public</jk> ObjectList parseBlog(<ja>@Path</ja> String blogName) <jk>throws</jk> Exception {
- ObjectList l = <jk>new</jk> ObjectList();
- RestClient rc = RestClient.<jsm>create</jsm>().build();
- String site = <js>"http:<jc>//"</js> + blogName + <js>".tumblr.com/api/read/json"</js>;</jc>
- ObjectMap m = rc.doGet(site).getResponse(ObjectMap.<jk>class</jk>);
- <jk>int</jk> postsTotal = m.getInt(<js>"posts-total"</js>);
- <jk>for</jk> (<jk>int</jk> i = 0; i < postsTotal; i += 20) {
- m = rc.doGet(site + <js>"?start="</js> + i + <js>"&num=20&transform=text"</js>).getResponse(ObjectMap.<jk>class</jk>);
- ObjectList ol = m.getObjectList(<js>"posts"</js>);
- <jk>for</jk> (<jk>int</jk> j = 0; j < ol.size(); j++) {
- ObjectMap om = ol.getObjectMap(j);
- String type = om.getString(<js>"type"</js>);
- Entry e = <jk>new</jk> Entry();
- e.date = om.getString(<js>"date"</js>);
- <jk>if</jk> (type.equals(<js>"link"</js>))
- e.entry = <jk>new</jk> Link(om.getString(<js>"link-text"</js>), om.getString(<js>"link-url"</js>));
- <jk>else if</jk> (type.equals(<js>"audio"</js>))
- e.entry = <jk>new</jk> ObjectMap().append(<js>"type"</js>,<js>"audio"</js>).append(<js>"audio-caption"</js>, om.getString(<js>"audio-caption"</js>));
- <jk>else if</jk> (type.equals(<js>"video"</js>))
- e.entry = <jk>new</jk> ObjectMap().append(<js>"type"</js>,<js>"video"</js>).append(<js>"video-caption"</js>, om.getString(<js>"video-caption"</js>));
- <jk>else if</jk> (type.equals(<js>"quote"</js>))
- e.entry = <jk>new</jk> ObjectMap().append(<js>"type"</js>,<js>"quote"</js>).append(<js>"quote-source"</js>, om.getString(<js>"quote-source"</js>)).append(<js>"quote-text"</js>, om.getString(<js>"quote-text"</js>));
- <jk>else if</jk> (type.equals(<js>"regular"</js>))
- e.entry = om.getString(<js>"regular-body"</js>);
- <jk>else if</jk> (type.equals(<js>"photo"</js>))
- e.entry = <jk>new</jk> Img(om.getString(<js>"photo-url-250"</js>));
- <jk>else</jk>
- e.entry = <jk>new</jk> ObjectMap().append(<js>"type"</js>, type);
- l.add(e);
- }
- }
- <jk>return</jk> l;
- }
-
- <jk>public static class</jk> Entry {
- <jk>public</jk> String <jf>date</jf>;
- <jk>public</jk> Object <jf>entry</jf>;
- }
- }
- </p>
- </div>
-
- <!-- ======================================================================================================= -->
<a id='juneau-examples-rest.PhotosResource'></a>
- <h4 class='topic' onclick='toggle(this)'>12.13 - PhotosResource</h4>
+ <h4 class='topic' onclick='toggle(this)'>12.12 - PhotosResource</h4>
<div class='topic'>
<p>
The <l>PhotosResource</l> class shows examples of the following:
@@ -20295,7 +20194,7 @@
<!-- ======================================================================================================= -->
<a id='juneau-examples-rest.JsonSchemaResource'></a>
- <h4 class='topic' onclick='toggle(this)'>12.14 - JsonSchemaResource</h4>
+ <h4 class='topic' onclick='toggle(this)'>12.13 - JsonSchemaResource</h4>
<div class='topic'>
<p>
The <l>JsonSchemaResource</l> class shows examples of the following:
@@ -20398,7 +20297,7 @@
<!-- ======================================================================================================= -->
<a id='juneau-examples-rest.SqlQueryResource'></a>
- <h4 class='topic' onclick='toggle(this)'>12.15 - SqlQueryResource</h4>
+ <h4 class='topic' onclick='toggle(this)'>12.14 - SqlQueryResource</h4>
<div class='topic'>
<p>
The <l>SqlQueryResource</l> class shows examples of the following:
@@ -20608,7 +20507,7 @@
<!-- ======================================================================================================= -->
<a id='juneau-examples-rest.ConfigResource'></a>
- <h4 class='topic' onclick='toggle(this)'>12.16 - ConfigResource</h4>
+ <h4 class='topic' onclick='toggle(this)'>12.15 - ConfigResource</h4>
<div class='topic'>
<p>
The {@link org.apache.juneau.microservice.resources.ConfigResource} class is a predefined reusable resource.
@@ -20763,7 +20662,7 @@
<!-- ======================================================================================================= -->
<a id='juneau-examples-rest.LogsResource'></a>
- <h4 class='topic' onclick='toggle(this)'>12.17 - LogsResource</h4>
+ <h4 class='topic' onclick='toggle(this)'>12.16 - LogsResource</h4>
<div class='topic'>
<p>
The {@link org.apache.juneau.microservice.resources.LogsResource} class is a reusable predefined resource.
@@ -20780,7 +20679,7 @@
<!-- ======================================================================================================= -->
<a id='juneau-examples-rest.PetStoreResource'></a>
- <h4 class='topic' onclick='toggle(this)'>12.18 - PetStoreResource</h4>
+ <h4 class='topic' onclick='toggle(this)'>12.17 - PetStoreResource</h4>
<div class='topic'>
<p>
The <code>PetStoreResource</code> class provides examples of the following:
diff --git a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DtoExamples.java
similarity index 58%
copy from juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java
copy to juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DtoExamples.java
index 8d5290b..c35be95 100644
--- a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java
+++ b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DtoExamples.java
@@ -14,25 +14,24 @@ package org.apache.juneau.examples.rest;
import static org.apache.juneau.serializer.WriterSerializer.*;
-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.
+ * Sample REST resource showing how to implement a nested "router" resource page.
*/
@RestResource(
- path="/",
- title="Root resources",
- description="Example of a router resource page.",
+ path="/dto",
+ title="DTO examples",
+ description="Example serialization of predefined Data Transfer Objects.",
htmldoc=@HtmlDoc(
widgets={
ContentTypeMenuItem.class,
ThemeMenuItem.class
},
navlinks={
+ "up: request:/..",
"options: ?method=OPTIONS",
"$W{ContentTypeMenuItem}",
"$W{ThemeMenuItem}",
@@ -40,12 +39,7 @@ import org.apache.juneau.rest.widget.*;
},
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>",
+ " <p>This is an example of a nested 'router' page that serves as a jumping-off point to other child resources.</p>",
"</div>"
}
),
@@ -56,33 +50,11 @@ import org.apache.juneau.rest.widget.*;
@Property(name=WSERIALIZER_quoteChar, value="'")
},
children={
- HelloWorldResource.class,
- PetStoreResource.class,
- org.apache.juneau.examples.rest.petstore.PetStoreResource.class,
- SystemPropertiesResource.class,
- MethodExampleResource.class,
- RequestEchoResource.class,
- TempDirResource.class,
- AddressBookResource.class,
- SampleRemoteableServlet.class,
- PhotosResource.class,
AtomFeedResource.class,
JsonSchemaResource.class,
- SqlQueryResource.class,
- TumblrParserResource.class,
- CodeFormatterResource.class,
- UrlEncodedFormResource.class,
- ConfigResource.class,
- LogsResource.class,
- DockerRegistryResource.class,
PredefinedLabelsResource.class,
- DebugResource.class,
- ShutdownResource.class
}
)
-public class RootResources extends BasicRestServletJenaGroup {
- // IMPORTANT! If you don't need RDF support, change the parent class to ResourceGroup.
- // It allows you to remove the Jena prerequisite.
-
+public class DtoExamples extends BasicRestServletJenaGroup {
private static final long serialVersionUID = 1L;
}
diff --git a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java
index 8d5290b..fc35343 100644
--- a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java
+++ b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RootResources.java
@@ -62,20 +62,17 @@ import org.apache.juneau.rest.widget.*;
SystemPropertiesResource.class,
MethodExampleResource.class,
RequestEchoResource.class,
- TempDirResource.class,
AddressBookResource.class,
SampleRemoteableServlet.class,
+ DtoExamples.class,
PhotosResource.class,
- AtomFeedResource.class,
- JsonSchemaResource.class,
SqlQueryResource.class,
- TumblrParserResource.class,
CodeFormatterResource.class,
UrlEncodedFormResource.class,
+ TempDirResource.class,
ConfigResource.class,
LogsResource.class,
DockerRegistryResource.class,
- PredefinedLabelsResource.class,
DebugResource.class,
ShutdownResource.class
}
diff --git a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TumblrParserResource.java b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TumblrParserResource.java
deleted file mode 100644
index a39bef7..0000000
--- a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/TumblrParserResource.java
+++ /dev/null
@@ -1,102 +0,0 @@
-// ***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
-// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *
-// * with the License. You may obtain a copy of the License at *
-// * *
-// * http://www.apache.org/licenses/LICENSE-2.0 *
-// * *
-// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *
-// * specific language governing permissions and limitations under the License. *
-// ***************************************************************************************************************************
-package org.apache.juneau.examples.rest;
-
-import static org.apache.juneau.http.HttpMethodName.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.dto.*;
-import org.apache.juneau.dto.html5.*;
-import org.apache.juneau.rest.*;
-import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.client.*;
-
-@RestResource(
- path="/tumblrParser",
- messages="nls/TumblrParserResource",
- title="Tumblr parser service",
- description="Specify a URL to a Tumblr blog and parse the results.",
- htmldoc=@HtmlDoc(
- navlinks={
- "up: request:/..",
- "options: servlet:/?method=OPTIONS",
- "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.java"
- },
- aside={
- "<div style='min-width:200px' class='text'>",
- " <p>An example of a REST interface that retrieves data from another REST interface.</p>",
- " <p><a class='link' href='$U{servlet:/ibmblr}'>try me</a></p>",
- "</div>"
- }
- ),
- swagger={
- "info: {",
- "contact:{name:'Juneau Developer',email:'dev@juneau.apache.org'},",
- "license:{name:'Apache 2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'},",
- "version:'2.0',",
- "termsOfService:'You are on your own.'",
- "},",
- "externalDocs:{description:'Apache Juneau',url:'http://juneau.apache.org'}"
- }
-)
-public class TumblrParserResource extends BasicRestServlet {
- 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. /tumblrParser/mytumblrblog)";
- }
-
- @RestMethod(name=GET, path="/{blogName}", summary="Parse the specified blog")
- public ObjectList parseBlog(@Path String blogName) throws Exception {
- ObjectList l = new ObjectList();
- try (RestClient rc = RestClient.create().build()) {
- String site = "http://" + blogName + ".tumblr.com/api/read/json";
- ObjectMap m = rc.doGet(site).getResponse(ObjectMap.class);
- 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");
- for (int j = 0; j < ol.size(); j++) {
- ObjectMap om = ol.getObjectMap(j);
- String type = om.getString("type");
- Entry e = new Entry();
- e.date = om.getString("date");
- if (type.equals("link"))
- e.entry = new LinkString(om.getString("link-text"), om.getString("link-url"));
- else if (type.equals("audio"))
- e.entry = new ObjectMap().append("type","audio").append("audio-caption", om.getString("audio-caption"));
- else if (type.equals("video"))
- e.entry = new ObjectMap().append("type","video").append("video-caption", om.getString("video-caption"));
- else if (type.equals("quote"))
- e.entry = new ObjectMap().append("type","quote").append("quote-source", om.getString("quote-source")).append("quote-text", om.getString("quote-text"));
- else if (type.equals("regular"))
- e.entry = om.getString("regular-body");
- else if (type.equals("photo"))
- e.entry = new Img().src(om.getString("photo-url-250"));
- else
- e.entry = new ObjectMap().append("type", type);
- l.add(e);
- }
- }
- }
- return l;
- }
-
- public static class Entry {
- public String date;
- public Object entry;
- }
-}
--
To stop receiving notification emails like this one, please contact
jamesbognar@apache.org.