Modified: johnzon/site/publish/index.html URL: http://svn.apache.org/viewvc/johnzon/site/publish/index.html?rev=1909701&r1=1909700&r2=1909701&view=diff ============================================================================== --- johnzon/site/publish/index.html (original) +++ johnzon/site/publish/index.html Tue May 9 13:46:22 2023 @@ -1,13 +1,13 @@ <!DOCTYPE html> <!-- - | Generated by Apache Maven Doxia Site Renderer 1.7.1 at 2022-08-22 + | Generated by Apache Maven Doxia Site Renderer 1.11.1 at 2023-05-09 | Rendered using Apache Maven Fluido Skin 1.5 --> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="Date-Revision-yyyymmdd" content="20220822" /> + <meta name="Date-Revision-yyyymmdd" content="20230509" /> <meta http-equiv="Content-Language" content="en" /> <title>Apache Johnzon – Apache Johnzon</title> <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" /> @@ -94,7 +94,7 @@ <li class="dropdown-submenu"> <a href="project-info.html" title="Project Information">Project Information</a> <ul class="dropdown-menu"> - <li> <a href="integration.html" title="CI Management">CI Management</a> + <li> <a href="ci-management.html" title="CI Management">CI Management</a> </li> <li> <a href="dependencies.html" title="Dependencies">Dependencies</a> </li> @@ -108,11 +108,11 @@ </li> <li> <a href="index.html" title="About">About</a> </li> - <li> <a href="issue-tracking.html" title="Issue Management">Issue Management</a> + <li> <a href="issue-management.html" title="Issue Management">Issue Management</a> </li> - <li> <a href="license.html" title="Licenses">Licenses</a> + <li> <a href="licenses.html" title="Licenses">Licenses</a> </li> - <li> <a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a> + <li> <a href="mailing-lists.html" title="Mailing Lists">Mailing Lists</a> </li> <li> <a href="modules.html" title="Project Modules">Project Modules</a> </li> @@ -120,11 +120,11 @@ </li> <li> <a href="plugins.html" title="Plugins">Plugins</a> </li> - <li> <a href="team-list.html" title="Team">Team</a> + <li> <a href="scm.html" title="Source Code Management">Source Code Management</a> </li> - <li> <a href="source-repository.html" title="Source Code Management">Source Code Management</a> + <li> <a href="summary.html" title="Summary">Summary</a> </li> - <li> <a href="project-summary.html" title="Summary">Summary</a> + <li> <a href="team.html" title="Team">Team</a> </li> </ul> </li> @@ -132,11 +132,13 @@ <li class="dropdown-submenu"> <a href="project-reports.html" title="Project Reports">Project Reports</a> <ul class="dropdown-menu"> - <li> <a href="apidocs/index.html" title="JavaDocs">JavaDocs</a> + <li> <a href="cpd.html" title="CPD">CPD</a> </li> - <li> <a href="surefire-report.html" title="Surefire Report">Surefire Report</a> + <li> <a href="pmd.html" title="PMD">PMD</a> +</li> + <li> <a href="apidocs/index.html" title="Javadoc">Javadoc</a> </li> - <li> <a href="cobertura/index.html" title="Cobertura Test Coverage">Cobertura Test Coverage</a> + <li> <a href="surefire-report.html" title="Surefire Report">Surefire Report</a> </li> <li> <a href="checkstyle.html" title="Checkstyle">Checkstyle</a> </li> @@ -213,10 +215,10 @@ <div id="breadcrumbs"> <ul class="breadcrumb"> - <li id="publishDate">Last Published: 2022-08-22 + <li id="publishDate">Last Published: 2023-05-09 <span class="divider">|</span> </li> - <li id="projectVersion">Version: 1.2.20-SNAPSHOT + <li id="projectVersion">Version: 2.0.0-SNAPSHOT </li> @@ -304,7 +306,7 @@ <li> - <a href="integration.html" title="CI Management"> + <a href="ci-management.html" title="CI Management"> <span class="none"></span> CI Management</a> </li> @@ -351,21 +353,21 @@ <li> - <a href="issue-tracking.html" title="Issue Management"> + <a href="issue-management.html" title="Issue Management"> <span class="none"></span> Issue Management</a> </li> <li> - <a href="license.html" title="Licenses"> + <a href="licenses.html" title="Licenses"> <span class="none"></span> Licenses</a> </li> <li> - <a href="mail-lists.html" title="Mailing Lists"> + <a href="mailing-lists.html" title="Mailing Lists"> <span class="none"></span> Mailing Lists</a> </li> @@ -393,27 +395,27 @@ <li> - <a href="team-list.html" title="Team"> + <a href="scm.html" title="Source Code Management"> <span class="none"></span> - Team</a> + Source Code Management</a> </li> <li> - <a href="source-repository.html" title="Source Code Management"> + <a href="summary.html" title="Summary"> <span class="none"></span> - Source Code Management</a> + Summary</a> </li> <li> - <a href="project-summary.html" title="Summary"> + <a href="team.html" title="Team"> <span class="none"></span> - Summary</a> + Team</a> </li> </ul> </li> - + <li> <a href="project-reports.html" title="Project Reports"> @@ -494,18 +496,18 @@ software distributed under the License i KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ---><h1>Apache Johnzon</h1> -<p>Apache Johnzon is a project providing an implementation of JsonProcessing (aka JSR-353) and a set of useful extension for this specification like an Object mapper, some JAX-RS providers and a WebSocket module provides a basic integration with Java WebSocket API (JSR-356).</p> -<div class="section"> +--> +<h1>Apache Johnzon</h1> +<p>Apache Johnzon is a project providing an implementation of JsonProcessing (aka JSR-353) and a set of useful extension +for this specification like an Object mapper, some JAX-RS providers and a WebSocket module provides a basic integration with Java WebSocket API (JSR-356).</p><section> <h2><a name="Status"></a>Status</h2> -<p>Apache Johnzon is a Top Level Project at the Apache Software Foundation (ASF). It fully implements the JSON-P_1.1 (JSR-353) and JSON-B_1.0 (JSR-367) specifications.</p></div> -<div class="section"> +<p>Apache Johnzon is a Top Level Project at the Apache Software Foundation (ASF). +It fully implements the JSON-P_1.1 (JSR-353) and JSON-B_1.0 (JSR-367) specifications.</p></section><section> <h2><a name="Get_started"></a>Get started</h2> -<p>Johnzon comes with four main modules.</p> -<div class="section"> -<h3><a name="Core_stable"></a>Core (stable)</h3> +<p>Johnzon comes with four main modules.</p><section> +<h3><a name="Core_.28stable.29"></a>Core (stable)</h3> -<div> +<div class="source"> <pre class="prettyprint linenums"> <dependency> <groupId>org.apache.johnzon</groupId> @@ -513,9 +515,11 @@ under the License. <version>${johnzon.version}</version> </dependency> </pre></div> -<p>This is the implementation of the JSON-P 1.1 specification. You’ll surely want to add the API as dependency too:</p> -<div> +<p>This is the implementation of the JSON-P 1.1 specification. +You'll surely want to add the API as dependency too:</p> + +<div class="source"> <pre class="prettyprint linenums"> <dependency> <groupId>org.apache.geronimo.specs</groupId> @@ -524,26 +528,20 @@ under the License. <scope>provided</scope> <!-- or compile if your environment doesn't provide it --> </dependency> </pre></div> -<div class="section"> -<h4><a name="Johnzon_Factory_Configurations"></a>Johnzon Factory Configurations</h4> -<div class="section"> +<section> +<h4><a name="Johnzon_Factory_Configurations"></a>Johnzon Factory Configurations</h4><section> <h5><a name="JsonGeneratorFactory"></a>JsonGeneratorFactory</h5> <p>The generator factory supports the standard properties (pretty one for example) but also:</p> - <ul> - -<li><tt>org.apache.johnzon.encoding</tt>: encoding to use for the generator when converting an OutputStream to a Writer.</li> - -<li><tt>org.apache.johnzon.buffer-strategy</tt>: how to get buffers (char buffer), default strategy is a queue/pool based one but you can switch it to a <tt>THREAD_LOCAL</tt> one. <tt>BY_INSTANCE</tt> (per call/prototype) and <tt>SINGLETON</tt> (single instance) are also supported but first one is generally slower and last one does not enable overflows.</li> - -<li><tt>org.apache.johnzon.default-char-buffer-generator</tt> (int): buffer size of the generator, it enables to work in memory to flush less often (for performances).</li> - -<li><tt>org.apache.johnzon.boundedoutputstreamwriter</tt> (int): when converting an <tt>OuputStream</tt> to a <tt>Writer</tt> it defines the buffer size (if > 0) +- 2 charaters (for the encoding logic). It enables a faster flushing to the actual underlying output stream combined with <tt>org.apache.johnzon.default-char-buffer-generator</tt>.</li> -</ul></div></div></div> -<div class="section"> -<h3><a name="JSON-P_Strict_Compliance_stable"></a>JSON-P Strict Compliance (stable)</h3> -<div> +<li><code>org.apache.johnzon.encoding</code>: encoding to use for the generator when converting an OutputStream to a Writer.</li> +<li><code>org.apache.johnzon.buffer-strategy</code>: how to get buffers (char buffer), default strategy is a queue/pool based one but you can switch it to a <code>THREAD_LOCAL</code> one. <code>BY_INSTANCE</code> (per call/prototype) and <code>SINGLETON</code> (single instance) are also supported but first one is generally slower and last one does not enable overflows.</li> +<li><code>org.apache.johnzon.default-char-buffer-generator</code> (int): buffer size of the generator, it enables to work in memory to flush less often (for performances).</li> +<li><code>org.apache.johnzon.boundedoutputstreamwriter</code> (int): when converting an <code>OuputStream</code> to a <code>Writer</code> it defines the buffer size (if > 0) +- 2 charaters (for the encoding logic). It enables a faster flushing to the actual underlying output stream combined with <code>org.apache.johnzon.default-char-buffer-generator</code>.</li> +</ul></section></section></section><section> +<h3><a name="JSON-P_Strict_Compliance_.28stable.29"></a>JSON-P Strict Compliance (stable)</h3> + +<div class="source"> <pre class="prettyprint linenums"> <dependency> <groupId>org.apache.johnzon</groupId> @@ -551,13 +549,16 @@ under the License. <version>${johnzon.version}</version> </dependency> </pre></div> -<p>This module enables to enforce a strict compliance of JsonPointer behavior on <tt>/-</tt> usage. Johnzon default implementation enables an extended usage of it for replace/remove and get operations. In that case, it will point to the last element of the array so it’s easy to replace/remove or get the last element of the array. For add operation, it remains the same, aka points to the element right after the last element of the array.</p> -<p>This module enforces Johnzon to be JSONP compliant and fail if <tt>/-</tt> is used for anything but add.</p> -<p>Note that you can even customize this behavior implementing your own <tt>JsonPointerFactory</tt> and changing the ordinal value to take a highest priority.</p></div> -<div class="section"> -<h3><a name="Mapper_stable"></a>Mapper (stable)</h3> -<div> +<p>This module enables to enforce a strict compliance of JsonPointer behavior on <code>/-</code> usage. +Johnzon default implementation enables an extended usage of it for replace/remove and get operations. +In that case, it will point to the last element of the array so it's easy to replace/remove or get the last element of the array. +For add operation, it remains the same, aka points to the element right after the last element of the array.</p> +<p>This module enforces Johnzon to be JSONP compliant and fail if <code>/-</code> is used for anything but add.</p> +<p>Note that you can even customize this behavior implementing your own <code>JsonPointerFactory</code> and changing the ordinal value to take a highest priority.</p></section><section> +<h3><a name="Mapper_.28stable.29"></a>Mapper (stable)</h3> + +<div class="source"> <pre class="prettyprint linenums"> <dependency> <groupId>org.apache.johnzon</groupId> @@ -565,9 +566,11 @@ under the License. <version>${johnzon.version}</version> </dependency> </pre></div> -<p>The mapper module allows you to use the implementation you want of Json Processing specification to map Json to Object and the opposite.</p> -<div> +<p>The mapper module allows you to use the implementation you want of Json Processing specification to map +Json to Object and the opposite.</p> + +<div class="source"> <pre class="prettyprint linenums"> final MySuperObject object = createObject(); @@ -576,10 +579,11 @@ mapper.writeObject(object, outputStream) final MySuperObject otherObject = mapper.readObject(inputStream, MySuperObject.class); </pre></div> + <p>The mapper uses a direct java to json representation.</p> <p>For instance this java bean:</p> -<div> +<div class="source"> <pre class="prettyprint linenums"> public class MyModel { private int id; @@ -588,21 +592,23 @@ public class MyModel { // getters/setters } </pre></div> + <p>will be mapped to:</p> -<div> +<div class="source"> <pre class="prettyprint linenums"> { "id": 1234, "name": "Johnzon doc" } </pre></div> -<p>Note that Johnzon supports several customization either directly on the MapperBuilder of through annotations.</p> -<div class="section"> -<h4><a name="aJohnzonIgnore"></a>@JohnzonIgnore</h4> -<p>@JohnzonIgnore is used to ignore a field. You can optionally say you ignore the field until some version if the mapper has a version:</p> -<div> +<p>Note that Johnzon supports several customization either directly on the MapperBuilder of through annotations.</p><section> +<h4><a name="a.40JohnzonIgnore"></a>@JohnzonIgnore</h4> +<p>@JohnzonIgnore is used to ignore a field. You can optionally say you ignore the field until some version +if the mapper has a version:</p> + +<div class="source"> <pre class="prettyprint linenums"> public class MyModel { @JohnzonIgnore @@ -611,9 +617,10 @@ public class MyModel { // getters/setters } </pre></div> + <p>Or to support name for version 3, 4, … but ignore it for 1 and 2:</p> -<div> +<div class="source"> <pre class="prettyprint linenums"> public class MyModel { @JohnzonIgnore(minVersion = 3) @@ -621,27 +628,22 @@ public class MyModel { // getters/setters } -</pre></div></div> -<div class="section"> -<h4><a name="aJohnzonConverter"></a>@JohnzonConverter</h4> +</pre></div> +</section><section> +<h4><a name="a.40JohnzonConverter"></a>@JohnzonConverter</h4> <p>Converters are used for advanced mapping between java and json.</p> <p>There are several converter types:</p> - <ol style="list-style-type: decimal"> - + <li>Converter: map java to json and the opposite based on the string representation</li> - <li>Adapter: a converter not limited to String</li> - <li>ObjectConverter.Reader: to converter from json to java at low level</li> - <li>ObjectConverter.Writer: to converter from java to json at low level</li> - <li>ObjectConverter.Codec: a Reader and Writer</li> </ol> <p>The most common is to customize date format but they all take. For that simple case we often use a Converter:</p> -<div> +<div class="source"> <pre class="prettyprint linenums"> public class LocalDateConverter implements Converter<LocalDate> { @Override @@ -655,10 +657,13 @@ public class LocalDateConverter implemen } } </pre></div> -<p>If you need a more advanced use case and modify the structure of the json (wrapping the value for instance) you will likely need Reader/Writer or a Codec.</p> -<p>Then once your converter developed you can either register globally on the MapperBuilder or simply decorate the field you want to convert with @JohnzonConverter:</p> -<div> +<p>If you need a more advanced use case and modify the structure of the json (wrapping the value for instance) +you will likely need Reader/Writer or a Codec.</p> +<p>Then once your converter developed you can either register globally on the MapperBuilder or simply decorate +the field you want to convert with @JohnzonConverter:</p> + +<div class="source"> <pre class="prettyprint linenums"> public class MyModel { @JohnzonConverter(LocalDateConverter.class) @@ -666,12 +671,13 @@ public class MyModel { // getters/setters } -</pre></div></div> -<div class="section"> -<h4><a name="aJohnzonProperty"></a>@JohnzonProperty</h4> -<p>Sometimes the json name is not java friendly (_foo or foo-bar or even 200 for instance). For that cases @JohnzonProperty allows to customize the name used:</p> +</pre></div> +</section><section> +<h4><a name="a.40JohnzonProperty"></a>@JohnzonProperty</h4> +<p>Sometimes the json name is not java friendly (_foo or foo-bar or even 200 for instance). For that cases +@JohnzonProperty allows to customize the name used:</p> -<div> +<div class="source"> <pre class="prettyprint linenums"> public class MyModel { @JohnzonProperty("__date") @@ -679,12 +685,12 @@ public class MyModel { // getters/setters } -</pre></div></div> -<div class="section"> -<h4><a name="aJohnzonAny"></a>@JohnzonAny</h4> -<p>If you don’t fully know your model but want to handle all keys you can use @JohnzonAny to capture/serialize them all:</p> +</pre></div> +</section><section> +<h4><a name="a.40JohnzonAny"></a>@JohnzonAny</h4> +<p>If you don't fully know your model but want to handle all keys you can use @JohnzonAny to capture/serialize them all:</p> -<div> +<div class="source"> <pre class="prettyprint linenums"> public class AnyMe { private String name; // Regular serialization for the known 'name' field @@ -715,27 +721,22 @@ public class AnyMe { this.unknownFields.put(key, val); } } -</pre></div></div> -<div class="section"> +</pre></div> +</section><section> <h4><a name="AccessMode"></a>AccessMode</h4> <p>On MapperBuilder you have several AccessMode available by default but you can also create your own one.</p> <p>The default available names are:</p> - <ul> - + <li>field: to use fields model and ignore getters/setters</li> - <li>method: use getters/setters (means if you have a getter but no setter you will serialize the property but not read it)</li> - <li>strict-method (default based on Pojo convention): same as method but getters for collections are not used to write</li> - <li>both: field and method accessors are merged together</li> </ul> -<p>You can use these names with setAccessModeName().</p></div></div> -<div class="section"> -<h3><a name="JAX-RS_stable"></a>JAX-RS (stable)</h3> +<p>You can use these names with setAccessModeName().</p></section></section><section> +<h3><a name="JAX-RS_.28stable.29"></a>JAX-RS (stable)</h3> -<div> +<div class="source"> <pre class="prettyprint linenums"> <dependency> <groupId>org.apache.johnzon</groupId> @@ -743,29 +744,26 @@ public class AnyMe { <version>${johnzon.version}</version> </dependency> </pre></div> -<p>JAX-RS module provides two providers (and underlying MessageBodyReaders and MessageBodyWriters):</p> +<p>JAX-RS module provides two providers (and underlying MessageBodyReaders and MessageBodyWriters):</p> <ul> - + <li>org.apache.johnzon.jaxrs.[Wildcard]JohnzonProvider: use Johnzon Mapper to map Object to Json and the opposite</li> - <li>org.apache.johnzon.jaxrs.[Wildcard]ConfigurableJohnzonProvider: same as JohnzonProvider but with setters to ease the configuration of the provider in most servers/containers</li> - <li>org.apache.johnzon.jaxrs.[Wildcard]JsrProvider: allows you to use JsrArray, JsrObject (more generally JsonStructure)</li> </ul> -<p>Note: Wildcard providers are basically the same as other provider but instead of application/json they support <i>/json, </i>/<i>+json, </i>/x-json, <i>/javascript, </i>/x-javascript. This split makes it easier to mix json and other MediaType in the same resource (like text/plain, xml etc since JAX-RS API always matches as true wildcard type in some version whatever the subtype is).</p> +<p>Note: Wildcard providers are basically the same as other provider but instead of application/json they support */json, <i>/</i>+json, */x-json, */javascript, */x-javascript. This +split makes it easier to mix json and other MediaType in the same resource (like text/plain, xml etc since JAX-RS API always matches as true wildcard type in some version whatever the subtype is).</p> <p>Tip: ConfigurableJohnzonProvider maps most of MapperBuilder configuration letting you configure it through any IoC including not programming language based formats.</p> -<p>IMPORTANT: when used with <tt>johnzon-core</tt>, <tt>NoContentException</tt> is not thrown in case of an empty incoming input stream by these providers except <tt>JsrProvider</tt> to limit the breaking changes.</p></div> -<div class="section"> +<p>IMPORTANT: when used with <code>johnzon-core</code>, <code>NoContentException</code> is not thrown in case of an empty incoming input stream by these providers except <code>JsrProvider</code> to limit the breaking changes.</p></section><section> <h3><a name="TomEE_Configuration"></a>TomEE Configuration</h3> <p>TomEE uses by default Johnzon as JAX-RS provider for versions 7.x. If you want however to customize it you need to follow this procedure:</p> - <ol style="list-style-type: decimal"> - + <li>Create a WEB-INF/openejb-jar.xml:</li> </ol> -<div> +<div class="source"> <pre class="prettyprint linenums"> <?xml version="1.0" encoding="UTF-8"?> <openejb-jar> @@ -781,11 +779,11 @@ public class AnyMe { </pre></div> <ol style="list-style-type: decimal"> - + <li>Create a WEB-INF/resources.xml to define johnzon service which will be use to instantiate the provider</li> </ol> -<div> +<div class="source"> <pre class="prettyprint linenums"> <?xml version="1.0" encoding="UTF-8"?> <resources> @@ -805,70 +803,60 @@ public class AnyMe { </resources> </pre></div> -<p>Note: as you can see you mainly just need to define a service with the id johnzon (same as in openejb-jar.xml) and you can reference other instances using $id for services and @id for resources.</p></div> -<div class="section"> -<h3><a name="JSON-B_JSON-B_1.0_compliant"></a>JSON-B (JSON-B 1.0 compliant)</h3> + +<p>Note: as you can see you mainly just need to define a service with the id johnzon (same as in openejb-jar.xml) +and you can reference other instances using $id for services and @id for resources.</p></section><section> +<h3><a name="JSON-B_.28JSON-B_1.0_compliant.29"></a>JSON-B (JSON-B 1.0 compliant)</h3> <p>Johnzon provides a module johnzon-jsonb implementing JSON-B standard based on Johnzon Mapper.</p> <p>It fully reuses the JSON-B as API.</p> -<p>However it supports some specific properties to wire to the native johnzon configuration - see <tt>JohnzonBuilder</tt> for details. One example is <tt>johnzon.interfaceImplementationMapping</tt> which will support a <tt>Map<Class,Class></tt> to map interfaces to implementations to use for deserialization.</p> +<p>However it supports some specific properties to wire to the native johnzon configuration - see <code>JohnzonBuilder</code> for details. +One example is <code>johnzon.interfaceImplementationMapping</code> which will support a <code>Map<Class,Class></code> to map interfaces to implementations +to use for deserialization.</p> <p>JsonbConfig specific properties:</p> - <ul> - + <li>johnzon.use-big-decimal-for-object: true to use BigDecimal for numbers not typed (Object), false to adjust the type to the number size, true by default.</li> - <li>johnzon.support-enum-container-deserialization: prevent EnumMap/EnumSet instantiation, true by default.</li> - <li>johnzon.attributeOrder: Comparator instance to sort properties by name.</li> - <li>johnzon.deduplicateObjects: should instances be deduplicated.</li> - -<li>johnzon.supportsPrivateAccess: should private constructors/methods with <tt>@JsonbCreator</tt> be used too.</li> - -<li>johnzon.fail-on-unknown-properties: should unmapped properties fail the mapping. Similar to <tt>jsonb.fail-on-unknown-properties</tt>.</li> - +<li>johnzon.supportsPrivateAccess: should private constructors/methods with <code>@JsonbCreator</code> be used too.</li> +<li>johnzon.fail-on-unknown-properties: should unmapped properties fail the mapping. Similar to <code>jsonb.fail-on-unknown-properties</code>.</li> <li>johnzon.readAttributeBeforeWrite: should collection be read before being written, it enables to have an “append” mode.</li> - <li>johnzon.autoAdjustBuffer: should internal read buffers be autoadjusted to stay fixed.</li> - <li>johnzon.serialize-value-filter: enable to set a filter to not serialize some values.</li> - <li>johnzon.cdi.activated: should cdi support be active.</li> - <li>johnzon.accessMode: custom access mode, note that it can disable some JSON-B feature (annotations support).</li> - <li>johnzon.accessModeDelegate: delegate access mode used by JsonbAccessModel. Enables to enrich default access mode.</li> - -<li>johnzon.failOnMissingCreatorValues: should the mapping fail when a <tt>@JsonbCreator</tt> misses some values.</li> +<li>johnzon.failOnMissingCreatorValues: should the mapping fail when a <code>@JsonbCreator</code> misses some values.</li> </ul> <p>TIP: more in JohnzonBuilder class.</p> -<p>A JAX-RS provider based on JSON-B is provided in the module as well. It is <tt>org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider</tt>.</p> -<p>IMPORTANT: in JAX-RS 1.0 the provider can throw any exception he wants for an empty incoming stream on reader side. This had been broken in JAX-RS 2.x where it must throw a <tt>javax.ws.rs.core.NoContentException</tt>. To ensure you can pick the implementation you can and limit the breaking changes, you can set ̀throwNoContentExceptionOnEmptyStreams<tt>on the provider to switch between both behaviors. -Default will be picked from the current available API. Finally, this behavior only works with</tt>johnzon-core`.</p> -<div class="section"> -<h4><a name="Integration_with_JsonValue"></a>Integration with <tt>JsonValue</tt></h4> -<p>You can use some optimization to map a <tt>JsonObject</tt> to a POJO using Johnzon <tt>JsonValueReader</tt> - or any implementation of  <tt>Reader</tt> implementing <tt>Supplier<JsonStructure></tt> - and <tt>JsonValueWriter</tt> - or any implementation of  <tt>Writer</tt> implementing <tt>Consumer<JsonValue></tt> -:</p> +<p>A JAX-RS provider based on JSON-B is provided in the module as well. It is <code>org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider</code>.</p> +<p>IMPORTANT: in JAX-RS 1.0 the provider can throw any exception he wants for an empty incoming stream on reader side. This had been broken in JAX-RS 2.x where it must throw a <code>jakarta.ws.rs.core.NoContentException</code>. +To ensure you can pick the implementation you can and limit the breaking changes, you can set ̀throwNoContentExceptionOnEmptyStreams<code>on the provider to switch between both behaviors. Default will be picked from the current available API. Finally, this behavior only works with</code>johnzon-core`.</p><section> +<h4><a name="Integration_with_JsonValue"></a>Integration with <code>JsonValue</code></h4> +<p>You can use some optimization to map a <code>JsonObject</code> to a POJO using Johnzon <code>JsonValueReader</code> - or any implementation of  <code>Reader</code> implementing <code>Supplier<JsonStructure></code> - and <code>JsonValueWriter</code> - or any implementation of  <code>Writer</code> implementing <code>Consumer<JsonValue></code> -:</p> -<div> +<div class="source"> <pre class="prettyprint linenums"> final JsonValueReader<Simple> reader = new JsonValueReader<>(Json.createObjectBuilder().add("value", "simple").build()); final Jsonb jsonb = getJohnsonJsonb(); final Simple simple = jsonb.fromJson(reader, SomeModel.class); </pre></div> -<div> +<div class="source"> <pre class="prettyprint linenums"> final JsonValueWriter writer = new JsonValueWriter(); final Jsonb jsonb = getJohnsonJsonb(); jsonb.toJson(object, writer); final JsonObject jsonObject = writer.getObject(); </pre></div> -<p>These two example will not use any IO and directly map the <tt>JsonValue</tt> to/from a POJO.</p> -<p>Also note that, as an experimental extension and pre-available feature of the next specification version, <tt>org.apache.johnzon.jsonb.api.experimental.JsonbExtension</tt> enables to map POJO to <tt>JsonValue</tt> and the opposite.</p></div></div> -<div class="section"> + +<p>These two example will not use any IO and directly map the <code>JsonValue</code> to/from a POJO.</p> +<p>Also note that, as an experimental extension and pre-available feature of the next specification version, <code>org.apache.johnzon.jsonb.api.experimental.JsonbExtension</code> enables +to map POJO to <code>JsonValue</code> and the opposite.</p></section></section><section> <h3><a name="Websocket"></a>Websocket</h3> -<div> +<div class="source"> <pre class="prettyprint linenums"> <dependency> <groupId>org.apache.johnzon</groupId> @@ -876,82 +864,64 @@ final JsonObject jsonObject = writer.get <version>${johnzon.version}</version> </dependency> </pre></div> + <p>WebSocket module provides a basic integration with Java WebSocket API (JSR 356).</p> <p>Integration is at codec level (encoder/decoder). There are two families of codecs:</p> - <ul> - + <li>The ones based on JSON-P (JsonObject, JsonArray, JsonStructure)</li> - <li>The ones based on Johnzon Mapper</li> </ul> <p>Note that if you want to control the Mapper or JSON-B instance used by decoders you can set up the associated servlet listeners:</p> - <ul> - + <li>org.apache.johnzon.websocket.internal.mapper.MapperLocator for johnzon-mapper</li> - <li>org.apache.johnzon.websocket.jsonb.JsonbLocator for JSON-B</li> </ul> -<p>if you write in the servlet context an attribute named <tt>org.apache.johnzon.websocket.internal.mapper.MapperLocator.mapper</tt> (it is a <tt>Supplier<Mapper></tt>) or <tt>org.apache.johnzon.websocket.jsonb.JsonbLocator.jsonb</tt> (depending the implementation you use) it will be used instead of the default instance.</p> -<div class="section"> +<p>if you write in the servlet context an attribute named <code>org.apache.johnzon.websocket.internal.mapper.MapperLocator.mapper</code> (it is a <code>Supplier<Mapper></code>) or <code>org.apache.johnzon.websocket.jsonb.JsonbLocator.jsonb</code> (depending the implementation you use) it will be used instead of the default instance.</p><section> <h4><a name="JSON-P_integration"></a>JSON-P integration</h4> <p>Encoders:</p> - <ul> - -<li> <tt>org.apache.johnzon.websocket.jsr.JsrObjectEncoder</tt></li> - -<li> <tt>org.apache.johnzon.websocket.jsr.JsrArrayEncoder</tt></li> - -<li> <tt>org.apache.johnzon.websocket.jsr.JsrStructureEncoder</tt></li> + +<li> <code>org.apache.johnzon.websocket.jsr.JsrObjectEncoder</code></li> +<li> <code>org.apache.johnzon.websocket.jsr.JsrArrayEncoder</code></li> +<li> <code>org.apache.johnzon.websocket.jsr.JsrStructureEncoder</code></li> </ul> <p>Decoders:</p> - <ul> - -<li> <tt>org.apache.johnzon.websocket.jsr.JsrObjectDecoder</tt></li> - -<li> <tt>org.apache.johnzon.websocket.jsr.JsrArrayDecoder</tt></li> - -<li> <tt>org.apache.johnzon.websocket.jsr.JsrStructureDecoder</tt></li> -</ul></div> -<div class="section"> + +<li> <code>org.apache.johnzon.websocket.jsr.JsrObjectDecoder</code></li> +<li> <code>org.apache.johnzon.websocket.jsr.JsrArrayDecoder</code></li> +<li> <code>org.apache.johnzon.websocket.jsr.JsrStructureDecoder</code></li> +</ul></section><section> <h4><a name="Mapper_integration"></a>Mapper integration</h4> <p>Encoder:</p> - <ul> - -<li> <tt>org.apache.johnzon.websocket.mapper.JohnzonTextEncoder</tt></li> + +<li> <code>org.apache.johnzon.websocket.mapper.JohnzonTextEncoder</code></li> </ul> <p>Decoder:</p> - <ul> - -<li> <tt>org.apache.johnzon.websocket.mapper.JohnzonTextDecoder</tt></li> -</ul></div> -<div class="section"> + +<li> <code>org.apache.johnzon.websocket.mapper.JohnzonTextDecoder</code></li> +</ul></section><section> <h4><a name="JSON-B_integration"></a>JSON-B integration</h4> <p>Encoder:</p> - <ul> - -<li> <tt>org.apache.johnzon.websocket.jsonb.JsonbTextEncoder</tt></li> + +<li> <code>org.apache.johnzon.websocket.jsonb.JsonbTextEncoder</code></li> </ul> <p>Decoder:</p> - <ul> - -<li> <tt>org.apache.johnzon.websocket.jsonb.JsonbTextDecoder</tt></li> -</ul></div> -<div class="section"> -<h4><a name="Sample"></a>Sample</h4> -<div class="section"> + +<li> <code>org.apache.johnzon.websocket.jsonb.JsonbTextDecoder</code></li> +</ul></section><section> +<h4><a name="Sample"></a>Sample</h4><section> <h5><a name="JSON-P_Samples"></a>JSON-P Samples</h5> -<p>On server and client side configuration is easy: just provide the <tt>encoders</tt> and <tt>decoders</tt> parameters to <tt>@[Server|Client]Endpoint</tt> (or <tt>EndpointConfig</tt> if you use programmatic API)):</p> +<p>On server and client side configuration is easy: just provide the <code>encoders</code> and <code>decoders</code> parameters to <code>@[Server|Client]Endpoint</code> +(or <code>EndpointConfig</code> if you use programmatic API)):</p> -<div class="source"> -<div class="source"><pre class="prettyprint linenums">@ClientEndpoint(encoders = JsrObjectEncoder.class, decoders = JsrObjectDecoder.class) +<div class="source"><pre class="prettyprint linenums"><code>@ClientEndpoint(encoders = JsrObjectEncoder.class, decoders = JsrObjectDecoder.class) public class JsrClientEndpointImpl { @OnMessage public void on(final JsonObject message) { @@ -966,24 +936,23 @@ public class JsrClientEndpointImpl { // ... } } -</pre></div></div></div> -<div class="section"> +</code></pre></div></section><section> <h5><a name="WebSocket_Samples"></a>WebSocket Samples</h5> -<p>Server configuration is as simple as providing <tt>encoders</tt> and <tt>decoders</tt> parameters to <tt>@ServerEndpoint</tt>:</p> +<p>Server configuration is as simple as providing <code>encoders</code> and <code>decoders</code> parameters to <code>@ServerEndpoint</code>:</p> -<div class="source"> -<div class="source"><pre class="prettyprint linenums">@ServerEndpoint(value = "/server", encoders = JohnzonTextEncoder.class, decoders = JohnzonTextDecoder.class) +<div class="source"><pre class="prettyprint linenums"><code>@ServerEndpoint(value = "/server", encoders = JohnzonTextEncoder.class, decoders = JohnzonTextDecoder.class) public class ServerEndpointImpl { @OnMessage public void on(final Session session, final Message message) { // ... } } -</pre></div></div> -<p>Client configuration is almost the same excepted in this case it is not possible for Johnzon to guess the type you expect so you’ll need to provide it. In next sample it is done just extending <tt>JohnzonTextDecoder</tt> in <tt>MessageDecoder</tt>.</p> +</code></pre></div> +<p>Client configuration is almost the same excepted in this case it is not possible for Johnzon +to guess the type you expect so you'll need to provide it. In next sample it is done just extending <code>JohnzonTextDecoder</code> +in <code>MessageDecoder</code>.</p> -<div class="source"> -<div class="source"><pre class="prettyprint linenums">@ClientEndpoint(encoders = JohnzonTextEncoder.class, decoders = ClientEndpointImpl.MessageDecoder.class) +<div class="source"><pre class="prettyprint linenums"><code>@ClientEndpoint(encoders = JohnzonTextEncoder.class, decoders = ClientEndpointImpl.MessageDecoder.class) public class ClientEndpointImpl { @OnMessage public void on(final Message message) { @@ -996,11 +965,10 @@ public class ClientEndpointImpl { } } } -</pre></div></div></div></div></div> -<div class="section"> +</code></pre></div></section></section></section><section> <h3><a name="JSON-B_Extra"></a>JSON-B Extra</h3> -<div> +<div class="source"> <pre class="prettyprint linenums"> <dependency> <groupId>org.apache.johnzon</groupId> @@ -1008,33 +976,33 @@ public class ClientEndpointImpl { <version>${johnzon.version}</version> </dependency> </pre></div> -<p>This module provides some extension to JSON-B.</p> -<div class="section"> + +<p>This module provides some extension to JSON-B.</p><section> <h4><a name="Polymorphism"></a>Polymorphism</h4> -<p>This extension provides a way to handle polymorphism:</p> -<p>For the deserialization side you have to list the potential children on the root class:</p> +<p>This extension shouldn't be used anymore if you don't absolutely rely on the JSON format it generates/parses. +Use JSON-B 3 polymorphism instead. It provides a way to handle polymorphism:</p> +<p>For the deserialization side you have to list the potential children +on the root class:</p> -<div class="source"> -<div class="source"><pre class="prettyprint linenums">@Polymorphic.JsonChildren({ +<div class="source"><pre class="prettyprint linenums"><code>@Polymorphic.JsonChildren({ Child1.class, Child2.class }) public abstract class Root { public String name; } -</pre></div></div> -<p>Then on children you bind an “id” for each of them (note that if you don’t give one, the simple name is used):</p> +</code></pre></div> +<p>Then on children you bind an “id” for each of them (note that if you don't give one, the simple name is used):</p> -<div class="source"> -<div class="source"><pre class="prettyprint linenums">@Polymorphic.JsonId("first") +<div class="source"><pre class="prettyprint linenums"><code>@Polymorphic.JsonId("first") public class Child1 extends Root { public String type; } -</pre></div></div> -<p>Finally on the field using the root type (polymorphic type) you can bind the corresponding serializer and/or deserializer:</p> +</code></pre></div> +<p>Finally on the field using the root type (polymorphic type) you can +bind the corresponding serializer and/or deserializer:</p> -<div class="source"> -<div class="source"><pre class="prettyprint linenums">public class Wrapper { +<div class="source"><pre class="prettyprint linenums"><code>public class Wrapper { @JsonbTypeSerializer(Polymorphic.Serializer.class) @JsonbTypeDeserializer(Polymorphic.DeSerializer.class) public Root root; @@ -1043,12 +1011,11 @@ public class Child1 extends Root { @JsonbTypeDeserializer(Polymorphic.DeSerializer.class) public List<Root> roots; } -</pre></div></div> -<p>Binding the polymophic serializer and/or deserializer <i>must not</i> be done using <tt>JsonbConfig.withSerializers</tt> / <tt>JsonbConfig.withDeserializers</tt>, as it is designed to work <i>only</i> with binding performed <i>using annotations</i>.</p></div></div> -<div class="section"> +</code></pre></div> +<p>Binding the polymophic serializer and/or deserializer <i>must not</i> be done using <code>JsonbConfig.withSerializers</code> / <code>JsonbConfig.withDeserializers</code>, as it is designed to work <i>only</i> with binding performed <i>using annotations</i>.</p></section></section><section> <h3><a name="JSON_Schema"></a>JSON Schema</h3> -<div> +<div class="source"> <pre class="prettyprint linenums"> <dependency> <groupId>org.apache.johnzon</groupId> @@ -1056,9 +1023,10 @@ public class Child1 extends Root { <version>${johnzon.version}</version> </dependency> </pre></div> + <p>This module provides a way to validate an instance against a <a class="externalLink" href="http://json-schema.org/">JSON Schema</a>.</p> -<div> +<div class="source"> <pre class="prettyprint linenums"> // long live instances (@ApplicationScoped/@Singleton) JsonObject schema = getJsonSchema(); @@ -1074,18 +1042,16 @@ ValidatinResult result = validator.apply validator.close(); factory.close(); </pre></div> -<p>Known limitations are (feel free to do a PR on github to add these missing features):</p> +<p>Known limitations are (feel free to do a PR on github to add these missing features):</p> <ul> - -<li>Doesn’t support references in the schema</li> - -<li>Doesn’t support: dependencies, propertyNames, if/then/else, allOf/anyOf/oneOf/not, format validations</li> -</ul></div> -<div class="section"> + +<li>Doesn't support references in the schema</li> +<li>Doesn't support: dependencies, propertyNames, if/then/else, allOf/anyOf/oneOf/not, format validations</li> +</ul></section><section> <h3><a name="JSON_Logic"></a>JSON Logic</h3> -<div> +<div class="source"> <pre class="prettyprint linenums"> <dependency> <groupId>org.apache.johnzon</groupId> @@ -1098,9 +1064,10 @@ factory.close(); <version>${johnzon.version}</version> </dependency> </pre></div> + <p>This module provides a way to execute any <a class="externalLink" href="http://jsonlogic.com/">JSON Logic</a> expression.</p> -<div> +<div class="source"> <pre class="prettyprint linenums"> final JohnzonJsonLogic jsonLogic = new JohnzonJsonLogic(); final JsonValue result = jsonLogic.apply( @@ -1114,248 +1081,49 @@ final JsonValue result = jsonLogic.apply .build(), JsonValue.EMPTY_JSON_ARRAY); </pre></div> + <p>Default operators are supported - except “log” one to let you pick the logger (impl + name) you want.</p> <p>To register a custom operator just do it on your json logic instance:</p> -<div> +<div class="source"> <pre class="prettyprint linenums"> final JohnzonJsonLogic jsonLogic = new JohnzonJsonLogic(); jsonLogic.registerOperator( "log", (jsonLogic, config, args) -> log.info(String.valueOf(jsonLogic.apply(config, args))); </pre></div> -<p>Note that by default the set of standard JSON Logic operators is enriched with JSON-P jsonpatch, json merge diff and json merge patch operators.</p></div> -<div class="section"> + +<p>Note that by default the set of standard JSON Logic operators is enriched with JSON-P jsonpatch, json merge diff and json merge patch operators.</p></section><section> <h3><a name="OSGi_JAX-RS_Whiteboard"></a>OSGi JAX-RS Whiteboard</h3> -<p>Though Johnzon artifacts are OSGi bundles to begin with, this module provides further integration with the <a class="externalLink" href="https://osgi.org/specification/osgi.cmpn/7.0.0/service.jaxrs.html">OSGi JAX-RS Whiteboard</a> and <a class="externalLink" href="https://osgi.org/specification/osgi.enterprise/7.0.0/service.cdi.html">OSGi CDI Integration</a> specifications.</p> -<div class="section"> -<div class="section"> +<p>Though Johnzon artifacts are OSGi bundles to begin with, this module provides further integration with the <a class="externalLink" href="https://osgi.org/specification/osgi.cmpn/7.0.0/service.jaxrs.html">OSGi JAX-RS Whiteboard</a> and <a class="externalLink" href="https://osgi.org/specification/osgi.enterprise/7.0.0/service.cdi.html">OSGi CDI Integration</a> specifications.</p><section><section> <h5><a name="JAX-RS_JSON-B"></a>JAX-RS JSON-B</h5> -<p>This module provides <tt>MessageBodyWriter</tt> and <tt>MessageBodyReader</tt> extensions for the media type <tt>application/json</tt> (by default) to whiteboard JAX-RS Applications.</p> -<p>Configuration of this extension is managed via Configuration Admin using the <b>pid</b> <tt>org.apache.johnzon.jaxrs.jsonb</tt> and defines a Metatype schema with the following properties:</p> - -<table border="0" class="table table-striped"> - <thead> - -<tr class="a"> - -<th>Property </th> - -<th>Synopsis </th> - -<th>Type </th> - -<th>Default </th> - </tr> - </thead> - <tbody> - -<tr class="b"> - -<td><tt>ignores</tt> </td> - -<td>List of fully qualified class names to ignore </td> - -<td>String[] </td> - -<td>empty </td> - </tr> - -<tr class="a"> - -<td><tt>osgi.jaxrs.application.select</tt> </td> - -<td>Filter expression used to match the extension to JAX-RS Whiteboard Applications </td> - -<td>String </td> - -<td><tt>(!(johnzon.jsonb=false))</tt> <i>(which is a convention allowing the extension to bind to all applications unless the application is configured with <tt>johnzon.jsonb=false</tt>)</i> </td> - </tr> - -<tr class="b"> - -<td><tt>osgi.jaxrs.media.type</tt> </td> - -<td>List of media types handled by the extension </td> - -<td>String[] </td> - -<td><tt>application/json</tt> </td> - </tr> - -<tr class="a"> - -<td><tt>throw.no.content.exception.on.empty.streams</tt> </td> - -<td> </td> - -<td>boolean </td> - -<td><tt>false</tt> </td> - </tr> - -<tr class="b"> - -<td><tt>fail.on.unknown.properties</tt> </td> - -<td> </td> - -<td>boolean </td> - -<td><tt>false</tt> </td> - </tr> - -<tr class="a"> - -<td><tt>use.js.range</tt> </td> - -<td> </td> - -<td>boolean </td> - -<td><tt>false</tt> </td> - </tr> - -<tr class="b"> - -<td><tt>other.properties</tt> </td> - -<td> </td> - -<td>String </td> - -<td>empty </td> - </tr> - -<tr class="a"> - -<td><tt>ijson</tt> </td> - -<td> </td> - -<td>boolean </td> - -<td><tt>false</tt> </td> - </tr> - -<tr class="b"> - -<td><tt>encoding</tt> </td> - -<td> </td> - -<td>String </td> - -<td>empty </td> - </tr> - -<tr class="a"> - -<td><tt>binary.datastrategy</tt> </td> - -<td> </td> - -<td>String </td> - -<td>empty </td> - </tr> - -<tr class="b"> - -<td><tt>property.naming.strategy</tt> </td> - -<td> </td> - -<td>String </td> - -<td>empty </td> - </tr> - -<tr class="a"> - -<td><tt>property.order.strategy</tt> </td> - -<td> </td> - -<td>String </td> - -<td>empty </td> - </tr> - -<tr class="b"> - -<td><tt>null.values</tt> </td> - -<td> </td> - -<td>boolean </td> - -<td><tt>false</tt> </td> - </tr> - -<tr class="a"> - -<td><tt>pretty</tt> </td> - -<td> </td> - -<td>boolean </td> - -<td><tt>false</tt> </td> - </tr> - -<tr class="b"> - -<td><tt>fail.on.missing.creator.values</tt> </td> - -<td> </td> - -<td>boolean </td> - -<td><tt>false</tt> </td> - </tr> - -<tr class="a"> - -<td><tt>polymorphic.serialization.predicate</tt> </td> - -<td> </td> - -<td>String </td> - -<td>empty </td> - </tr> - -<tr class="b"> - -<td><tt>polymorphic.deserialization.predicate</tt> </td> - -<td> </td> - -<td>String </td> - -<td>empty </td> - </tr> - -<tr class="a"> - -<td><tt>polymorphic.discriminator</tt> </td> - -<td> </td> - -<td>String </td> - -<td>empty </td> - </tr> - </tbody> -</table></div> -<div class="section"> +<p>This module provides <code>MessageBodyWriter</code> and <code>MessageBodyReader</code> extensions for the media type <code>application/json</code> (by default) to whiteboard JAX-RS Applications.</p> +<p>Configuration of this extension is managed via Configuration Admin using the <b>pid</b> <code>org.apache.johnzon.jaxrs.jsonb</code> and defines a Metatype schema with the following properties:</p> +<p>| Property | Synopsis | Type | Default | +| —- | ————- | – | – | +| <code>ignores</code> | List of fully qualified class names to ignore | String[] | empty | +| <code>osgi.jaxrs.application.select</code> | Filter expression used to match the extension to JAX-RS Whiteboard Applications | String | <code>(!(johnzon.jsonb=false))</code> <i>(which is a convention allowing the extension to bind to all applications unless the application is configured with <code>johnzon.jsonb=false</code>)</i> | +| <code>osgi.jaxrs.media.type</code> | List of media types handled by the extension | String[] | <code>application/json</code> | +| <code>throw.no.content.exception.on.empty.streams</code> | | boolean | <code>false</code> | +| <code>fail.on.unknown.properties</code> | | boolean | <code>false</code> | +| <code>use.js.range</code> | | boolean | <code>false</code> | +| <code>other.properties</code> | | String | empty | +| <code>ijson</code> | | boolean | <code>false</code> | +| <code>encoding</code> | | String | empty | +| <code>binary.datastrategy</code> | | String | empty | +| <code>property.naming.strategy</code> | | String | empty | +| <code>property.order.strategy</code> | | String | empty | +| <code>null.values</code> | | boolean | <code>false</code> | +| <code>pretty</code> | | boolean | <code>false</code> | +| <code>fail.on.missing.creator.values</code> | | boolean | <code>false</code> | +| <code>polymorphic.serialization.predicate</code> | | String | empty | +| <code>polymorphic.deserialization.predicate</code> | | String | empty | +| <code>polymorphic.discriminator</code> | | String | empty |</p></section><section> <h5><a name="CDI"></a>CDI</h5> -<p>Since JSON-B specification provides an integration with the CDI specification to handle caching, this module also provides such integration for OSGi CDI Integration specification by providing an <tt>javax.enterprise.inject.spi.Extension</tt> service with the required service property <tt>osgi.cdi.extension</tt> with the value <tt>JavaJSONB</tt>.</p></div> -<div class="section"> +<p>Since JSON-B specification provides an integration with the CDI specification to handle caching, this module also provides such integration for OSGi CDI Integration specification by providing an <code>jakarta.enterprise.inject.spi.Extension</code> service with the required service property <code>osgi.cdi.extension</code> with the value <code>JavaJSONB</code>.</p></section><section> <h5><a name="Implicit_Extensions"></a>Implicit Extensions</h5> -<p>In order to reduce the burden of configuration Apache Aries CDI (the OSGi CDI Integration RI) provides a feature of implicit extensions. These are extensions which the developer doesn’t have to configure a requirement for in their CDI bundle. The Johnzon JSON-B CDI extension is such an extension and as such when running in Aries CDI does not need to be required.</p> -<p>This is achieve using the service property <tt>aries.cdi.extension.mode=implicit</tt>.</p></div></div></div></div> +<p>In order to reduce the burden of configuration Apache Aries CDI (the OSGi CDI Integration RI) provides a feature of implicit extensions. These are extensions which the developer doesn't have to configure a requirement for in their CDI bundle. The Johnzon JSON-B CDI extension is such an extension and as such when running in Aries CDI does not need to be required.</p> +<p>This is achieve using the service property <code>aries.cdi.extension.mode=implicit</code>.</p></section></section></section></section> </div> </div> </div> @@ -1367,7 +1135,7 @@ jsonLogic.registerOperator( <div class="row-fluid"> <div class="row span16"><div>Apache Johnzon, Apache, the Apache feather logo, and the Apache Johnzon project logos are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div> - <a href="http://johnzon.apache.org/privacy-policy.html">Privacy Policy</a> + <a href="https://johnzon.apache.org/privacy-policy.html">Privacy Policy</a> </div> </div>
Added: johnzon/site/publish/issue-management.html URL: http://svn.apache.org/viewvc/johnzon/site/publish/issue-management.html?rev=1909701&view=auto ============================================================================== --- johnzon/site/publish/issue-management.html (added) +++ johnzon/site/publish/issue-management.html Tue May 9 13:46:22 2023 @@ -0,0 +1,516 @@ +<!DOCTYPE html> +<!-- + | Generated by Apache Maven Doxia Site Renderer 1.11.1 at 2023-05-09 + | Rendered using Apache Maven Fluido Skin 1.5 +--> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta name="Date-Revision-yyyymmdd" content="20230509" /> + <meta http-equiv="Content-Language" content="en" /> + <title>Apache Johnzon – Issue Management</title> + <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" /> + <link rel="stylesheet" href="./css/site.css" /> + <link rel="stylesheet" href="./css/print.css" media="print" /> + + + <script type="text/javascript" src="./js/apache-maven-fluido-1.5.min.js"></script> + + <script type="text/javascript"> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-3211522-15', 'apache.org'); + ga('send', 'pageview'); + </script> + </head> + <body class="topBarEnabled"> + + + + + + <div id="topbar" class="navbar navbar-fixed-top "> + <div class="navbar-inner"> + <div class="container-fluid"> + <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar"> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </a> + + <a class="brand" href="index.html" title="Apache Johnzon"> + + + Apache Johnzon + + </a> + + <ul class="nav"> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown">User Guide <b class="caret"></b></a> + <ul class="dropdown-menu"> + + <li> <a href="index.html" title="Home">Home</a> +</li> + + <li> <a href="download.html" title="Download">Download</a> +</li> + + <li> <a href="apidocs/index.html" title="Javadoc">Javadoc</a> +</li> + + <li> <a href="source-repository.html" title="Source Code">Source Code</a> +</li> + + <li> <a href="changelog.html" title="Changelog">Changelog</a> +</li> + + <li> <a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a> +</li> + </ul> + </li> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown">Old Releases <b class="caret"></b></a> + <ul class="dropdown-menu"> + + <li> <a href="archives/0.7-incubating/index.html" title="Johnzon 0.7-incubating">Johnzon 0.7-incubating</a> +</li> + + <li> <a href="archives/0.2-incubating/index.html" title="Johnzon 0.2-incubating">Johnzon 0.2-incubating</a> +</li> + + <li> <a href="archives/0.1-incubating/index.html" title="Johnzon 0.1-incubating">Johnzon 0.1-incubating</a> +</li> + </ul> + </li> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a> + <ul class="dropdown-menu"> + + <li class="dropdown-submenu"> + <a href="project-info.html" title="Project Information">Project Information</a> + <ul class="dropdown-menu"> + <li> <a href="ci-management.html" title="CI Management">CI Management</a> +</li> + <li> <a href="dependencies.html" title="Dependencies">Dependencies</a> +</li> + <li> <a href="dependency-convergence.html" title="Dependency Convergence">Dependency Convergence</a> +</li> + <li> <a href="dependency-info.html" title="Dependency Information">Dependency Information</a> +</li> + <li> <a href="dependency-management.html" title="Dependency Management">Dependency Management</a> +</li> + <li> <a href="distribution-management.html" title="Distribution Management">Distribution Management</a> +</li> + <li> <a href="index.html" title="About">About</a> +</li> + <li> <a href="issue-management.html" title="Issue Management">Issue Management</a> +</li> + <li> <a href="licenses.html" title="Licenses">Licenses</a> +</li> + <li> <a href="mailing-lists.html" title="Mailing Lists">Mailing Lists</a> +</li> + <li> <a href="modules.html" title="Project Modules">Project Modules</a> +</li> + <li> <a href="plugin-management.html" title="Plugin Management">Plugin Management</a> +</li> + <li> <a href="plugins.html" title="Plugins">Plugins</a> +</li> + <li> <a href="scm.html" title="Source Code Management">Source Code Management</a> +</li> + <li> <a href="summary.html" title="Summary">Summary</a> +</li> + <li> <a href="team.html" title="Team">Team</a> +</li> + </ul> + </li> + + <li class="dropdown-submenu"> + <a href="project-reports.html" title="Project Reports">Project Reports</a> + <ul class="dropdown-menu"> + <li> <a href="cpd.html" title="CPD">CPD</a> +</li> + <li> <a href="pmd.html" title="PMD">PMD</a> +</li> + <li> <a href="apidocs/index.html" title="Javadoc">Javadoc</a> +</li> + <li> <a href="surefire-report.html" title="Surefire Report">Surefire Report</a> +</li> + <li> <a href="checkstyle.html" title="Checkstyle">Checkstyle</a> +</li> + <li> <a href="dependency-updates-report.html" title="Dependency Updates Report">Dependency Updates Report</a> +</li> + <li> <a href="plugin-updates-report.html" title="Plugin Updates Report">Plugin Updates Report</a> +</li> + <li> <a href="property-updates-report.html" title="Property Updates Report">Property Updates Report</a> +</li> + <li> <a href="taglist.html" title="Tag List">Tag List</a> +</li> + <li> <a href="changelog.html" title="Change Log">Change Log</a> +</li> + <li> <a href="file-activity.html" title="File Activity">File Activity</a> +</li> + <li> <a href="dev-activity.html" title="Developer Activity">Developer Activity</a> +</li> + <li> <a href="jira-report.html" title="JIRA Report">JIRA Report</a> +</li> + </ul> + </li> + </ul> + </li> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown">Security <b class="caret"></b></a> + <ul class="dropdown-menu"> + + <li> <a href="security.html" title="Report vulnerability">Report vulnerability</a> +</li> + </ul> + </li> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a> + <ul class="dropdown-menu"> + + <li> <a href="http://www.apache.org/foundation/how-it-works.html" title="How Apache Works">How Apache Works</a> +</li> + + <li> <a href="http://www.apache.org/foundation/" title="Foundation">Foundation</a> +</li> + + <li> <a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsoring Apache">Sponsoring Apache</a> +</li> + + <li> <a href="http://www.apache.org/foundation/thanks.html" title="Thanks">Thanks</a> +</li> + </ul> + </li> + </ul> + + + + + </div> + + </div> + </div> + </div> + + <div class="container-fluid"> + <div id="banner"> + <div class="pull-left"> + <a href="index.html" id="bannerLeft" title="Apache Johnzon"> + <h2>Apache Johnzon</h2> + </a> + </div> + <div class="pull-right"> <div id="bannerRight"> + <img src="images/johnzon_logo.png" width="180"/> + </div> + </div> + <div class="clear"><hr/></div> + </div> + + <div id="breadcrumbs"> + <ul class="breadcrumb"> + + <li id="publishDate">Last Published: 2023-05-09 + <span class="divider">|</span> + </li> + <li id="projectVersion">Version: 2.0.0-SNAPSHOT + </li> + + + + </ul> + </div> + + + <div class="row-fluid"> + <div id="leftColumn" class="span2"> + <div class="well sidebar-nav"> + + <ul class="nav nav-list"> + <li class="nav-header">User Guide</li> + + <li> + + <a href="index.html" title="Home"> + <span class="none"></span> + Home</a> + </li> + + <li> + + <a href="download.html" title="Download"> + <span class="none"></span> + Download</a> + </li> + + <li> + + <a href="apidocs/index.html" title="Javadoc"> + <span class="none"></span> + Javadoc</a> + </li> + + <li> + + <a href="source-repository.html" title="Source Code"> + <span class="none"></span> + Source Code</a> + </li> + + <li> + + <a href="changelog.html" title="Changelog"> + <span class="none"></span> + Changelog</a> + </li> + + <li> + + <a href="mail-lists.html" title="Mailing Lists"> + <span class="none"></span> + Mailing Lists</a> + </li> + <li class="nav-header">Old Releases</li> + + <li> + + <a href="archives/0.7-incubating/index.html" title="Johnzon 0.7-incubating"> + <span class="none"></span> + Johnzon 0.7-incubating</a> + </li> + + <li> + + <a href="archives/0.2-incubating/index.html" title="Johnzon 0.2-incubating"> + <span class="none"></span> + Johnzon 0.2-incubating</a> + </li> + + <li> + + <a href="archives/0.1-incubating/index.html" title="Johnzon 0.1-incubating"> + <span class="none"></span> + Johnzon 0.1-incubating</a> + </li> + <li class="nav-header">Project Documentation</li> + + <li> + + <a href="project-info.html" title="Project Information"> + <span class="icon-chevron-down"></span> + Project Information</a> + <ul class="nav nav-list"> + + <li> + + <a href="ci-management.html" title="CI Management"> + <span class="none"></span> + CI Management</a> + </li> + + <li> + + <a href="dependencies.html" title="Dependencies"> + <span class="none"></span> + Dependencies</a> + </li> + + <li> + + <a href="dependency-convergence.html" title="Dependency Convergence"> + <span class="none"></span> + Dependency Convergence</a> + </li> + + <li> + + <a href="dependency-info.html" title="Dependency Information"> + <span class="none"></span> + Dependency Information</a> + </li> + + <li> + + <a href="dependency-management.html" title="Dependency Management"> + <span class="none"></span> + Dependency Management</a> + </li> + + <li> + + <a href="distribution-management.html" title="Distribution Management"> + <span class="none"></span> + Distribution Management</a> + </li> + + <li> + + <a href="index.html" title="About"> + <span class="none"></span> + About</a> + </li> + + <li class="active"> + + <a href="#"><span class="none"></span>Issue Management</a> + </li> + + <li> + + <a href="licenses.html" title="Licenses"> + <span class="none"></span> + Licenses</a> + </li> + + <li> + + <a href="mailing-lists.html" title="Mailing Lists"> + <span class="none"></span> + Mailing Lists</a> + </li> + + <li> + + <a href="modules.html" title="Project Modules"> + <span class="none"></span> + Project Modules</a> + </li> + + <li> + + <a href="plugin-management.html" title="Plugin Management"> + <span class="none"></span> + Plugin Management</a> + </li> + + <li> + + <a href="plugins.html" title="Plugins"> + <span class="none"></span> + Plugins</a> + </li> + + <li> + + <a href="scm.html" title="Source Code Management"> + <span class="none"></span> + Source Code Management</a> + </li> + + <li> + + <a href="summary.html" title="Summary"> + <span class="none"></span> + Summary</a> + </li> + + <li> + + <a href="team.html" title="Team"> + <span class="none"></span> + Team</a> + </li> + </ul> + </li> + + <li> + + <a href="project-reports.html" title="Project Reports"> + <span class="icon-chevron-right"></span> + Project Reports</a> + </li> + <li class="nav-header">Security</li> + + <li> + + <a href="security.html" title="Report vulnerability"> + <span class="none"></span> + Report vulnerability</a> + </li> + <li class="nav-header">ASF</li> + + <li> + + <a href="http://www.apache.org/foundation/how-it-works.html" class="externalLink" title="How Apache Works"> + <span class="none"></span> + How Apache Works</a> + </li> + + <li> + + <a href="http://www.apache.org/foundation/" class="externalLink" title="Foundation"> + <span class="none"></span> + Foundation</a> + </li> + + <li> + + <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsoring Apache"> + <span class="none"></span> + Sponsoring Apache</a> + </li> + + <li> + + <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"> + <span class="none"></span> + Thanks</a> + </li> + </ul> + + + <hr /> + + <div id="poweredBy"> + <div class="clear"></div> + <div class="clear"></div> + <div class="clear"></div> + <div class="clear"></div> + <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"> + <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /> + </a> + </div> + </div> + </div> + + + <div id="bodyColumn" class="span10" > + + <section> +<h2><a name="Overview"></a>Overview</h2><a name="Overview"></a> +<p>This project uses <a class="externalLink" href="http://www.atlassian.com/software/jira">JIRA</a>.</p></section><section> +<h2><a name="Issue_Management"></a>Issue Management</h2><a name="Issue_Management"></a> +<p>Issues, bugs, and feature requests should be submitted to the following issue management system for this project.</p> +<div class="source"><pre class="prettyprint linenums"><a class="externalLink" href="https://issues.apache.org/jira/browse/JOHNZON">https://issues.apache.org/jira/browse/JOHNZON</a></pre></div></section> + </div> + </div> + </div> + + <hr/> + + <footer> + <div class="container-fluid"> + <div class="row-fluid"> + <div class="row span16"><div>Apache Johnzon, Apache, the Apache feather logo, and the Apache Johnzon project logos are trademarks of The Apache Software Foundation. + All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div> + <a href="https://johnzon.apache.org/privacy-policy.html">Privacy Policy</a> + </div> + </div> + + + + + + + <div id="ohloh" class="pull-right"> + <script type="text/javascript" src="https://www.ohloh.net/p/apache-johnzon/widgets/project_basic_stats.js"></script> + </div> + </div> + </footer> + </body> +</html> \ No newline at end of file