This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new 5a558b7 Javadocs.
5a558b7 is described below
commit 5a558b757efae5977a16978f57b0720bcb012c67
Author: JamesBognar <[email protected]>
AuthorDate: Sat Jul 28 16:49:30 2018 -0400
Javadocs.
---
juneau-doc/src/main/javadoc/overview.html | 368 +++++++++++++--------
.../10.Transforms/12.NamePropertyAnnotation.html | 4 +-
.../Topics/02.juneau-marshall/13.Recursion.html | 4 +-
.../19.JsonDetails/05.JsonAnnotation.html | 6 +-
.../19.JsonDetails/06.JsonSchema.html | 62 ++--
.../20.XmlDetails/01.Methodology.html | 34 +-
.../20.XmlDetails/06.XmlFormatAnnotation.html | 8 +-
.../21.HtmlDetails/01.Methodology.html | 34 +-
.../resources/Topics/04.juneau-dto/03.Swagger.html | 88 ++---
.../09.HttpPartAnnotations/06.Header.html | 2 +-
.../09.HttpPartAnnotations/09.Response.html | 10 +-
.../09.HttpPartAnnotations/10.ResponseHeader.html | 115 ++++++-
12 files changed, 478 insertions(+), 257 deletions(-)
diff --git a/juneau-doc/src/main/javadoc/overview.html
b/juneau-doc/src/main/javadoc/overview.html
index 35a1bf7..0bf1ecd 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -314,7 +314,7 @@
<li><p class='new'><a class='doclink'
href='#juneau-rest-server.HttpPartAnnotations.Path'>@Path</a></p>
<li><p class='new'><a class='doclink'
href='#juneau-rest-server.HttpPartAnnotations.RequestBean'>@RequestBean</a></p>
<li><p class='new'><a class='doclink'
href='#juneau-rest-server.HttpPartAnnotations.Response'>@Response</a></p>
- <li><p class='todo'><a class='doclink'
href='#juneau-rest-server.HttpPartAnnotations.ResponseHeader'>@ResponseHeader</a></p>
+ <li><p class='new'><a class='doclink'
href='#juneau-rest-server.HttpPartAnnotations.ResponseHeader'>@ResponseHeader</a></p>
<li><p class='todo'><a class='doclink'
href='#juneau-rest-server.HttpPartAnnotations.ResponseStatus'>@ResponseStatus</a></p>
<li><p class='todo'><a class='doclink'
href='#juneau-rest-server.HttpPartAnnotations.ResponseStatuses'>@ResponseStatuses</a></p>
</ol>
@@ -2768,8 +2768,8 @@
<p class='bpcode w800'>
<jc>// JSON</jc>
{
- id1: {name: <js>'John Smith'</js>, sex:<js>'M'</js>},
- id2: {name: <js>'Jane Doe'</js>, sex:<js>'F'</js>}
+ <jok>id1</jok>: {<jok>name</jok>: <jov>'John Smith'</jov>,
<jok>sex</jok>: <jov>'M'</jov>},
+ <jok>id2</jok>: {<jok>name</jok>: <jov>'Jane Doe'</jov>,
<jok>sex</jok>: <jov>'F'</jov>}
}
</p>
<p class='bcode w800'>
@@ -3674,8 +3674,8 @@
</p>
<p class='bpcode w800'>
{
- b: {
- c: {
+ <jok>b</jok>: {
+ <jok>c</jok>: {
}
}
}
@@ -4574,13 +4574,13 @@ TODO(7.2.0)
<tr>
<td class='code'>
{
- name: <js>'John Smith'</js>
+ <jok>name</jok>: <jov>'John Smith'</jov>
}
</td>
<td class='code'>
{
- personBean: {
- name: <js>'John Smith'</js>
+ <jok>personBean</jok>: {
+ <jok>name</jok>: <jov>'John Smith'</jov>
}
}
</td>
@@ -4640,43 +4640,43 @@ TODO(7.2.0)
<h5 class='figure'>JSON Schema</h5>
<p class='bpcode w800'>
{
- type: <js>'object'</js>,
- description: <js>'org.apache.juneau.sample.Person'</js>,
- properties: {
- name: {
- type: <js>'string'</js>,
- description: <js>'java.lang.String'</js>
+ <jok>type: <jov>'object'</jov>,
+ <jok>description</jok>:
<jov>'org.apache.juneau.sample.Person'</jov>,
+ <jok>properties</jok>: {
+ <jok>name</jok>: {
+ <jok>type</jok>: <jov>'string'</jov>,
+ <jok>description</jok>:
<jov>'java.lang.String'</jov>
},
- birthDate: {
- type: <js>'string'</js>,
- description: <js>'java.util.Calendar'</js>
+ <jok>birthDate</jok>: {
+ <jok>type</jok>: <jov>'string'</jov>,
+ <jok>description</jok>:
<jov>'java.util.Calendar'</jov>
},
- addresses: {
- type: <js>'array'</js>,
- description:
<js>'java.util.LinkedList<org.apache.juneau.sample.Address>'</js>,
- items: {
- type: <js>'object'</js>,
- description:
<js>'org.apache.juneau.sample.Address'</js>,
- properties: {
- street: {
- type:
<js>'string'</js>,
- description:
<js>'java.lang.String'</js>
+ <jok>addresses</jok>: {
+ <jok>type</jok>: <jov>'array'</jov>,
+ <jok>description</jok>:
<jov>'java.util.LinkedList<org.apache.juneau.sample.Address>'</jov>,
+ <jok>items</jok>: {
+ <jok>type</jok>: <jov>'object'</jov>,
+ <jok>description</jok>:
<jov>'org.apache.juneau.sample.Address'</jov>,
+ <jok>properties</jok>: {
+ <jok>street</jok>: {
+ <jok>type</jok>:
<jov>'string'</jov>,
+ <jok>description</jok>:
<jov>'java.lang.String'</jov>
},
- city: {
- type:
<js>'string'</js>,
- description:
<js>'java.lang.String'</js>
+ <jok>city</jok>: {
+ <jok>type</jok>:
<jov>'string'</jov>,
+ <jok>description</jok>:
<jov>'java.lang.String'</jov>
},
- state: {
- type:
<js>'string'</js>,
- description:
<js>'java.lang.String'</js>
+ <jok>state</jok>: {
+ <jok>type</jok>:
<jov>'string'</jov>,
+ <jok>description</jok>:
<jov>'java.lang.String'</jov>
},
- zip: {
- type:
<js>'number'</js>,
- description:
<js>'int'</js>
+ <jok>zip</jok>: {
+ <jok>type</jok>:
<jov>'number'</jov>,
+ <jok>description</jok>:
<jov>'int'</jov>
},
- isCurrent: {
- type:
<js>'boolean'</js>,
- description:
<js>'boolean'</js>
+ <jok>isCurrent</jok>: {
+ <jok>type</jok>:
<jov>'boolean'</jov>,
+ <jok>description</jok>:
<jov>'boolean'</jov>
}
}
}
@@ -5090,15 +5090,15 @@ TODO(7.2.0)
</td>
<td class='code'>
{
- a: <js>'foo'</js>,
- b: 123,
- c: <js>'bar'</js>,
- d: 456,
- e: {
- h: <js>'baz'</js>
+ <jok>a</jok>: <jov>'foo'</jov>,
+ <jok>b</jok>: <jov>123</jov>,
+ <jok>c</jok>: <jov>'bar'</jov>,
+ <jok>d</jok>: <jov>456</jov>,
+ <jok>e</jok>: {
+ <jok>h</jok>: <jov>'baz'</jov>
}
- f: [<js>'qux'</js>]
- g: [789]
+ <jok>f</jok>: [<jov>'qux'</jov>]
+ <jok>g</jok>: [<jov>789</jov>]
}
</td>
<td class='code'><xt>
@@ -5138,17 +5138,17 @@ TODO(7.2.0)
</td>
<td class='code'>
{
- a: {
- k1: <js>'foo'</js>
+ <jok>a</jok>: {
+ <jok>k1</jok>: <jov>'foo'</jov>
},
- b: {
- k2: 123
+ <jok>b</jok>: {
+ <jok>k2</jok>: <jov>123</jov>
},
- c: {
- k3: <js>'bar'</js>,
- k4: 456,
- k5: <jk>true</jk>,
- k6: <jk>null</jk>
+ <jok>c</jok>: {
+ <jok>k3</jok>: <jov>'bar'</jov>,
+ <jok>k4</jok>: <jov>456</jov>,
+ <jok>k5</jok>: <jov>true</jov>,
+ <jok>k6</jok>: <jov>null</jov>
}
}
</td>
@@ -5978,11 +5978,11 @@ TODO(7.2.0)
</td>
<td class='code'>
{
- a: {
- k1: <js>'foo'</js>,
- k2: 123,
+ <jok>a</jok>: {
+ <jok>k1</jok>: <jov>'foo'</jov>,
+ <jok>k2</jok>: <jov>123</jov>,
},
- b: 456
+ <jok>b</jok>: <jov>456</jov>
}
</td>
<td class='code'><xt>
@@ -7348,15 +7348,15 @@ TODO(7.2.0)
</td>
<td class='code'>
{
- a: <js>'foo'</js>,
- b: 123,
- c: <js>'bar'</js>,
- d: 456,
- e: {
- h: <js>'baz'</js>
+ <jok>a</jok>: <jov>'foo'</jov>,
+ <jok>b</jok>: <jov>123</jov>,
+ <jok>c</jok>: <jov>'bar'</jov>,
+ <jok>d</jok>: <jov>456</jov>,
+ <jok>e</jok>: {
+ <jok>h</jok>: <jov>'baz'</jov>
}
- f: [<js>'qux'</js>]
- g: [789]
+ <jok>f</jok>: [<jov>'qux'</jov>]
+ <jok>g</jok>: [<jov>789</jov>]
}
</td>
<td class='code'><xt>
@@ -7426,17 +7426,17 @@ TODO(7.2.0)
</td>
<td class='code'>
{
- a: {
- k1: <js>'foo'</js>
+ <jok>a</jok>: {
+ <jok>k1</jok>: <jov>'foo'</jov>
},
- b: {
- k2: 123
+ <jok>b</jok>: {
+ <jok>k2</jok>: <jov>123</jov>
},
- c: {
- k3: <js>'bar'</js>,
- k4: 456,
- k5: <jk>true</jk>,
- k6: <jk>null</jk>
+ <jok>c</jok>: {
+ <jok>k3</jok>: <jov>'bar'</jov>,
+ <jok>k4</jok>: <jov>456</jov>,
+ <jok>k5</jok>: <jov>true</jov>,
+ <jok>k6</jok>: <jov>null</jov>
}
}
</td>
@@ -10139,68 +10139,68 @@ TODO(7.2.0)
</p>
<p class='bpcode w800'>
{
- <jf>"swagger"</jf>: <js>"2.0"</js>,
- <jf>"info"</jf>: {
- <jf>"title"</jf>: <js>"Swagger Petstore"</js>,
- <jf>"description"</jf>: <js>"This is a sample server
Petstore server."</js>,
- <jf>"version"</jf>: <js>"1.0.0"</js>,
- <jf>"termsOfService"</jf>:
<js>"http://swagger.io/terms/"</js>,
- <jf>"contact"</jf>: {
- <jf>"email"</jf>: <js>"[email protected]"</js>
+ <jok>"swagger"</jok>: <jov>"2.0"</jov>,
+ <jok>"info"</jok>: {
+ <jok>"title"</jok>: <jov>"Swagger Petstore"</jov>,
+ <jok>"description"</jok>: <jov>"This is a sample server
Petstore server."</jov>,
+ <jok>"version"</jok>: <jov>"1.0.0"</jov>,
+ <jok>"termsOfService"</jok>:
<jov>"http://swagger.io/terms/"</jov>,
+ <jok>"contact"</jok>: {
+ <jok>"email"</jok>:
<jov>"[email protected]"</jov>
},
- <jf>"license"</jf>: {
- <jf>"name"</jf>: <js>"Apache 2.0"</js>,
- <jf>"url"</jf>:
<js>"http://www.apache.org/licenses/LICENSE-2.0.html"</js>
+ <jok>"license"</jok>: {
+ <jok>"name"</jok>: <jov>"Apache 2.0"</jov>,
+ <jok>"url"</jok>:
<jov>"http://www.apache.org/licenses/LICENSE-2.0.html"</jov>
}
},
- <jf>"host"</jf>: <js>"petstore.swagger.io"</js>,
- <jf>"basePath"</jf>: <js>"/v2"</js>,
- <jf>"tags"</jf>: [
+ <jok>"host"</jok>: <jov>"petstore.swagger.io"</jov>,
+ <jok>"basePath"</jok>: <jov>"/v2"</jov>,
+ <jok>"tags"</jok>: [
{
- <jf>"name"</jf>: <js>"pet"</js>,
- <jf>"description"</jf>: <js>"Everything about
your Pets"</js>,
- <jf>"externalDocs"</jf>: {
- <jf>"description"</jf>: <js>"Find out
more"</js>,
- <jf>"url"</jf>:
<js>"http://swagger.io"</js>
+ <jok>"name"</jok>: <jov>"pet"</jov>,
+ <jok>"description"</jok>: <jov>"Everything
about your Pets"</jov>,
+ <jok>"externalDocs"</jok>: {
+ <jok>"description"</jok>: <jov>"Find
out more"</jov>,
+ <jok>"url"</jok>:
<jov>"http://swagger.io"</jov>
}
}
],
- <jf>"schemes"</jf>: [
- <js>"http"</js>
+ <jok>"schemes"</jok>: [
+ <jov>"http"</jov>
],
- <jf>"paths"</jf>: {
- <jf>"/pet"</jf>: {
- <jf>"post"</jf>: {
- <jf>"tags"</jf>: [
- <js>"pet"</js>
+ <jok>"paths"</jok>: {
+ <jok>"/pet"</jok>: {
+ <jok>"post"</jok>: {
+ <jok>"tags"</jok>: [
+ <jov>"pet"</jov>
],
- <jf>"summary"</jf>: <js>"Add a new pet
to the store"</js>,
- <jf>"description"</jf>: <js>""</js>,
- <jf>"operationId"</jf>:
<js>"addPet"</js>,
- <jf>"consumes"</jf>: [
- <js>"application/json"</js>,
- <js>"text/xml"</js>
+ <jok>"summary"</jok>: <jov>"Add a new
pet to the store"</jov>,
+ <jok>"description"</jok>: <jov>""</jov>,
+ <jok>"operationId"</jok>:
<jov>"addPet"</jov>,
+ <jok>"consumes"</jok>: [
+ <jov>"application/json"</jov>,
+ <jov>"text/xml"</jov>
],
- <jf>"produces"</jf>: [
- <js>"application/json"</js>,
- <js>"text/xml"</js>
+ <jok>"produces"</jok>: [
+ <jov>"application/json"</jov>,
+ <jov>"text/xml"</jov>
],
- <jf>"parameters"</jf>: [
+ <jok>"parameters"</jok>: [
{
- <jf>"in"</jf>:
<js>"body"</js>,
- <jf>"name"</jf>:
<js>"body"</js>,
- <jf>"description"</jf>:
<js>"Pet object that needs to be added to the store"</js>,
- <jf>"required"</jf>:
<jk>true</jk>
+ <jok>"in"</jok>:
<jov>"body"</jov>,
+ <jok>"name"</jok>:
<jov>"body"</jov>,
+
<jok>"description"</jok>: <jov>"Pet object that needs to be added to the
store"</jov>,
+ <jok>"required"</jok>:
<jov>true</jov>
}
],
- <jf>"responses"</jf>: {
- <jf>"405"</jf>: {
- <jf>"description"</jf>:
<js>"Invalid input"</js>
+ <jok>"responses"</jok>: {
+ <jok>"405"</jok>: {
+
<jok>"description"</jok>: <jov>"Invalid input"</jov>
}
}
}
}
- },
+ }
}
</p>
<p>
@@ -15033,7 +15033,7 @@ VariantAlsoNegotiates
<ul class='doctree'>
<li class='ja'>{@link org.apache.juneau.http.annotation.Header Header}
<ul>
- <li class='jf'>{@link
org.apache.juneau.http.annotation.Header#_default() _default()} - Default
value if not present.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.Header#_default() _default()} - Default value
if not present.
<li class='jf'>{@link
org.apache.juneau.http.annotation.Header#_enum() _enum()} - Input validation.
Must match one of the values.
<li class='jf'>{@link
org.apache.juneau.http.annotation.Header#allowEmptyValue() allowEmptyValue()} -
Input validation. Allow empty value.
<li class='jf'>{@link
org.apache.juneau.http.annotation.Header#api() api()} - Free-form Swagger JSON.
@@ -15656,11 +15656,11 @@ VariantAlsoNegotiates
<br>For example, in the case of the <code>InvalidLogin</code> example
above, the following Swagger is generated:
</p>
<p class='bpcode w800'>
- <js>'/user/login'</js>: {
- get: {
- responses: {
- 401: {
- description: <js>'Invalid username or
password provided'</js>
+ <jok>'/user/login'</jok>: {
+ <jok>get</jok>: {
+ <jok>responses</jok>: {
+ <jok>401</jok>: {
+ <jok>description</jok>: <jov>'Invalid
username or password provided'</jov>
}
}
}
@@ -15675,9 +15675,119 @@ VariantAlsoNegotiates
<!--
====================================================================================================
-->
-<h4 class='topic todo' onclick='toggle(this)'><a
href='#juneau-rest-server.HttpPartAnnotations.ResponseHeader'
id='juneau-rest-server.HttpPartAnnotations.ResponseHeader'>7.9.10 -
@ResponseHeader</a></h4>
+<h4 class='topic new' onclick='toggle(this)'><a
href='#juneau-rest-server.HttpPartAnnotations.ResponseHeader'
id='juneau-rest-server.HttpPartAnnotations.ResponseHeader'>7.9.10 -
@ResponseHeader</a></h4>
<div class='topic'><!-- START: 7.9.10 -
juneau-rest-server.HttpPartAnnotations.ResponseHeader -->
-TODO(7.2.0)
+<p>
+ The {@link org.apache.juneau.http.annotation.ResponseHeader
@ResponseHeader} annotation is applied to parameters and parameter types to
denote them as an HTTP response headers.
+</p>
+<ul class='doctree'>
+ <li class='ja'>{@link org.apache.juneau.http.annotation.ResponseHeader
ResponseHeader}
+ <ul>
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#_default() _default()} -
Default value if not present.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#_enum() _enum()} - Output
validation. Must match one of the values.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#$ref() $ref()} - Schema
reference.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#api() api()} - Free-form
Swagger JSON.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#code() code()} - HTTP status
codes that this header applies to.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#collectionFormat()
collectionFormat()} - How collections of items are formatted.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#description() description()} -
Description.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#example() example()} -
Serialized example.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#exclusiveMaximum()
exclusiveMaximum()} - Output validation. Whether maximum is exclusive.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#exclusiveMinimum()
exclusiveMinimum()} - Output validation. Whether minimum is exclusive.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#format() format()} - The
schema type format.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#items() items()} - The schema
of items in a collection.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#maximum() maximum()} - Output
validation. Maximum numeric value.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#maxItems() maxItems()} -
Output validation. Maximum number of items in a collection.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#maxLength() maxLength()} -
Output validation. Maximum length of a string.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#minimum() minimum()} - Output
validation. Minimum numeric value.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#minItems() minItems()} -
Output validation. Minimum number of items in a collection.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#minLength() minLength()} -
Output validation. Minimum length of a string.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#multipleOf() multipleOf()} -
Output validation. Number must be a multiple of.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#name() name()} - Header name.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#pattern() pattern()} - Output
validation. Must match regular expression.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#serializer() serializer()} -
Override the part serializer.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#type() type()} - The schema
type.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#uniqueItems() uniqueItems()} -
Output validation. Collections must contain unique items only.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#value() value()} - Free-form
Swagger JSON.
+ </ul>
+</ul>
+<p>
+ It can be used in the following locations:
+</p>
+<ul>
+ <li>Java method arguments and argument-types of server-side
<ja>@RestMethod</ja>-annotated REST Java methods.
+</ul>
+<p>
+ This annotation can only be applied to subclasses or parameters of type
{@link Value}.
+</p>
+<p>
+ The following examples show 3 different ways of accomplishing the same
task of setting an HTTP header
+ on a response:
+</p>
+<p class='bpcode w800'>
+ <jc>// Example #1 - Setting header directly on RestResponse object.</jc>
+ <ja>@RestMethod</ja>(...)
+ <jk>public void</jk> login(RestResponse res) {
+ res.setHeader(<js>"X-Rate-Limit"</js>, 1000);
+ ...
+ }
+
+ <jc>// Example #2 - Use on parameter.</jc>
+ <ja>@RestMethod</ja>(...)
+ <jk>public void</jk> login(
+ <ja>@ResponseHeader</ja>(
+ name=<js>"X-Rate-Limit"</js>,
+ type=<js>"integer"</js>,
+ format=<js>"int32"</js>,
+ description=<js>"Calls per hour allowed by the
user."</js>,
+ example=<js>"123"</js>
+ )
+ Value<Integer> rateLimit
+ )
+ {
+ rateLimit.set(1000);
+ ...
+ }
+
+ <jc>// Example #3 - Use on type.</jc>
+ <ja>@RestMethod</ja>(...)
+ <jk>public void</jk> login(RateLimit rateLimit) {
+ rateLimit.set(1000);
+ ...
+ }
+
+ <ja>@ResponseHeader</ja>(
+ name=<js>"X-Rate-Limit"</js>,
+ type=<js>"integer"</js>,
+ format=<js>"int32"</js>,
+ description=<js>"Calls per hour allowed by the user."</js>,
+ example=<js>"123"</js>
+ )
+ <jk>public class</jk> RateLimit <jk>extends</jk> Value<Integer> {}
+</p>
+
+<h5 class='topic'>Swagger documentation</h5>
+<p>
+ The attributes on this annotation are also used to populate the
generated Swagger for the method.
+ <br>For example, in the case of the <code>X-Rate-Limit</code> example
above, the following Swagger is generated:
+</p>
+<p class='bpcode w800'>
+ <jok>'/user/login'</jok>: {
+ <jok>get</jok>: {
+ <jok>responses</jok>: {
+ <jok>200</jok>: {
+ <jok>headers</jok>: {
+ <jok>'X-Rate-Limit'</jok>: {
+ <jok>type</jok>:
<jov>'integer'</jov>,
+ <jok>format</jok>:
<jov>'int32'</jov>,
+ <jok>description</jok>:
<jov>'Calls per hour allowed by the user.'</jov>,
+ <jok>example</jok>:
<jov>'123'</jov>
+ }
+ }
+ }
+ }
+ }
+ }
+</p>
</div><!-- END: 7.9.10 - juneau-rest-server.HttpPartAnnotations.ResponseHeader
-->
<!--
====================================================================================================
-->
diff --git
a/juneau-doc/src/main/resources/Topics/02.juneau-marshall/10.Transforms/12.NamePropertyAnnotation.html
b/juneau-doc/src/main/resources/Topics/02.juneau-marshall/10.Transforms/12.NamePropertyAnnotation.html
index 26c1073..af7261e 100644
---
a/juneau-doc/src/main/resources/Topics/02.juneau-marshall/10.Transforms/12.NamePropertyAnnotation.html
+++
b/juneau-doc/src/main/resources/Topics/02.juneau-marshall/10.Transforms/12.NamePropertyAnnotation.html
@@ -26,8 +26,8 @@
<p class='bpcode w800'>
<jc>// JSON</jc>
{
- id1: {name: <js>'John Smith'</js>, sex:<js>'M'</js>},
- id2: {name: <js>'Jane Doe'</js>, sex:<js>'F'</js>}
+ <jok>id1</jok>: {<jok>name</jok>: <jov>'John Smith'</jov>,
<jok>sex</jok>: <jov>'M'</jov>},
+ <jok>id2</jok>: {<jok>name</jok>: <jov>'Jane Doe'</jov>,
<jok>sex</jok>: <jov>'F'</jov>}
}
</p>
<p class='bcode w800'>
diff --git
a/juneau-doc/src/main/resources/Topics/02.juneau-marshall/13.Recursion.html
b/juneau-doc/src/main/resources/Topics/02.juneau-marshall/13.Recursion.html
index 452d25b..498e0f3 100644
--- a/juneau-doc/src/main/resources/Topics/02.juneau-marshall/13.Recursion.html
+++ b/juneau-doc/src/main/resources/Topics/02.juneau-marshall/13.Recursion.html
@@ -65,8 +65,8 @@ Non-Tree Models and Recursion Detection
</p>
<p class='bpcode w800'>
{
- b: {
- c: {
+ <jok>b</jok>: {
+ <jok>c</jok>: {
}
}
}
diff --git
a/juneau-doc/src/main/resources/Topics/02.juneau-marshall/19.JsonDetails/05.JsonAnnotation.html
b/juneau-doc/src/main/resources/Topics/02.juneau-marshall/19.JsonDetails/05.JsonAnnotation.html
index b3ccdd0..a908d83 100644
---
a/juneau-doc/src/main/resources/Topics/02.juneau-marshall/19.JsonDetails/05.JsonAnnotation.html
+++
b/juneau-doc/src/main/resources/Topics/02.juneau-marshall/19.JsonDetails/05.JsonAnnotation.html
@@ -40,13 +40,13 @@
<tr>
<td class='code'>
{
- name: <js>'John Smith'</js>
+ <jok>name</jok>: <jov>'John Smith'</jov>
}
</td>
<td class='code'>
{
- personBean: {
- name: <js>'John Smith'</js>
+ <jok>personBean</jok>: {
+ <jok>name</jok>: <jov>'John Smith'</jov>
}
}
</td>
diff --git
a/juneau-doc/src/main/resources/Topics/02.juneau-marshall/19.JsonDetails/06.JsonSchema.html
b/juneau-doc/src/main/resources/Topics/02.juneau-marshall/19.JsonDetails/06.JsonSchema.html
index 576befc..18dc48b 100644
---
a/juneau-doc/src/main/resources/Topics/02.juneau-marshall/19.JsonDetails/06.JsonSchema.html
+++
b/juneau-doc/src/main/resources/Topics/02.juneau-marshall/19.JsonDetails/06.JsonSchema.html
@@ -63,43 +63,43 @@ JSON-Schema Support
<h5 class='figure'>JSON Schema</h5>
<p class='bpcode w800'>
{
- type: <js>'object'</js>,
- description: <js>'org.apache.juneau.sample.Person'</js>,
- properties: {
- name: {
- type: <js>'string'</js>,
- description: <js>'java.lang.String'</js>
+ <jok>type: <jov>'object'</jov>,
+ <jok>description</jok>:
<jov>'org.apache.juneau.sample.Person'</jov>,
+ <jok>properties</jok>: {
+ <jok>name</jok>: {
+ <jok>type</jok>: <jov>'string'</jov>,
+ <jok>description</jok>:
<jov>'java.lang.String'</jov>
},
- birthDate: {
- type: <js>'string'</js>,
- description: <js>'java.util.Calendar'</js>
+ <jok>birthDate</jok>: {
+ <jok>type</jok>: <jov>'string'</jov>,
+ <jok>description</jok>:
<jov>'java.util.Calendar'</jov>
},
- addresses: {
- type: <js>'array'</js>,
- description:
<js>'java.util.LinkedList<org.apache.juneau.sample.Address>'</js>,
- items: {
- type: <js>'object'</js>,
- description:
<js>'org.apache.juneau.sample.Address'</js>,
- properties: {
- street: {
- type:
<js>'string'</js>,
- description:
<js>'java.lang.String'</js>
+ <jok>addresses</jok>: {
+ <jok>type</jok>: <jov>'array'</jov>,
+ <jok>description</jok>:
<jov>'java.util.LinkedList<org.apache.juneau.sample.Address>'</jov>,
+ <jok>items</jok>: {
+ <jok>type</jok>: <jov>'object'</jov>,
+ <jok>description</jok>:
<jov>'org.apache.juneau.sample.Address'</jov>,
+ <jok>properties</jok>: {
+ <jok>street</jok>: {
+ <jok>type</jok>:
<jov>'string'</jov>,
+ <jok>description</jok>:
<jov>'java.lang.String'</jov>
},
- city: {
- type:
<js>'string'</js>,
- description:
<js>'java.lang.String'</js>
+ <jok>city</jok>: {
+ <jok>type</jok>:
<jov>'string'</jov>,
+ <jok>description</jok>:
<jov>'java.lang.String'</jov>
},
- state: {
- type:
<js>'string'</js>,
- description:
<js>'java.lang.String'</js>
+ <jok>state</jok>: {
+ <jok>type</jok>:
<jov>'string'</jov>,
+ <jok>description</jok>:
<jov>'java.lang.String'</jov>
},
- zip: {
- type:
<js>'number'</js>,
- description:
<js>'int'</js>
+ <jok>zip</jok>: {
+ <jok>type</jok>:
<jov>'number'</jov>,
+ <jok>description</jok>:
<jov>'int'</jov>
},
- isCurrent: {
- type:
<js>'boolean'</js>,
- description:
<js>'boolean'</js>
+ <jok>isCurrent</jok>: {
+ <jok>type</jok>:
<jov>'boolean'</jov>,
+ <jok>description</jok>:
<jov>'boolean'</jov>
}
}
}
diff --git
a/juneau-doc/src/main/resources/Topics/02.juneau-marshall/20.XmlDetails/01.Methodology.html
b/juneau-doc/src/main/resources/Topics/02.juneau-marshall/20.XmlDetails/01.Methodology.html
index 5c84882..eb93556 100644
---
a/juneau-doc/src/main/resources/Topics/02.juneau-marshall/20.XmlDetails/01.Methodology.html
+++
b/juneau-doc/src/main/resources/Topics/02.juneau-marshall/20.XmlDetails/01.Methodology.html
@@ -336,15 +336,15 @@ XML Methodology
</td>
<td class='code'>
{
- a: <js>'foo'</js>,
- b: 123,
- c: <js>'bar'</js>,
- d: 456,
- e: {
- h: <js>'baz'</js>
+ <jok>a</jok>: <jov>'foo'</jov>,
+ <jok>b</jok>: <jov>123</jov>,
+ <jok>c</jok>: <jov>'bar'</jov>,
+ <jok>d</jok>: <jov>456</jov>,
+ <jok>e</jok>: {
+ <jok>h</jok>: <jov>'baz'</jov>
}
- f: [<js>'qux'</js>]
- g: [789]
+ <jok>f</jok>: [<jov>'qux'</jov>]
+ <jok>g</jok>: [<jov>789</jov>]
}
</td>
<td class='code'><xt>
@@ -384,17 +384,17 @@ XML Methodology
</td>
<td class='code'>
{
- a: {
- k1: <js>'foo'</js>
+ <jok>a</jok>: {
+ <jok>k1</jok>: <jov>'foo'</jov>
},
- b: {
- k2: 123
+ <jok>b</jok>: {
+ <jok>k2</jok>: <jov>123</jov>
},
- c: {
- k3: <js>'bar'</js>,
- k4: 456,
- k5: <jk>true</jk>,
- k6: <jk>null</jk>
+ <jok>c</jok>: {
+ <jok>k3</jok>: <jov>'bar'</jov>,
+ <jok>k4</jok>: <jov>456</jov>,
+ <jok>k5</jok>: <jov>true</jov>,
+ <jok>k6</jok>: <jov>null</jov>
}
}
</td>
diff --git
a/juneau-doc/src/main/resources/Topics/02.juneau-marshall/20.XmlDetails/06.XmlFormatAnnotation.html
b/juneau-doc/src/main/resources/Topics/02.juneau-marshall/20.XmlDetails/06.XmlFormatAnnotation.html
index a592ff9..cc8c81c 100644
---
a/juneau-doc/src/main/resources/Topics/02.juneau-marshall/20.XmlDetails/06.XmlFormatAnnotation.html
+++
b/juneau-doc/src/main/resources/Topics/02.juneau-marshall/20.XmlDetails/06.XmlFormatAnnotation.html
@@ -164,11 +164,11 @@
</td>
<td class='code'>
{
- a: {
- k1: <js>'foo'</js>,
- k2: 123,
+ <jok>a</jok>: {
+ <jok>k1</jok>: <jov>'foo'</jov>,
+ <jok>k2</jok>: <jov>123</jov>,
},
- b: 456
+ <jok>b</jok>: <jov>456</jov>
}
</td>
<td class='code'><xt>
diff --git
a/juneau-doc/src/main/resources/Topics/02.juneau-marshall/21.HtmlDetails/01.Methodology.html
b/juneau-doc/src/main/resources/Topics/02.juneau-marshall/21.HtmlDetails/01.Methodology.html
index 422f89c..8b6c52b 100644
---
a/juneau-doc/src/main/resources/Topics/02.juneau-marshall/21.HtmlDetails/01.Methodology.html
+++
b/juneau-doc/src/main/resources/Topics/02.juneau-marshall/21.HtmlDetails/01.Methodology.html
@@ -379,15 +379,15 @@
</td>
<td class='code'>
{
- a: <js>'foo'</js>,
- b: 123,
- c: <js>'bar'</js>,
- d: 456,
- e: {
- h: <js>'baz'</js>
+ <jok>a</jok>: <jov>'foo'</jov>,
+ <jok>b</jok>: <jov>123</jov>,
+ <jok>c</jok>: <jov>'bar'</jov>,
+ <jok>d</jok>: <jov>456</jov>,
+ <jok>e</jok>: {
+ <jok>h</jok>: <jov>'baz'</jov>
}
- f: [<js>'qux'</js>]
- g: [789]
+ <jok>f</jok>: [<jov>'qux'</jov>]
+ <jok>g</jok>: [<jov>789</jov>]
}
</td>
<td class='code'><xt>
@@ -457,17 +457,17 @@
</td>
<td class='code'>
{
- a: {
- k1: <js>'foo'</js>
+ <jok>a</jok>: {
+ <jok>k1</jok>: <jov>'foo'</jov>
},
- b: {
- k2: 123
+ <jok>b</jok>: {
+ <jok>k2</jok>: <jov>123</jov>
},
- c: {
- k3: <js>'bar'</js>,
- k4: 456,
- k5: <jk>true</jk>,
- k6: <jk>null</jk>
+ <jok>c</jok>: {
+ <jok>k3</jok>: <jov>'bar'</jov>,
+ <jok>k4</jok>: <jov>456</jov>,
+ <jok>k5</jok>: <jov>true</jov>,
+ <jok>k6</jok>: <jov>null</jov>
}
}
</td>
diff --git a/juneau-doc/src/main/resources/Topics/04.juneau-dto/03.Swagger.html
b/juneau-doc/src/main/resources/Topics/04.juneau-dto/03.Swagger.html
index 4a5795a..edc20f9 100644
--- a/juneau-doc/src/main/resources/Topics/04.juneau-dto/03.Swagger.html
+++ b/juneau-doc/src/main/resources/Topics/04.juneau-dto/03.Swagger.html
@@ -31,68 +31,68 @@ Swagger
</p>
<p class='bpcode w800'>
{
- <jf>"swagger"</jf>: <js>"2.0"</js>,
- <jf>"info"</jf>: {
- <jf>"title"</jf>: <js>"Swagger Petstore"</js>,
- <jf>"description"</jf>: <js>"This is a sample server
Petstore server."</js>,
- <jf>"version"</jf>: <js>"1.0.0"</js>,
- <jf>"termsOfService"</jf>:
<js>"http://swagger.io/terms/"</js>,
- <jf>"contact"</jf>: {
- <jf>"email"</jf>: <js>"[email protected]"</js>
+ <jok>"swagger"</jok>: <jov>"2.0"</jov>,
+ <jok>"info"</jok>: {
+ <jok>"title"</jok>: <jov>"Swagger Petstore"</jov>,
+ <jok>"description"</jok>: <jov>"This is a sample server
Petstore server."</jov>,
+ <jok>"version"</jok>: <jov>"1.0.0"</jov>,
+ <jok>"termsOfService"</jok>:
<jov>"http://swagger.io/terms/"</jov>,
+ <jok>"contact"</jok>: {
+ <jok>"email"</jok>:
<jov>"[email protected]"</jov>
},
- <jf>"license"</jf>: {
- <jf>"name"</jf>: <js>"Apache 2.0"</js>,
- <jf>"url"</jf>:
<js>"http://www.apache.org/licenses/LICENSE-2.0.html"</js>
+ <jok>"license"</jok>: {
+ <jok>"name"</jok>: <jov>"Apache 2.0"</jov>,
+ <jok>"url"</jok>:
<jov>"http://www.apache.org/licenses/LICENSE-2.0.html"</jov>
}
},
- <jf>"host"</jf>: <js>"petstore.swagger.io"</js>,
- <jf>"basePath"</jf>: <js>"/v2"</js>,
- <jf>"tags"</jf>: [
+ <jok>"host"</jok>: <jov>"petstore.swagger.io"</jov>,
+ <jok>"basePath"</jok>: <jov>"/v2"</jov>,
+ <jok>"tags"</jok>: [
{
- <jf>"name"</jf>: <js>"pet"</js>,
- <jf>"description"</jf>: <js>"Everything about
your Pets"</js>,
- <jf>"externalDocs"</jf>: {
- <jf>"description"</jf>: <js>"Find out
more"</js>,
- <jf>"url"</jf>:
<js>"http://swagger.io"</js>
+ <jok>"name"</jok>: <jov>"pet"</jov>,
+ <jok>"description"</jok>: <jov>"Everything
about your Pets"</jov>,
+ <jok>"externalDocs"</jok>: {
+ <jok>"description"</jok>: <jov>"Find
out more"</jov>,
+ <jok>"url"</jok>:
<jov>"http://swagger.io"</jov>
}
}
],
- <jf>"schemes"</jf>: [
- <js>"http"</js>
+ <jok>"schemes"</jok>: [
+ <jov>"http"</jov>
],
- <jf>"paths"</jf>: {
- <jf>"/pet"</jf>: {
- <jf>"post"</jf>: {
- <jf>"tags"</jf>: [
- <js>"pet"</js>
+ <jok>"paths"</jok>: {
+ <jok>"/pet"</jok>: {
+ <jok>"post"</jok>: {
+ <jok>"tags"</jok>: [
+ <jov>"pet"</jov>
],
- <jf>"summary"</jf>: <js>"Add a new pet
to the store"</js>,
- <jf>"description"</jf>: <js>""</js>,
- <jf>"operationId"</jf>:
<js>"addPet"</js>,
- <jf>"consumes"</jf>: [
- <js>"application/json"</js>,
- <js>"text/xml"</js>
+ <jok>"summary"</jok>: <jov>"Add a new
pet to the store"</jov>,
+ <jok>"description"</jok>: <jov>""</jov>,
+ <jok>"operationId"</jok>:
<jov>"addPet"</jov>,
+ <jok>"consumes"</jok>: [
+ <jov>"application/json"</jov>,
+ <jov>"text/xml"</jov>
],
- <jf>"produces"</jf>: [
- <js>"application/json"</js>,
- <js>"text/xml"</js>
+ <jok>"produces"</jok>: [
+ <jov>"application/json"</jov>,
+ <jov>"text/xml"</jov>
],
- <jf>"parameters"</jf>: [
+ <jok>"parameters"</jok>: [
{
- <jf>"in"</jf>:
<js>"body"</js>,
- <jf>"name"</jf>:
<js>"body"</js>,
- <jf>"description"</jf>:
<js>"Pet object that needs to be added to the store"</js>,
- <jf>"required"</jf>:
<jk>true</jk>
+ <jok>"in"</jok>:
<jov>"body"</jov>,
+ <jok>"name"</jok>:
<jov>"body"</jov>,
+
<jok>"description"</jok>: <jov>"Pet object that needs to be added to the
store"</jov>,
+ <jok>"required"</jok>:
<jov>true</jov>
}
],
- <jf>"responses"</jf>: {
- <jf>"405"</jf>: {
- <jf>"description"</jf>:
<js>"Invalid input"</js>
+ <jok>"responses"</jok>: {
+ <jok>"405"</jok>: {
+
<jok>"description"</jok>: <jov>"Invalid input"</jov>
}
}
}
}
- },
+ }
}
</p>
<p>
diff --git
a/juneau-doc/src/main/resources/Topics/07.juneau-rest-server/09.HttpPartAnnotations/06.Header.html
b/juneau-doc/src/main/resources/Topics/07.juneau-rest-server/09.HttpPartAnnotations/06.Header.html
index 3ef59b4..27ccdf9 100644
---
a/juneau-doc/src/main/resources/Topics/07.juneau-rest-server/09.HttpPartAnnotations/06.Header.html
+++
b/juneau-doc/src/main/resources/Topics/07.juneau-rest-server/09.HttpPartAnnotations/06.Header.html
@@ -21,7 +21,7 @@
<ul class='doctree'>
<li class='ja'>{@link org.apache.juneau.http.annotation.Header Header}
<ul>
- <li class='jf'>{@link
org.apache.juneau.http.annotation.Header#_default() _default()} - Default
value if not present.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.Header#_default() _default()} - Default value
if not present.
<li class='jf'>{@link
org.apache.juneau.http.annotation.Header#_enum() _enum()} - Input validation.
Must match one of the values.
<li class='jf'>{@link
org.apache.juneau.http.annotation.Header#allowEmptyValue() allowEmptyValue()} -
Input validation. Allow empty value.
<li class='jf'>{@link
org.apache.juneau.http.annotation.Header#api() api()} - Free-form Swagger JSON.
diff --git
a/juneau-doc/src/main/resources/Topics/07.juneau-rest-server/09.HttpPartAnnotations/09.Response.html
b/juneau-doc/src/main/resources/Topics/07.juneau-rest-server/09.HttpPartAnnotations/09.Response.html
index 4209093..3389fc5 100644
---
a/juneau-doc/src/main/resources/Topics/07.juneau-rest-server/09.HttpPartAnnotations/09.Response.html
+++
b/juneau-doc/src/main/resources/Topics/07.juneau-rest-server/09.HttpPartAnnotations/09.Response.html
@@ -262,11 +262,11 @@
<br>For example, in the case of the <code>InvalidLogin</code> example
above, the following Swagger is generated:
</p>
<p class='bpcode w800'>
- <js>'/user/login'</js>: {
- get: {
- responses: {
- 401: {
- description: <js>'Invalid username or
password provided'</js>
+ <jok>'/user/login'</jok>: {
+ <jok>get</jok>: {
+ <jok>responses</jok>: {
+ <jok>401</jok>: {
+ <jok>description</jok>: <jov>'Invalid
username or password provided'</jov>
}
}
}
diff --git
a/juneau-doc/src/main/resources/Topics/07.juneau-rest-server/09.HttpPartAnnotations/10.ResponseHeader.html
b/juneau-doc/src/main/resources/Topics/07.juneau-rest-server/09.HttpPartAnnotations/10.ResponseHeader.html
index 4ae5c9e..ef9a916 100644
---
a/juneau-doc/src/main/resources/Topics/07.juneau-rest-server/09.HttpPartAnnotations/10.ResponseHeader.html
+++
b/juneau-doc/src/main/resources/Topics/07.juneau-rest-server/09.HttpPartAnnotations/10.ResponseHeader.html
@@ -13,6 +13,117 @@
***************************************************************************************************************************/
-->
-{todo} @ResponseHeader
+{new} @ResponseHeader
+
+<p>
+ The {@link org.apache.juneau.http.annotation.ResponseHeader
@ResponseHeader} annotation is applied to parameters and parameter types to
denote them as an HTTP response headers.
+</p>
+<ul class='doctree'>
+ <li class='ja'>{@link org.apache.juneau.http.annotation.ResponseHeader
ResponseHeader}
+ <ul>
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#_default() _default()} -
Default value if not present.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#_enum() _enum()} - Output
validation. Must match one of the values.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#$ref() $ref()} - Schema
reference.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#api() api()} - Free-form
Swagger JSON.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#code() code()} - HTTP status
codes that this header applies to.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#collectionFormat()
collectionFormat()} - How collections of items are formatted.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#description() description()} -
Description.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#example() example()} -
Serialized example.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#exclusiveMaximum()
exclusiveMaximum()} - Output validation. Whether maximum is exclusive.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#exclusiveMinimum()
exclusiveMinimum()} - Output validation. Whether minimum is exclusive.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#format() format()} - The
schema type format.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#items() items()} - The schema
of items in a collection.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#maximum() maximum()} - Output
validation. Maximum numeric value.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#maxItems() maxItems()} -
Output validation. Maximum number of items in a collection.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#maxLength() maxLength()} -
Output validation. Maximum length of a string.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#minimum() minimum()} - Output
validation. Minimum numeric value.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#minItems() minItems()} -
Output validation. Minimum number of items in a collection.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#minLength() minLength()} -
Output validation. Minimum length of a string.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#multipleOf() multipleOf()} -
Output validation. Number must be a multiple of.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#name() name()} - Header name.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#pattern() pattern()} - Output
validation. Must match regular expression.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#serializer() serializer()} -
Override the part serializer.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#type() type()} - The schema
type.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#uniqueItems() uniqueItems()} -
Output validation. Collections must contain unique items only.
+ <li class='jf'>{@link
org.apache.juneau.http.annotation.ResponseHeader#value() value()} - Free-form
Swagger JSON.
+ </ul>
+</ul>
+<p>
+ It can be used in the following locations:
+</p>
+<ul>
+ <li>Java method arguments and argument-types of server-side
<ja>@RestMethod</ja>-annotated REST Java methods.
+</ul>
+<p>
+ This annotation can only be applied to subclasses or parameters of type
{@link Value}.
+</p>
+<p>
+ The following examples show 3 different ways of accomplishing the same
task of setting an HTTP header
+ on a response:
+</p>
+<p class='bpcode w800'>
+ <jc>// Example #1 - Setting header directly on RestResponse object.</jc>
+ <ja>@RestMethod</ja>(...)
+ <jk>public void</jk> login(RestResponse res) {
+ res.setHeader(<js>"X-Rate-Limit"</js>, 1000);
+ ...
+ }
+
+ <jc>// Example #2 - Use on parameter.</jc>
+ <ja>@RestMethod</ja>(...)
+ <jk>public void</jk> login(
+ <ja>@ResponseHeader</ja>(
+ name=<js>"X-Rate-Limit"</js>,
+ type=<js>"integer"</js>,
+ format=<js>"int32"</js>,
+ description=<js>"Calls per hour allowed by the
user."</js>,
+ example=<js>"123"</js>
+ )
+ Value<Integer> rateLimit
+ )
+ {
+ rateLimit.set(1000);
+ ...
+ }
+
+ <jc>// Example #3 - Use on type.</jc>
+ <ja>@RestMethod</ja>(...)
+ <jk>public void</jk> login(RateLimit rateLimit) {
+ rateLimit.set(1000);
+ ...
+ }
+
+ <ja>@ResponseHeader</ja>(
+ name=<js>"X-Rate-Limit"</js>,
+ type=<js>"integer"</js>,
+ format=<js>"int32"</js>,
+ description=<js>"Calls per hour allowed by the user."</js>,
+ example=<js>"123"</js>
+ )
+ <jk>public class</jk> RateLimit <jk>extends</jk> Value<Integer> {}
+</p>
+
+<h5 class='topic'>Swagger documentation</h5>
+<p>
+ The attributes on this annotation are also used to populate the
generated Swagger for the method.
+ <br>For example, in the case of the <code>X-Rate-Limit</code> example
above, the following Swagger is generated:
+</p>
+<p class='bpcode w800'>
+ <jok>'/user/login'</jok>: {
+ <jok>get</jok>: {
+ <jok>responses</jok>: {
+ <jok>200</jok>: {
+ <jok>headers</jok>: {
+ <jok>'X-Rate-Limit'</jok>: {
+ <jok>type</jok>:
<jov>'integer'</jov>,
+ <jok>format</jok>:
<jov>'int32'</jov>,
+ <jok>description</jok>:
<jov>'Calls per hour allowed by the user.'</jov>,
+ <jok>example</jok>:
<jov>'123'</jov>
+ }
+ }
+ }
+ }
+ }
+ }
+</p>
-TODO(7.2.0)
\ No newline at end of file