DtoExamples

The DtoExamples resource is a resource group for demonstrating various DTO examples.

The AtomFeedResource class shows examples of the following:

- Using the {@doc org.apache.juneau.dto.atom#TOC ATOM Feed DTO} API.

Pointing a browser to the resource shows the following:

http://localhost:10000/atom

True ATOM feeds require using an Accept:text/xml header:

http://localhost:10000/atom?Accept=text/xml&plainText=true

Other languages, such as JSON are also supported:

http://localhost:10000/atom?Accept=text/json&plainText=true

##### AtomFeedResource.java

/** * Sample resource that shows how to generate ATOM feeds. */ @Rest( path="/atom", title="Sample ATOM feed resource", description="Sample resource that shows how to render ATOM feeds", htmldoc=@HtmlDoc( widgets={ ContentTypeMenuItem.class, StyleMenuItem.class }, navlinks={ "up: request:/..", "options: servlet:/?method=OPTIONS", "$W{ContentTypeMenuItem}", "$W{StyleMenuItem}", "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.java" } ), encoders=GzipEncoder.class ) @SerializerConfig(quoteChar="'") @RdfConfig(rdfxml_tab="5", addRootProperty="true") public class AtomFeedResource extends BasicRestServletJena { private Feed feed; // The root resource object @Override /* Servlet */ public void init() { try { feed = feed("tag:juneau.sample.com,2013:1", "Juneau ATOM specification", "2013-05-08T12:29:29Z") .subtitle(text("html").text("A <em>lot</em> of effort went into making this effortless")) .links( link("alternate", "text/html", "http://www.sample.com/").hreflang("en"), link("self", "application/atom+xml", "http://www.sample.com/feed.atom") ) .generator( generator("Juneau").uri("http://juneau.apache.org/").version("1.0") ) .entries( entry("tag:juneau.sample.com,2013:1.2345", "Juneau ATOM specification snapshot", "2013-05-08T12:29:29Z") .links( link("alternate", "text/html", "http://www.sample.com/2012/05/08/juneau.atom"), link("enclosure", "audio/mpeg", "http://www.sample.com/audio/juneau_podcast.mp3").length(1337) ) .published("2013-05-08T12:29:29Z") .authors( person("James Bognar").uri(new URI("http://www.sample.com/")).email("jamesbognar@apache.org") ) .contributors( person("Barry M. Caceres") ) .content( content("xhtml") .lang("en") .base("http://www.apache.org/") .text("<div><p>[Update: Juneau supports ATOM.]</p></div>") ) ); } catch (Exception e) { throw new RuntimeException(e); } } /** * GET request handler */ @RestMethod(name=GET, path="/") public Feed getFeed() throws Exception { return feed; } /** * PUT request handler. * Replaces the feed with the specified content, and then mirrors it as the response. */ @RestMethod(name=PUT, path="/") public Feed setFeed(@Body Feed feed) throws Exception { this.feed = feed; return feed; } }

The JsonSchemaResource class shows examples of the following:

- Using the {@link oaj.dto.jsonschema JSON Schema DTO} API.

The resource consists of a pre-initialized {@link oaj.dto.jsonschema.JsonSchema} object. Pointing a browser to the resource shows the following:

http://localhost:10000/jsonSchema

For true JSON-Schema, you need to specify the header Accept: text/json:

http://localhost:10000/jsonSchema?Accept=text/json&plainText=true

##### JsonSchemaResource.java

/** * Sample resource that shows how to serialize JSON-Schema documents. */ @Rest( path="/jsonSchema", messages="nls/JsonSchemaResource", title="Sample JSON-Schema document", description="Sample resource that shows how to generate JSON-Schema documents", htmldoc=@HtmlDoc( widgets={ ContentTypeMenuItem.class, StyleMenuItem.class }, navlinks={ "up: request:/..", "options: servlet:/?method=OPTIONS", "$W{ContentTypeMenuItem}", "$W{StyleMenuItem}", "source: $C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.java" }, aside={ "<div style='min-width:200px' class='text'>", " <p>Shows how to produce JSON-Schema documents in a variety of languages using the JSON-Schema DTOs.</p>", "</div>" } ) ) public class JsonSchemaResource extends BasicRestServletJena { private static final long serialVersionUID = 1L; private JsonSchema schema; // The schema document @Override /* Servlet */ public void init() { try { schema = new JsonSchema() .setId("http://example.com/sample-schema#") .setSchemaVersionUri("http://json-schema.org/draft-04/schema#") .setTitle("Example Schema") .setType(JsonType.OBJECT) .addProperties( new JsonSchemaProperty("firstName", JsonType.STRING), new JsonSchemaProperty("lastName", JsonType.STRING), new JsonSchemaProperty("age", JsonType.INTEGER) .setDescription("Age in years") .setMinimum(0) ) .addRequired("firstName", "lastName"); } catch (Exception e) { throw new RuntimeException(e); } } /** GET request handler */ @RestMethod(name=GET, path="/") public JsonSchema getSchema() throws Exception { return schema; } /** * PUT request handler. * Replaces the schema document with the specified content, and then mirrors it as the response. */ @RestMethod(name=PUT, path="/") public JsonSchema setSchema(@Body JsonSchema schema) throws Exception { this.schema = schema; return schema; } }