Add migration guide.
diff --git a/content/site/apidocs-9.0.0/overview-summary.html b/content/site/apidocs-9.0.0/overview-summary.html
index 6240e8f..a2249e5 100644
--- a/content/site/apidocs-9.0.0/overview-summary.html
+++ b/content/site/apidocs-9.0.0/overview-summary.html
@@ -1183,6 +1183,7 @@
<li><p><a class='doclink' href='#Security.s.Svl'>juneau-svl</a><span class='update'>created: 8.2.0</span></p>
<li><p><a class='doclink' href='#Security.s.Rest'>juneau-rest-server</a><span class='update'>created: 8.2.0</span></p>
</ol>
+ <li><p class='toc2'><a class='doclink' href='#v9.0-migration-guide'>v9.0 Migration Guide</a></p>
</ol>
@@ -3009,11 +3010,11 @@
<li class='jc'><a href="org/apache/juneau/marshaller/Uon.html" title="class in org.apache.juneau.marshaller"><code>Uon</code></a>
<li class='jc'><a href="org/apache/juneau/marshaller/UrlEncoding.html" title="class in org.apache.juneau.marshaller"><code>UrlEncoding</code></a>
<li class='jc'><a href="org/apache/juneau/marshaller/Xml.html" title="class in org.apache.juneau.marshaller"><code>Xml</code></a>
- <li class='jc'><code>N3</code>
- <li class='jc'><code>NTriple</code>
- <li class='jc'><code>RdfXml</code>
- <li class='jc'><code>RdfXmlAbbrev</code>
- <li class='jc'><code>Turtle</code>
+ <li class='jc'><code>org.apache.juneau.marshaller.N3</code>
+ <li class='jc'><code>org.apache.juneau.marshaller.NTriple</code>
+ <li class='jc'><code>org.apache.juneau.marshaller.RdfXml</code>
+ <li class='jc'><code>org.apache.juneau.marshaller.RdfXmlAbbrev</code>
+ <li class='jc'><code>org.apache.juneau.marshaller.Turtle</code>
</ul>
</ul>
<li class='jac'><a href="org/apache/juneau/marshaller/StreamMarshaller.html" title="class in org.apache.juneau.marshaller"><code>StreamMarshaller</code></a>
@@ -3053,11 +3054,11 @@
<li class='jc'><a href="org/apache/juneau/marshaller/Uon.html" title="class in org.apache.juneau.marshaller"><code>Uon</code></a>
<li class='jc'><a href="org/apache/juneau/marshaller/UrlEncoding.html" title="class in org.apache.juneau.marshaller"><code>UrlEncoding</code></a>
<li class='jc'><a href="org/apache/juneau/marshaller/Xml.html" title="class in org.apache.juneau.marshaller"><code>Xml</code></a>
- <li class='jc'><code>N3</code>
- <li class='jc'><code>NTriple</code>
- <li class='jc'><code>RdfXml</code>
- <li class='jc'><code>RdfXmlAbbrev</code>
- <li class='jc'><code>Turtle</code>
+ <li class='jc'><code>org.apache.juneau.marshaller.N3</code>
+ <li class='jc'><code>org.apache.juneau.marshaller.NTriple</code>
+ <li class='jc'><code>org.apache.juneau.marshaller.RdfXml</code>
+ <li class='jc'><code>org.apache.juneau.marshaller.RdfXmlAbbrev</code>
+ <li class='jc'><code>org.apache.juneau.marshaller.Turtle</code>
</ul>
<p>
Each predefined marshaller also includes static convenience from/to methods to make it even easier to
@@ -12790,11 +12791,11 @@
<ul class='javatree'>
<li class='jc'><code>org.apache.juneau.jena.RdfSerializer</code>
<ul class='javatreec'>
- <li class='jc'><code>RdfXmlSerializer</code>
- <li class='jc'><code>RdfXmlAbbrevSerializer</code>
- <li class='jc'><code>N3Serializer</code>
- <li class='jc'><code>NTripleSerializer</code>
- <li class='jc'><code>TurtleSerializer</code>
+ <li class='jc'><code>org.apache.juneau.jena.RdfXmlSerializer</code>
+ <li class='jc'><code>org.apache.juneau.jena.RdfXmlAbbrevSerializer</code>
+ <li class='jc'><code>org.apache.juneau.jena.N3Serializer</code>
+ <li class='jc'><code>org.apache.juneau.jena.NTripleSerializer</code>
+ <li class='jc'><code>org.apache.juneau.jena.TurtleSerializer</code>
</ul>
</li>
</ul>
@@ -12812,7 +12813,7 @@
<ul>
<li class='jac'><a href="org/apache/juneau/serializer/WriterSerializer.Builder.html" title="class in org.apache.juneau.serializer"><code>WriterSerializer.Builder</code></a>
<ul>
- <li class='jc'><code>RdfSerializer.Builder</code>
+ <li class='jc'><code>org.apache.juneau.jena.RdfSerializer.Builder</code>
</ul>
</li>
</ul>
@@ -12831,29 +12832,29 @@
The following pre-configured serializers are provided for convenience:
</p>
<ul class='javatree'>
- <li class='jc'><code>RdfSerializer</code>
+ <li class='jc'><code>org.apache.juneau.jena.RdfSerializer</code>
<ul>
- <li class='jc'><code>RdfXmlSerializer</code>
+ <li class='jc'><code>org.apache.juneau.jena.RdfXmlSerializer</code>
<ul>
<li class='jf'><code>DEFAULT</code>
</ul>
</li>
- <li class='jc'><code>RdfXmlAbbrevSerializer</code>
+ <li class='jc'><code>org.apache.juneau.jena.RdfXmlAbbrevSerializer</code>
<ul>
<li class='jf'><code>DEFAULT</code>
</ul>
</li>
- <li class='jc'><code>N3Serializer</code>
+ <li class='jc'><code>org.apache.juneau.jena.N3Serializer</code>
<ul>
<li class='jf'><code>DEFAULT</code>
</ul>
</li>
- <li class='jc'><code>NTripleSerializer</code>
+ <li class='jc'><code>org.apache.juneau.jena.NTripleSerializer</code>
<ul>
<li class='jf'><code>DEFAULT</code>
</ul>
</li>
- <li class='jc'><code>TurtleSerializer</code>
+ <li class='jc'><code>org.apache.juneau.jena.TurtleSerializer</code>
<ul>
<li class='jf'><code>DEFAULT</code>
</ul>
@@ -12874,16 +12875,16 @@
<div class='topic'><!-- START: 3.1.2 - juneau-marshall-rdf.jmr.RdfDetails.jmr.Parsers -->
<div class='topic'>
<p>
- The <code>RdfParser</code> class is the top-level class for all Jena-based parsers.
+ The <code>org.apache.juneau.jena.RdfParser</code> class is the top-level class for all Jena-based parsers.
Language-specific parsers are defined as inner subclasses of the <c>RdfParser</c> class:
</p>
<ul class='javatree'>
- <li class='jc'><code>RdfParser</code>
+ <li class='jc'><code>org.apache.juneau.jena.RdfParser</code>
<ul class='javatreec'>
- <li class='jc'><code>RdfXmlParser</code>
- <li class='jc'><code>NTripleParser</code>
- <li class='jc'><code>TurtleParser</code>
- <li class='jc'><code>N3Parser</code>
+ <li class='jc'><code>org.apache.juneau.jena.RdfXmlParser</code>
+ <li class='jc'><code>org.apache.juneau.jena.NTripleParser</code>
+ <li class='jc'><code>org.apache.juneau.jena.TurtleParser</code>
+ <li class='jc'><code>org.apache.juneau.jena.N3Parser</code>
</ul>
</li>
</ul>
@@ -12902,7 +12903,7 @@
<ul>
<li class='jac'><a href="org/apache/juneau/parser/ReaderParser.Builder.html" title="class in org.apache.juneau.parser"><code>ReaderParser.Builder</code></a>
<ul>
- <li class='jc'><code>RdfParser.Builder</code>
+ <li class='jc'><code>org.apache.juneau.jena.RdfParser.Builder</code>
</ul>
</li>
</ul>
@@ -12919,24 +12920,24 @@
The following pre-configured parsers are provided for convenience:
</p>
<ul class='javatree'>
- <li class='jc'><code>RdfParser</code>
+ <li class='jc'><code>org.apache.juneau.jena.RdfParser</code>
<ul>
- <li class='jc'><code>RdfXmlParser</code>
+ <li class='jc'><code>org.apache.juneau.jena.RdfXmlParser</code>
<ul>
<li class='jf'><code>DEFAULT</code>
</ul>
</li>
- <li class='jc'><code>N3Parser</code>
+ <li class='jc'><code>org.apache.juneau.jena.N3Parser</code>
<ul>
<li class='jf'><code>DEFAULT</code>
</ul>
</li>
- <li class='jc'><code>NTripleParser</code>
+ <li class='jc'><code>org.apache.juneau.jena.NTripleParser</code>
<ul>
<li class='jf'><code>DEFAULT</code>
</ul>
</li>
- <li class='jc'><code>TurtleParser</code>
+ <li class='jc'><code>org.apache.juneau.jena.TurtleParser</code>
<ul>
<li class='jf'><code>DEFAULT</code>
</ul>
@@ -13177,7 +13178,7 @@
form, and in some cases it's impossible.
</p>
<p>
- By default, the <code>RdfParser</code> class handles this by scanning all the nodes and
+ By default, the <code>org.apache.juneau.jena.RdfParser</code> class handles this by scanning all the nodes and
identifying the nodes without incoming references.
However, this is inefficient, especially for large models.
And in cases where the root node is referenced by another node in the model by URL, it's not possible to
@@ -15661,6 +15662,14 @@
</ul>
</li>
</ul>
+ <p>
+ Assertions have 3 categories of methods:
+ </p>
+ <ul>
+ <li>Testing methods (<c>isX</c> methods)
+ <li>Transform methods (<c>asX</c> methods)
+ <li>Configuration methods (<c>setX</c> methods)
+ </ul>
<h5 class='figure'>Examples:</h5>
<p class='bjava'>
<jk>import static</jk> org.apache.juneau.assertions.Assertions.*;
@@ -15698,17 +15707,8 @@
.asMessage().is(<js>"foo"</js>);
</p>
<p>
- Assertions have 3 categories of methods:
- </p>
- <ul>
- <li>Testing methods.
- <li>Transform methods.
- <li>Configuration methods.
- </ul>
- <p>
- Testing methods perform an assertion on the specified value and throws a <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AssertionError.html?is-external=true" title="class or interface in java.lang"><code>AssertionError</code></a> if
+ Testing methods (<c>isX</c> methods) perform an assertion on the specified value and throws a <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AssertionError.html?is-external=true" title="class or interface in java.lang"><code>AssertionError</code></a> if
the test fails. Otherwise, the method returns the original assertion object to allow you to chain the command.
- Testing methods start with <c>is</c>.
</p>
<h5 class='figure'>Example:</h5>
<p class='bjava'>
@@ -15718,8 +15718,8 @@
.isNotEmpty(); <jc>// Perform test and returns original FluentStringAssertion.</jc>
</p>
<p>
- Transform methods allow you to convert assertions of one type to another type or to convert the tested value to
- some other form wrapped in another assertion. Transform methods start with <c>as</c>.
+ Transform methods (<c>asX</c> methods) allow you to convert assertions of one type to another type or to convert the tested value to
+ some other form wrapped in another assertion.
</p>
<h5 class='figure'>Example:</h5>
<p class='bjava'>
@@ -15731,7 +15731,7 @@
.isContains(<js>"FOO"</js>); <jc>// Runs test and returns original FluentStringAssertion.</jc>
</p>
<p>
- Configuration methods allow you to tailor the behavior of assertions when they fail. They always return the same assertion object.
+ Configuration methods (<c>setX</c> methods) allow you to tailor the behavior of assertions when they fail. They always return the same assertion object.
Transformed assertions inherit the configurations of the created-by assertions. Configuration methods start with <c>set</c>.
</p>
<h5 class='figure'>Example:</h5>
@@ -17208,7 +17208,7 @@
<li class='jic'><a href="org/apache/juneau/rest/config/BasicSimpleJsonConfig.html" title="interface in org.apache.juneau.rest.config"><code>BasicSimpleJsonConfig</code></a>
<li class='jic'><a href="org/apache/juneau/rest/config/BasicOpenApiConfig.html" title="interface in org.apache.juneau.rest.config"><code>BasicOpenApiConfig</code></a>
<li class='jic'><a href="org/apache/juneau/rest/config/BasicUniversalConfig.html" title="interface in org.apache.juneau.rest.config"><code>BasicUniversalConfig</code></a>
- <li class='jic'><code>BasicUniversalJenaConfig</code>
+ <li class='jic'><code>org.apache.juneau.rest.config.BasicUniversalJenaConfig</code>
</ul>
<p>
For example, if you want to provide a resource that supports all languages in Juneau,
@@ -19275,7 +19275,7 @@
<li class='jic'><a href="org/apache/juneau/rest/config/BasicSimpleJsonConfig.html" title="interface in org.apache.juneau.rest.config"><code>BasicSimpleJsonConfig</code></a>
<li class='jic'><a href="org/apache/juneau/rest/config/BasicOpenApiConfig.html" title="interface in org.apache.juneau.rest.config"><code>BasicOpenApiConfig</code></a>
<li class='jic'><a href="org/apache/juneau/rest/config/BasicUniversalConfig.html" title="interface in org.apache.juneau.rest.config"><code>BasicUniversalConfig</code></a>
- <li class='jic'><code>BasicUniversalJenaConfig</code>
+ <li class='jic'><code>org.apache.juneau.rest.config.BasicUniversalJenaConfig</code>
</ul>
</li>
</ul>
@@ -29107,16 +29107,16 @@
</tr>
<tr>
<td><c>text/n3</c></td>
- <td><ul><li class='jc'><code>N3Serializer</code></ul></td>
- <td><ul><li class='jc'><code>N3Parser</code></ul></td>
- <td><ul><li class='jc'><code>N3</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.jena.N3Serializer</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.jena.N3Parser</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.marshaller.N3</code></ul></td>
<td><a class='doclink' href='#juneau-marshall-rdf'>juneau-marshall-rdf</a></td>
</tr>
<tr>
<td><c>text/n-triple</c></td>
- <td><ul><li class='jc'><code>NTripleSerializer</code></ul></td>
- <td><ul><li class='jc'><code>NTripleParser</code></ul></td>
- <td><ul><li class='jc'><code>NTriple</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.jena.NTripleSerializer</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.jena.NTripleParser</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.marshaller.NTriple</code></ul></td>
<td><a class='doclink' href='#juneau-marshall-rdf'>juneau-marshall-rdf</a></td>
</tr>
<tr>
@@ -29135,16 +29135,16 @@
</tr>
<tr>
<td><c>text/xml+rdf<c></td>
- <td><ul><li class='jc'><code>RdfXmlSerializer</code></ul></td>
- <td><ul><li class='jc'><code>RdfXmlParser</code></ul></td>
- <td><ul><li class='jc'><code>RdfXml</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.jena.RdfXmlSerializer</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.jena.RdfXmlParser</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.marshaller.RdfXml</code></ul></td>
<td><a class='doclink' href='#juneau-marshall-rdf'>juneau-marshall-rdf</a></td>
</tr>
<tr>
<td><c>text/xml+rdf+abbrev</c></td>
- <td><ul><li class='jc'><code>RdfXmlAbbrevSerializer</code></ul></td>
- <td><ul><li class='jc'><code>RdfXmlParser</code></ul></td>
- <td><ul><li class='jc'><code>RdfXmlAbbrev</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.jena.RdfXmlAbbrevSerializer</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.jena.RdfXmlParser</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.marshaller.RdfXmlAbbrev</code></ul></td>
<td><a class='doclink' href='#juneau-marshall-rdf'>juneau-marshall-rdf</a></td>
</tr>
<tr>
@@ -29156,9 +29156,9 @@
</tr>
<tr>
<td><c>text/turtle</c></td>
- <td><ul><li class='jc'><code>TurtleSerializer</code></ul></td>
- <td><ul><li class='jc'><code>TurtleParser</code></ul></td>
- <td><ul><li class='jc'><code>Turtle</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.jena.TurtleSerializer</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.jena.TurtleParser</code></ul></td>
+ <td><ul><li class='jc'><code>org.apache.juneau.marshaller.Turtle</code></ul></td>
<td><a class='doclink' href='#juneau-marshall-rdf'>juneau-marshall-rdf</a></td>
</tr>
<tr>
@@ -29673,6 +29673,91 @@
</div><!-- END: 18.3 - Security.s.Rest -->
</div><!-- END: 18 - Security -->
+<!-- ==================================================================================================== -->
+
+<h2 class='topic' onclick='toggle(this)'><a href='#v9.0-migration-guide' id='v9.0-migration-guide'>19 - v9.0 Migration Guide</a></h2>
+<div class='topic'><!-- START: 19 - v9.0-migration-guide -->
+<div class='topic'>
+ <p>
+ The following guide can be used to help migrate your code to v9.0. Note that you can also refer to the <a href='#9.0.0'>Release Notes</a> for
+ changes as well.
+ </p>
+ <table class='styled w900'>
+ <tr>
+ <th>
+ Old
+ </th>
+ <th>
+ New
+ </th>
+ </tr>
+ <tr>
+ <td>
+ <ja>@RestMethod</ja> annotation.
+ </td>
+ <td>
+ Has been replaced with <a href="org/apache/juneau/rest/annotation/RestOp.html" title="annotation in org.apache.juneau.rest.annotation"><code>RestOp</code></a>, <a href="org/apache/juneau/rest/annotation/RestGet.html" title="annotation in org.apache.juneau.rest.annotation"><code>RestGet</code></a>, <a href="org/apache/juneau/rest/annotation/RestPut.html" title="annotation in org.apache.juneau.rest.annotation"><code>RestPut</code></a>, <a href="org/apache/juneau/rest/annotation/RestPost.html" title="annotation in org.apache.juneau.rest.annotation"><code>RestPost</code></a>, <a href="org/apache/juneau/rest/annotation/RestDelete.html" title="annotation in org.apache.juneau.rest.annotation"><code>RestDelete</code></a>, <a href="org/apache/juneau/rest/annotation/RestOptions.html" title="annotation in org.apache.juneau.rest.annotation"><code>RestOptions</code></a>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <ja>@RemoteMethod</ja> annotation.
+ </td>
+ <td>
+ Has been replaced with <a href="org/apache/juneau/http/remote/RemoteOp.html" title="annotation in org.apache.juneau.http.remote"><code>RemoteOp</code></a>, <a href="org/apache/juneau/http/remote/RemoteGet.html" title="annotation in org.apache.juneau.http.remote"><code>RemoteGet</code></a>, <a href="org/apache/juneau/http/remote/RemotePut.html" title="annotation in org.apache.juneau.http.remote"><code>RemotePut</code></a>, <a href="org/apache/juneau/http/remote/RemotePost.html" title="annotation in org.apache.juneau.http.remote"><code>RemotePost</code></a>, <a href="org/apache/juneau/http/remote/RemoteDelete.html" title="annotation in org.apache.juneau.http.remote"><code>RemoteDelete</code></a>.
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <c>BasicRestServletJena</c>, <c>BasicRestServletJenaGroup</c> classes.
+ </td>
+ <td>
+ These have been removed in 9.0 due to the removal of the Jena packages (due to security issues). Replace
+ with <a href="org/apache/juneau/rest/servlet/BasicRestServlet.html" title="class in org.apache.juneau.rest.servlet"><code>BasicRestServlet</code></a> and <a href="org/apache/juneau/rest/servlet/BasicRestServletGroup.html" title="class in org.apache.juneau.rest.servlet"><code>BasicRestServletGroup</code></a>.
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <ja>@Body</ja> annotation.
+ </td>
+ <td>
+ Has been renamed to <ja>@Content</ja> (to better match HTTP naming conventions such as Content-Type/Content-Encoding headers).
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <c><ja>@Query</ja>(_default)</c>, <c><ja>@FormData</ja>(_default)</c>.
+ </td>
+ <td>
+ Has been renamed to <a href="org/apache/juneau/http/annotation/Query.html#def--"><code>Query.def()</code></a> / <a href="org/apache/juneau/http/annotation/FormData.html#def--"><code>FormData.def()</code></a>. Note however that <ja>@RestOp</ja>-annotated parameters
+ now also support use of Optional parameters which simplifies the coding of default values.
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <c><ja>@Rest</ja>(reqHeaders)</c>.
+ </td>
+ <td>
+ Has been renamed to <a href="org/apache/juneau/rest/annotation/Rest.html#defaultRequestHeaders--"><code>Rest.defaultRequestHeaders()</code></a> and added <a href="org/apache/juneau/rest/annotation/Rest.html#defaultResponseHeaders--"><code>Rest.defaultResponseHeaders()</code></a>.
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <ja>@Rest(staticFiles)</ja>.
+ </td>
+ <td>
+ Changed from a string array to a <c>Class<? <jk>extends</jk> StaticFiles></c>. If you're extending from
+ <a href="org/apache/juneau/rest/servlet/BasicRestServlet.html" title="class in org.apache.juneau.rest.servlet"><code>BasicRestServlet</code></a>/<a href="org/apache/juneau/rest/servlet/BasicRestObject.html" title="class in org.apache.juneau.rest.servlet"><code>BasicRestObject</code></a>, the <a href="org/apache/juneau/rest/servlet/BasicRestOperations.html#getHtdoc-java.lang.String-java.util.Locale-"><code>BasicRestOperations.getHtdoc(String,Locale)</code></a>
+ is already implemented for you to provide static files under the sub-URI <js>/htdocs/*</js>. The default implementation for finding
+ static files is <a href="org/apache/juneau/rest/staticfile/BasicStaticFiles.html" title="class in org.apache.juneau.rest.staticfile"><code>BasicStaticFiles</code></a> which provides basic out-of-the-box functionality, so you can usually
+ just remove the previous <c><ja>@Rest</ja>(staticFiles)</c> value.
+ </td>
+ </tr>
+ </table>
+
+</div>
+</div><!-- END: 19 - v9.0-migration-guide -->
+
<h2 class='topic' onclick='toggle(this)'><a href='#ReleaseNotes' id='ReleaseNotes'>Release Notes</a></h2>
<div class='topic'>
@@ -30569,7 +30654,7 @@
Juno 5.0.0.18 is a moderate update.
</p>
<p>
- The biggest change is the introduction of the <code>RdfSerializer</code> class that uses Jena to generate RDF/XML, RDF/XML-ABBREV, N-Tuple, N3, and Turtle output.
+ The biggest change is the introduction of the <code>org.apache.juneau.jena.RdfSerializer</code> class that uses Jena to generate RDF/XML, RDF/XML-ABBREV, N-Tuple, N3, and Turtle output.
</p>
<p>
This code should be considered prototype-quality, and subject to change in the future.<br>
@@ -30625,11 +30710,11 @@
<h5 class='topic w800'>Core API changes</h5>
<ul class='spaced-list'>
<li>
- New Jena-based <code>RdfSerializer</code> for serializing POJOs to RDF/XML, RDF/XML-ABBREV, N-Triple, Turtle, and N3.<br>
+ New Jena-based <code>org.apache.juneau.jena.RdfSerializer</code> for serializing POJOs to RDF/XML, RDF/XML-ABBREV, N-Triple, Turtle, and N3.<br>
Serializes ANY POJOs to RDF, even simple objects and primitives.
</li>
<li>
- New Jena-based <code>RdfParser</code> for parsing RDF/XML, RDF/XML-ABBREV, N3, Turtle, and N-Triple back into POJOs.
+ New Jena-based <code>org.apache.juneau.jena.RdfParser</code> for parsing RDF/XML, RDF/XML-ABBREV, N3, Turtle, and N-Triple back into POJOs.
</li>
<li>
<dc>XmlSerializerContext.XML_autoDetectNamespaces</dc> default changed to <jk>true</jk>.<br>
@@ -35395,15 +35480,15 @@
<li>
RDF serializer subclasses have been moved into top-level classes:
<ul>
- <li><c>RdfSerializer.Xml</c> -> <code>RdfXmlSerializer</code>
- <li><c>RdfSerializer.XmlAbbrev</c> -> <code>RdfXmlAbbrevSerializer</code>
- <li><c>RdfSerializer.N3</c> -> <code>N3Serializer</code>
- <li><c>RdfSerializer.NTriple</c> -> <code>NTripleSerializer</code>
- <li><c>RdfSerializer.Turtle</c> -> <code>TurtleSerializer</code>
- <li><c>RdfParser.Xml</c> -> <code>RdfXmlParser</code>
- <li><c>RdfParser.N3</c> -> <code>N3Parser</code>
- <li><c>RdfParser.NTriple</c> -> <code>NTripleParser</code>
- <li><c>RdfParser.Turtle</c> -> <code>TurtleParser</code>
+ <li><c>RdfSerializer.Xml</c> -> <code>org.apache.juneau.jena.RdfXmlSerializer</code>
+ <li><c>RdfSerializer.XmlAbbrev</c> -> <code>org.apache.juneau.jena.RdfXmlAbbrevSerializer</code>
+ <li><c>RdfSerializer.N3</c> -> <code>org.apache.juneau.jena.N3Serializer</code>
+ <li><c>RdfSerializer.NTriple</c> -> <code>org.apache.juneau.jena.NTripleSerializer</code>
+ <li><c>RdfSerializer.Turtle</c> -> <code>org.apache.juneau.jena.TurtleSerializer</code>
+ <li><c>RdfParser.Xml</c> -> <code>org.apache.juneau.jena.RdfXmlParser</code>
+ <li><c>RdfParser.N3</c> -> <code>org.apache.juneau.jena.N3Parser</code>
+ <li><c>RdfParser.NTriple</c> -> <code>org.apache.juneau.jena.NTripleParser</code>
+ <li><c>RdfParser.Turtle</c> -> <code>org.apache.juneau.jena.TurtleParser</code>
</ul>
<li>
New API for pairing serializers and parsers for simplified syntax:
@@ -37120,15 +37205,19 @@
<div class='topic'>
<p>
Juneau 9.0.0 is a major release. Deprecated APIs that have been accumulating over time have been removed.
- The underlying code has undergone significant refactoring to ease maintainability and improve overall performance.
+
</p>
-
- <h5 class='topic w800'>General changes</h5>
+ <p>
+ Major changes include:
+ </p>
<ul class='spaced-list'>
<li>
+ The code has undergone significant refactoring to ease maintainability and improve overall performance.
Configuration properties have been removed entirely. They have been replaced with a standard builder-based
architecture. In addition to making the code more maintainable, it also improves performance when
creating new serializers/parsers/rest clients (and others).
+ <li>
+ REST servlets now seemlessly integrate with Spring Boot.
</ul>
<h5 class='topic w800'>juneau-marshall</h5>
@@ -37149,30 +37238,36 @@
}
</p>
<li>
- New shortened form <a href="org/apache/juneau/http/remote/RemoteOp.html#value--"><code>RemoteOp.value()</code></a> for specifying http method name and path.
- <p class='bcode'>
- <jc>// Normal form</jc>
- <ja>@RemoteOp</ja>(method=<jsf>PUT</jsf>, path=<js>"/foo"</js>)
-
- <jc>// Shortened form</jc>
- <ja>@RemoteOp</ja>(<js>"PUT /foo"</js>)
- </p>
- <li>
- New annotations: <a href="org/apache/juneau/http/remote/RemoteGet.html" title="annotation in org.apache.juneau.http.remote"><code>RemoteGet</code></a>/<a href="org/apache/juneau/http/remote/RemotePut.html" title="annotation in org.apache.juneau.http.remote"><code>RemotePut</code></a>/<a href="org/apache/juneau/http/remote/RemotePost.html" title="annotation in org.apache.juneau.http.remote"><code>RemotePost</code></a>/<a href="org/apache/juneau/http/remote/RemoteDelete.html" title="annotation in org.apache.juneau.http.remote"><code>RemoteDelete</code></a>
- <li>
- Significant refactoring of the classes in the <a href="org/apache/juneau/http/package-summary.html"><code>org.apache.juneau.http</code></a> package and subpackages. Attempts were made to make classes as natural
- extensions to the Apache HttpComponents APIs. Significant new functionality here.
- <li>
New <a href="org/apache/juneau/annotation/Marshalled.html" title="annotation in org.apache.juneau.annotation"><code>@Marshalled</code></a> annotation for non-bean classes.
<li>
- New <a href="org/apache/juneau/annotation/Bean.html#example--"><code>@Bean(example)</code></a> annotation.
- <li>
New <a href="org/apache/juneau/annotation/BeanConfig.html#ignoreUnknownEnumValues--"><code>@BeanConfig(ignoreUnknownEnumValues)</code></a> annotation and support for ignoring
unknown enum values during parsing.
<li>
Java Serialized Object marshalling support has been removed entirely due to security risks with usage (better safe than sorry).
</ul>
+ <h5 class='topic w800'>juneau-rest-common</h5>
+ <p>
+ New module containing the common REST classes/annotations uses by both the client and server APIs.
+ These were previously contained within <c>juneau-marshall</c>.
+ </p>
+ <ul class='spaced-list'>
+ <li>
+ Significant refactoring of the classes in the <a href="org/apache/juneau/http/package-summary.html"><code>org.apache.juneau.http</code></a> package and subpackages. Attempts were made to make classes as natural
+ extensions to the Apache HttpComponents APIs. Significant new functionality here.
+ <li>
+ <c>@RemoteMethod</c> annotation has been replaced with the following:
+ <ul class='javatreec'>
+ <li class='ja'><a href="org/apache/juneau/http/remote/RemoteOp.html" title="annotation in org.apache.juneau.http.remote"><code>RemoteOp</code></a>
+ <li class='ja'><a href="org/apache/juneau/http/remote/RemoteGet.html" title="annotation in org.apache.juneau.http.remote"><code>RemoteGet</code></a>
+ <li class='ja'><a href="org/apache/juneau/http/remote/RemotePut.html" title="annotation in org.apache.juneau.http.remote"><code>RemotePut</code></a>
+ <li class='ja'><a href="org/apache/juneau/http/remote/RemotePatch.html" title="annotation in org.apache.juneau.http.remote"><code>RemotePatch</code></a>
+ <li class='ja'><a href="org/apache/juneau/http/remote/RemotePost.html" title="annotation in org.apache.juneau.http.remote"><code>RemotePost</code></a>
+ <li class='ja'><a href="org/apache/juneau/http/remote/RemoteDelete.html" title="annotation in org.apache.juneau.http.remote"><code>RemoteDelete</code></a>
+ </ul>
+ </li>
+ </ul>
+
<h5 class='topic w800'>juneau-rest-server</h5>
<ul class='spaced-list'>
<li>
@@ -37181,7 +37276,18 @@
processors, serializers/parsers, JSON schema generators, statistics gathering stores, and default request attributes/headers and response
headers.
<li>
- Defining REST resources with predefined marshalling support is now much simpler. You now extend from a basic REST servlet/object.
+ <c>@RestMethod</c> annotation has been replaced with the following:
+ <ul class='javatreec'>
+ <li class='ja'><a href="org/apache/juneau/rest/annotation/RestOp.html" title="annotation in org.apache.juneau.rest.annotation"><code>RestOp</code></a>
+ <li class='ja'><a href="org/apache/juneau/rest/annotation/RestGet.html" title="annotation in org.apache.juneau.rest.annotation"><code>RestGet</code></a>
+ <li class='ja'><a href="org/apache/juneau/rest/annotation/RestPut.html" title="annotation in org.apache.juneau.rest.annotation"><code>RestPut</code></a>
+ <li class='ja'><a href="org/apache/juneau/rest/annotation/RestPatch.html" title="annotation in org.apache.juneau.rest.annotation"><code>RestPatch</code></a>
+ <li class='ja'><a href="org/apache/juneau/rest/annotation/RestPost.html" title="annotation in org.apache.juneau.rest.annotation"><code>RestPost</code></a>
+ <li class='ja'><a href="org/apache/juneau/rest/annotation/RestDelete.html" title="annotation in org.apache.juneau.rest.annotation"><code>RestDelete</code></a>
+ </ul>
+ </li>
+ <li>
+ Defining REST resources with predefined marshalling support is now much simpler. You can now extend from a basic REST servlet/object.
<p class='bcode'>
<jc>// A root resource that supports JSON/HTML marshalling.</jc>
<jk>public class</jk> MyRootResources <jk>extends</jk> BasicRestServletGroup { ... }
@@ -37189,20 +37295,13 @@
<jc>// A child resource that supports all available marshalling.</jc>
<jk>public class</jk> MyChildResource <jk>extends</jk> BasicRestObject { ... }
</p>
- REST servlets/objects are in the <a href="org/apache/juneau/rest/servlet/package-summary.html"><code>org.apache.juneau.rest.servlet</code></a> package and REST configs are in the <a href="org/apache/juneau/rest/config/package-summary.html"><code>org.apache.juneau.rest.config</code></a> package.
- <li>
- <ja>@RestMethod</ja> annotation has been replaced with
- <a href="org/apache/juneau/http/remote/RemoteGet.html" title="annotation in org.apache.juneau.http.remote"><code>RemoteGet</code></a> / <a href="org/apache/juneau/http/remote/RemotePut.html" title="annotation in org.apache.juneau.http.remote"><code>RemotePut</code></a> / <a href="org/apache/juneau/http/remote/RemotePost.html" title="annotation in org.apache.juneau.http.remote"><code>RemotePost</code></a> / <a href="org/apache/juneau/http/remote/RemoteDelete.html" title="annotation in org.apache.juneau.http.remote"><code>RemoteDelete</code></a>
- / <a href="org/apache/juneau/http/remote/RemoteOp.html" title="annotation in org.apache.juneau.http.remote"><code>RemoteOp</code></a>
- <li>
- New shortened form <a href="org/apache/juneau/rest/annotation/RestOp.html#value--"><code>RestOp.value()</code></a> for specifying http method name and path.
- <p class='bcode'>
- <jc>// Normal form</jc>
- <ja>@RestOp</ja>(method=<jsf>PUT</jsf>, path=<js>"/{propertyName}"</js>)
-
- <jc>// Shortened form</jc>
- <ja>@RestOp</ja>(<js>"PUT /{propertyName}"</js>)
- </p>
+ <ul class='javatreec'>
+ <li class='jc'><a href="org/apache/juneau/rest/servlet/BasicRestServlet.html" title="class in org.apache.juneau.rest.servlet"><code>BasicRestServlet</code></a>
+ <li class='jc'><a href="org/apache/juneau/rest/servlet/BasicRestServletGroup.html" title="class in org.apache.juneau.rest.servlet"><code>BasicRestServletGroup</code></a>
+ <li class='jc'><a href="org/apache/juneau/rest/servlet/BasicRestObject.html" title="class in org.apache.juneau.rest.servlet"><code>BasicRestObject</code></a>
+ <li class='jc'><a href="org/apache/juneau/rest/servlet/BasicRestObjectGroup.html" title="class in org.apache.juneau.rest.servlet"><code>BasicRestObjectGroup</code></a>
+ </ul>
+ </li>
</ul>
<h5 class='topic w800'>juneau-dto</h5>
@@ -37225,6 +37324,17 @@
<li>
While the general usage pattern stays the same, the REST client code has undergone significant rewriting. It is now more inline
as an extension of the Apache HttpClient library. Much new functionality such as support for fluent assertions has been added.
+ <p class='bjava'>
+ <jc>// Create a basic REST client with JSON support and download a bean.</jc>
+ MyBean <jv>bean</jv> = RestClient.<jsm>create</jsm>()
+ .simpleJson()
+ .build()
+ .get(<jsf>URI</jsf>)
+ .run()
+ .assertStatus().asCode().is(200)
+ .assertHeader(<js>"Content-Type"</js>).matchesSimple(<js>"application/json*"</js>)
+ .getContent().as(MyBean.<jk>class</jk>);
+ </p>
</ul>
<h5 class='topic w800'>juneau-rest-mock</h5>