blob: f20251d46f9d316b7807135b2f1913ee18b27de6 [file] [log] [blame]
<!--
/***************************************************************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
***************************************************************************************************************************/
-->
Juneau JAX-RS Provider
<p>
The Juneau framework contains the <l>juneau-rest-server-jaxrs</l> bundle for performing simple
integration of Juneau serializers and parsers in JAX-RS compliant environments.
</p>
<p>
It should be noted that although some of the functionality of the Juneau Server API is provided through the JAX-RS
integration components, it is not nearly as flexible as using the {@link oajr.RestServlet} class directly.
</p>
<p>
What you can do with the Juneau JAX-RS provider classes:
</p>
<ul class='spaced-list'>
<li>
Use existing Juneau serializers and parsers for converting streams to POJOs and vis-versa.
<li>
Use annotations to specify filters and properties using the {@link oajr.annotation.RestMethod @RestMethod}
and {@link oajr.jaxrs.JuneauProvider} annotations.
</ul>
<p>
What you can't do with the Juneau JAX-RS provider classes:
</p>
<ul class='spaced-list'>
<li>
Specify or override serializers/parsers at the Java class and method levels.
<br>JAX-RS does not provide the capability to use different providers for the same media types
at the class or method levels.
<li>
Specify or override filters and properties at the Java class level.
<li>
Default stylesheets for the {@link oaj.html.HtmlDocSerializer} class.
<br>It will produce HTML, but it won't contain any styles applied.
<li>
The ability to specify HTTP method, headers, and content using GET parameters.
<br>These make debugging REST interfaces using only a browser possible.
<li>
Class or method level encoding.
<li>
Class or method level guards.
<li>
Class or method level converters.
</ul>
<p>
The Juneau JAX-RS provider API consists of the following classes:
</p>
<ul class='javatree'>
<li class='jc'>
{@link oajr.jaxrs.BaseProvider} - The base provider class that implements the JAX-RS
<c>MessageBodyReader</c> and <c>MessageBodyWriter</c> interfaces.
<li class='jc'>
{@link oajr.jaxrs.JuneauProvider} - Annotation that is applied to subclasses of <c>BaseProvider</c>
to specify the serializers/parsers associated with a provider, and optionally filters and properties to
apply to those serializers and parsers.
<li class='jc'>
{@link oajr.jaxrs.BasicProvider} - A default provider that provides the same level
of media type support as the {@link oajr.BasicRestServlet} class.
</ul>
<p>
For the most part, when using these components, you'll either use the existing <l>BasicProvider</l>,
or define your own by subclassing <l>BaseProvider</l>.
</p>