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 e612956 Javadocs
e612956 is described below
commit e61295688744cb6e87b139e9bce20c79b866a55a
Author: JamesBognar <[email protected]>
AuthorDate: Thu May 24 08:33:45 2018 -0400
Javadocs
---
.../examples/rest/petstore/PetStoreResource.java | 7 +-
.../apache/juneau/rest/BasicRestInfoProvider.java | 16 +-
.../juneau/rest/annotation/ResourceSwagger.java | 330 +++++++++++----------
.../apache/juneau/rest/annotation/RestMethod.java | 15 +-
.../juneau/rest/annotation/RestResource.java | 16 +-
5 files changed, 205 insertions(+), 179 deletions(-)
diff --git
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/PetStoreResource.java
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/PetStoreResource.java
index beaf3b2..ce2ebba 100644
---
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/PetStoreResource.java
+++
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/PetStoreResource.java
@@ -42,9 +42,10 @@ import org.apache.juneau.rest.converters.*;
@RestResource(
path="/petstore",
title="Petstore application",
- description=
- "This is a sample server Petstore server based on the Petstore
sample at Swagger.io."
- + "<br>You can find out more about Swagger at <a class='link'
href='http://swagger.io'>http://swagger.io</a>.",
+ description= {
+ "This is a sample server Petstore server based on the Petstore
sample at Swagger.io.",
+ "You can find out more about Swagger at <a class='link'
href='http://swagger.io'>http://swagger.io</a>.",
+ },
htmldoc=@HtmlDoc(
widgets={
ContentTypeMenuItem.class,
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
index 4481961..0bb7549 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestInfoProvider.java
@@ -128,10 +128,10 @@ public class BasicRestInfoProvider implements
RestInfoProvider {
for (RestResource r :
restResourceAnnotationsParentFirst.values()) {
if (! r.siteName().isEmpty())
siteName = r.siteName();
- if (! r.title().isEmpty())
- title = r.title();
- if (! r.description().isEmpty())
- description = r.description();
+ if (r.title().length > 0)
+ title = joinnl(r.title());
+ if (r.description().length > 0)
+ description = joinnl(r.description());
}
}
}
@@ -188,10 +188,10 @@ public class BasicRestInfoProvider implements
RestInfoProvider {
for (Map.Entry<Class<?>,RestResource> e :
findAnnotationsMapParentFirst(RestResource.class,
resource.getClass()).entrySet()) {
RestResource rr = e.getValue();
- if (! rr.title().isEmpty())
- omSwagger.getObjectMap("info",
true).appendIf(false, true, true, "title", vr.resolve(rr.title()));
- if (! rr.description().isEmpty())
- omSwagger.getObjectMap("info",
true).appendIf(false, true, true, "description", vr.resolve(rr.description()));
+ if (rr.title().length > 0)
+ omSwagger.getObjectMap("info",
true).appendIf(false, true, true, "title", vr.resolve(joinnl(rr.title())));
+ if (rr.description().length > 0)
+ omSwagger.getObjectMap("info",
true).appendIf(false, true, true, "description",
vr.resolve(joinnl(rr.description())));
ResourceSwagger r = rr.swagger();
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResourceSwagger.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResourceSwagger.java
index e9cf58d..ee88e70 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResourceSwagger.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResourceSwagger.java
@@ -12,10 +12,6 @@
//
***************************************************************************************************************************
package org.apache.juneau.rest.annotation;
-import org.apache.juneau.config.vars.*;
-import org.apache.juneau.rest.vars.*;
-import org.apache.juneau.svl.vars.*;
-
/**
* Extended annotation for {@link RestResource#swagger()
@RestResource.swagger()}.
*
@@ -27,25 +23,126 @@ import org.apache.juneau.svl.vars.*;
public @interface ResourceSwagger {
/**
- * {@link TODO}
+ * Defines the the free-form contents of the swagger.
+ *
+ * <p>
+ * Used to populate the auto-generated OPTIONS swagger documentation.
+ *
+ * <h5 class='section'>Examples:</h5>
+ * <p class='bcode'>
+ * <ja>@RestResource</ja>(
+ * <jc>// Swagger info.</jc>
+ * swagger=@ResourceSwagger({
+ * <js>"title:'Petstore application',"</js>,
+ * <js>"description:"</js>,
+ * <js>"'This is a sample server Petstore
server based on the Petstore sample at Swagger.io."</js>,
+ * + <js>"\nYou can find out more about
Swagger at <a class=\'link\'
href=\'http://swagger.io\'>http://swagger.io</a>.',"</js>,
+ * <js>"contact:{name:'John
Smith',email:'[email protected]'},"</js>,
+ * <js>"license:{name:'Apache
2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'},"</js>,
+ * <js>"version:'2.0',</js>,
+ * <js>"termsOfService:'You are on your
own.',"</js>,
+ * <js>"tags:[{name:'Java',description:'Java
utility',externalDocs:{description:'Home
page',url:'http://juneau.apache.org'}}],"</js>,
+ * <js>"externalDocs:{description:'Home
page',url:'http://juneau.apache.org'}"</js>
+ * })
+ * )
+ * </p>
+ * <p class='bcode'>
+ * <ja>@RestResource</ja>(
+ * <jc>// Swagger info pulled from file.</jc>
+ * swagger=@ResourceSwagger("$F{MyResource.json}")
+ * )
+ * </p>
+ *
+ * <h5 class='section'>Notes:</h5>
+ * <ul class='spaced-list'>
+ * <li>
+ * The format is a JSON object.
+ * <br>Multiple lines are concatenated with newlines.
+ * <li>
+ * The starting and ending <js>'{'</js>/<js>'}'</js>
characters are optional.
+ * <li>
+ * If a Swagger JSON file
<code>{resource-class-simple-name}_{locale}.json</code> is present in the same
package on the classpath, the values
+ * defined in this annotation will be superimposed on the
values pulled from the Swagger JSON file.
+ * <li>
+ * The other annotation values defined here are
superimposed on the values defined by this value.
+ * <li>
+ * Supports <a class="doclink"
href="../../../../../overview-summary.html#DefaultRestSvlVariables">initialization-time
and request-time variables</a>
+ * (e.g. <js>"$L{my.localized.variable}"</js>).
+ * </ul>
*/
String[] value() default {};
/**
- * {@link TODO}
+ * Defines the swagger value <code>/info/title</code>.
+ *
+ * <h5 class='section'>Example:</h5>
+ * <p class='bcode'>
+ * <ja>@RestResource</ja>(
+ * swagger=<ja>@ResourceSwagger</ja>(
+ * title=<js>"Petstore application"</js>
+ * )
+ * )
+ * </p>
+ *
+ * <h5 class='section'>Notes:</h5>
+ * <ul class='spaced-list'>
+ * <li>
+ * The format is plain-text.
+ * <br>Multiple lines are concatenated with newlines.
+ * <li>
+ * The precedence of lookup for this field is:
+ * <ol>
+ * <li><code>{resource-class}.title</code>
property in resource bundle.
+ * <li>{@link ResourceSwagger#title()} on this
class, then any parent classes.
+ * <li>Value defined in Swagger JSON file.
+ * <li>{@link RestResource#title()} on this class,
then any parent classes.
+ * <li>
+ * </ol>
+ * <li>
+ * Supports <a class="doclink"
href="../../../../../overview-summary.html#DefaultRestSvlVariables">initialization-time
and request-time variables</a>
+ * (e.g. <js>"$L{my.localized.variable}"</js>).
+ * </ul>
*/
String[] title() default {};
/**
- * {@link TODO}
+ * Defines the swagger value <code>/info/description</code>.
+ *
+ * <h5 class='section'>Example:</h5>
+ * <p class='bcode'>
+ * <ja>@RestResource</ja>(
+ * swagger=<ja>@ResourceSwagger</ja>(
+ * description={
+ * <js>"This is a sample server Petstore
server based on the Petstore sample at Swagger.io."<js>,
+ * <js>"You can find out more about
Swagger at <a class='link'
href='http://swagger.io'>http://swagger.io</a>."</js>
+ * }
+ * )
+ * )
+ * </p>
+ *
+ * <h5 class='section'>Notes:</h5>
+ * <ul class='spaced-list'>
+ * <li>
+ * The format of the value is plain-text.
+ * <br>Multiple lines are concatenated with newlines.
+ * <li>
+ * The precedence of lookup for this field is:
+ * <ol>
+ * <li><code>{resource-class}.description</code>
property in resource bundle.
+ * <li>{@link ResourceSwagger#description()} on
this class, then any parent classes.
+ * <li>Value defined in Swagger JSON file.
+ * <li>{@link RestResource#description()} on this
class, then any parent classes.
+ * <li>
+ * </ol>
+ * <li>
+ * Supports <a class="doclink"
href="../../../../../overview-summary.html#DefaultRestSvlVariables">initialization-time
and request-time variables</a>
+ * (e.g. <js>"$L{my.localized.variable}"</js>).
+ * </ul>
*/
String[] description() default {};
/**
- * Optional contact information for the exposed API.
- *
- * <p>
- * It is used to populate the Swagger contact field and to display on
HTML pages.
+ * Defines the swagger value <code>/info/contact</code>.
*
* <p>
* A simplified JSON string with the following fields:
@@ -88,35 +185,20 @@ public @interface ResourceSwagger {
)
swagger=@ResourceSwagger("$F{PetStoreResource.json}"),
*
- * <p>
- * Value can contain any of the following variables:
- * {@link ConfigVar $C}
- * {@link CoalesceVar $CO}
- * {@link EnvVariablesVar $E}
- * {@link FileVar $F}
- * {@link ServletInitParamVar $I},
- * {@link IfVar $IF}
- * {@link LocalizationVar $L}
- * {@link RequestAttributeVar $RA}
- * {@link RequestFormDataVar $RF}
- * {@link RequestHeaderVar $RH}
- * {@link RequestPathVar $RP}
- * {@link RequestQueryVar $RQ}
- * {@link RequestVar $R}
- * {@link SystemPropertiesVar $S}
- * {@link SerializedRequestAttrVar $SA}
- * {@link SwitchVar $SW}
- * {@link UrlVar $U}
- * {@link UrlEncodeVar $UE}
- * {@link WidgetVar $W}
- *
- * <p>
- * Corresponds to the swagger field <code>/info/contact</code>.
+ * <h5 class='section'>Notes:</h5>
+ * <ul class='spaced-list'>
+ * <li>
+ * The format is a JSON object.
+ * <br>Multiple lines are concatenated with newlines.
+ * <li>
+ * Supports <a class="doclink"
href="../../../../../overview-summary.html#DefaultRestSvlVariables">initialization-time
and request-time variables</a>
+ * (e.g. <js>"$L{my.localized.variable}"</js>).
+ * </ul>
*/
String[] contact() default {};
/**
- * Optional external documentation information for the exposed API.
+ * Defines the swagger value <code>/externalDocs</code>.
*
* <p>
* It is used to populate the Swagger external documentation field and
to display on HTML pages.
@@ -144,35 +226,20 @@ public @interface ResourceSwagger {
* )
* </p>
*
- * <p>
- * Value can contain any of the following variables:
- * {@link ConfigVar $C}
- * {@link CoalesceVar $CO}
- * {@link EnvVariablesVar $E}
- * {@link FileVar $F}
- * {@link ServletInitParamVar $I},
- * {@link IfVar $IF}
- * {@link LocalizationVar $L}
- * {@link RequestAttributeVar $RA}
- * {@link RequestFormDataVar $RF}
- * {@link RequestHeaderVar $RH}
- * {@link RequestPathVar $RP}
- * {@link RequestQueryVar $RQ}
- * {@link RequestVar $R}
- * {@link SystemPropertiesVar $S}
- * {@link SerializedRequestAttrVar $SA}
- * {@link SwitchVar $SW}
- * {@link UrlVar $U}
- * {@link UrlEncodeVar $UE}
- * {@link WidgetVar $W}
- *
- * <p>
- * Corresponds to the swagger field <code>/tags</code>.
+ * <h5 class='section'>Notes:</h5>
+ * <ul class='spaced-list'>
+ * <li>
+ * The format is a JSON object.
+ * <br>Multiple lines are concatenated with newlines.
+ * <li>
+ * Supports <a class="doclink"
href="../../../../../overview-summary.html#DefaultRestSvlVariables">initialization-time
and request-time variables</a>
+ * (e.g. <js>"$L{my.localized.variable}"</js>).
+ * </ul>
*/
String[] externalDocs() default {};
/**
- * Optional license information for the exposed API.
+ * Defines the swagger value <code>/info/license</code>.
*
* <p>
* It is used to populate the Swagger license field and to display on
HTML pages.
@@ -200,34 +267,22 @@ public @interface ResourceSwagger {
* )
* </p>
*
- * <p>
- * Value can contain any of the following variables:
- * {@link ConfigVar $C}
- * {@link CoalesceVar $CO}
- * {@link EnvVariablesVar $E}
- * {@link FileVar $F}
- * {@link ServletInitParamVar $I},
- * {@link IfVar $IF}
- * {@link LocalizationVar $L}
- * {@link RequestAttributeVar $RA}
- * {@link RequestFormDataVar $RF}
- * {@link RequestHeaderVar $RH}
- * {@link RequestPathVar $RP}
- * {@link RequestQueryVar $RQ}
- * {@link RequestVar $R}
- * {@link SystemPropertiesVar $S}
- * {@link SerializedRequestAttrVar $SA}
- * {@link SwitchVar $SW}
- * {@link UrlVar $U}
- * {@link UrlEncodeVar $UE}
- * {@link WidgetVar $W}
- *
- * <p>
- * Corresponds to the swagger field <code>/info/license</code>.
+ * <h5 class='section'>Notes:</h5>
+ * <ul class='spaced-list'>
+ * <li>
+ * The format is a JSON object.
+ * <br>Multiple lines are concatenated with newlines.
+ * <li>
+ * Supports <a class="doclink"
href="../../../../../overview-summary.html#DefaultRestSvlVariables">initialization-time
and request-time variables</a>
+ * (e.g. <js>"$L{my.localized.variable}"</js>).
+ * </ul>
*/
String[] license() default {};
/**
+ * Defines the swagger value <code>/tags</code>.
+ *
+ *
* Optional tagging information for the exposed API.
*
* <p>
@@ -262,34 +317,22 @@ public @interface ResourceSwagger {
* )
* </p>
*
- * <p>
- * Value can contain any of the following variables:
- * {@link ConfigVar $C}
- * {@link CoalesceVar $CO}
- * {@link EnvVariablesVar $E}
- * {@link FileVar $F}
- * {@link ServletInitParamVar $I},
- * {@link IfVar $IF}
- * {@link LocalizationVar $L}
- * {@link RequestAttributeVar $RA}
- * {@link RequestFormDataVar $RF}
- * {@link RequestHeaderVar $RH}
- * {@link RequestPathVar $RP}
- * {@link RequestQueryVar $RQ}
- * {@link RequestVar $R}
- * {@link SystemPropertiesVar $S}
- * {@link SerializedRequestAttrVar $SA}
- * {@link SwitchVar $SW}
- * {@link UrlVar $U}
- * {@link UrlEncodeVar $UE}
- * {@link WidgetVar $W}
- *
- * <p>
- * Corresponds to the swagger field <code>/tags</code>.
+ * <h5 class='section'>Notes:</h5>
+ * <ul class='spaced-list'>
+ * <li>
+ * The format is a JSON array.
+ * <br>Multiple lines are concatenated with newlines.
+ * <li>
+ * Supports <a class="doclink"
href="../../../../../overview-summary.html#DefaultRestSvlVariables">initialization-time
and request-time variables</a>
+ * (e.g. <js>"$L{my.localized.variable}"</js>).
+ * </ul>
*/
String[] tags() default {};
/**
+ * Defines the swagger value <code>/info/termsOfService</code>.
+ *
+ *
* Optional servlet terms-of-service for this API.
*
* <p>
@@ -299,34 +342,23 @@ public @interface ResourceSwagger {
* The default value pulls the description from the
<code>termsOfService</code> entry in the servlet resource bundle.
* (e.g. <js>"termsOfService = foo"</js> or
<js>"MyServlet.termsOfService = foo"</js>).
*
- * <p>
- * Value can contain any of the following variables:
- * {@link ConfigVar $C}
- * {@link CoalesceVar $CO}
- * {@link EnvVariablesVar $E}
- * {@link FileVar $F}
- * {@link ServletInitParamVar $I},
- * {@link IfVar $IF}
- * {@link LocalizationVar $L}
- * {@link RequestAttributeVar $RA}
- * {@link RequestFormDataVar $RF}
- * {@link RequestHeaderVar $RH}
- * {@link RequestPathVar $RP}
- * {@link RequestQueryVar $RQ}
- * {@link RequestVar $R}
- * {@link SystemPropertiesVar $S}
- * {@link SerializedRequestAttrVar $SA}
- * {@link SwitchVar $SW}
- * {@link UrlVar $U}
- * {@link UrlEncodeVar $UE}
- * {@link WidgetVar $W}
- *
- * <p>
- * Corresponds to the swagger field <code>/info/termsOfService</code>.
+ * <h5 class='section'>Notes:</h5>
+ * <ul class='spaced-list'>
+ * <li>
+ * The format is plain text.
+ * <br>Multiple lines are concatenated with newlines.
+ * <li>
+ * Supports <a class="doclink"
href="../../../../../overview-summary.html#DefaultRestSvlVariables">initialization-time
and request-time variables</a>
+ * (e.g. <js>"$L{my.localized.variable}"</js>).
+ * </ul>
*/
String[] termsOfService() default {};
/**
+ * Defines the swagger value <code>/info/version</code>.
+ *
+ *
+ *
* Provides the version of the application API (not to be confused with
the specification version).
*
* <p>
@@ -336,30 +368,14 @@ public @interface ResourceSwagger {
* The default value pulls the description from the
<code>version</code> entry in the servlet resource bundle.
* (e.g. <js>"version = 2.0"</js> or <js>"MyServlet.version =
2.0"</js>).
*
- * <p>
- * Value can contain any of the following variables:
- * {@link ConfigVar $C}
- * {@link CoalesceVar $CO}
- * {@link EnvVariablesVar $E}
- * {@link FileVar $F}
- * {@link ServletInitParamVar $I},
- * {@link IfVar $IF}
- * {@link LocalizationVar $L}
- * {@link RequestAttributeVar $RA}
- * {@link RequestFormDataVar $RF}
- * {@link RequestHeaderVar $RH}
- * {@link RequestPathVar $RP}
- * {@link RequestQueryVar $RQ}
- * {@link RequestVar $R}
- * {@link SystemPropertiesVar $S}
- * {@link SerializedRequestAttrVar $SA}
- * {@link SwitchVar $SW}
- * {@link UrlVar $U}
- * {@link UrlEncodeVar $UE}
- * {@link WidgetVar $W}
- *
- * <p>
- * Corresponds to the swagger field <code>/info/version</code>.
+ * <h5 class='section'>Notes:</h5>
+ * <ul class='spaced-list'>
+ * <li>
+ * The format is plain text.
+ * <li>
+ * Supports <a class="doclink"
href="../../../../../overview-summary.html#DefaultRestSvlVariables">initialization-time
and request-time variables</a>
+ * (e.g. <js>"$L{my.localized.variable}"</js>).
+ * </ul>
*/
String version() default "";
}
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
index eaf4f01..bfac48d 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
@@ -754,7 +754,20 @@ public @interface RestMethod {
* }
* )
* </p>
- * {@link TODO}
+ *
+ * <h5 class='section'>Notes:</h5>
+ * <ul class='spaced-list'>
+ * <li>
+ * The format is JSON.
+ * <br>Multiple lines are concatenated with newlines.
+ * <li>
+ * The starting and ending <js>'{'</js>/<js>'}'</js>
characters around the entire value are optional.
+ * <li>
+ * These values are superimposed on top of any Swagger
JSON file present for the resource in the classpath.
+ * <li>
+ * Supports <a class="doclink"
href="../../../../../overview-summary.html#DefaultRestSvlVariables">initialization-time
and request-time variables</a>
+ * (e.g. <js>"$L{my.localized.variable}"</js>).
+ * </ul>
*
* <h5 class='section'>See Also:</h5>
* <ul>
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestResource.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestResource.java
index 719d023..788259e 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestResource.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestResource.java
@@ -325,7 +325,8 @@ public @interface RestResource {
* Supports <a class="doclink"
href="../../../../../overview-summary.html#DefaultRestSvlVariables">initialization-time
and request-time variables</a>
* (e.g. <js>"$L{my.localized.variable}"</js>).
* <li>
- * Corresponds to the swagger field
<code>/info/description</code>.
+ * The format is plain-text.
+ * <br>Multiple lines are concatenated with newlines.
* </ul>
*
* <h5 class='section'>See Also:</h5>
@@ -333,7 +334,7 @@ public @interface RestResource {
* <li class='jm'>{@link
RestInfoProvider#getDescription(RestRequest)}
* </ul>
*/
- String description() default "";
+ String[] description() default {};
/**
* Compression encoders.
@@ -853,27 +854,22 @@ public @interface RestResource {
* <p>
* Used to populate the auto-generated OPTIONS swagger documentation.
*
- * <p>
- * The format of this annotation is JSON when all individual parts are
concatenated.
- * <br>The starting and ending <js>'{'</js>/<js>'}'</js> characters
around the entire value are optional.
- *
* <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestResource</ja>(
* path=<js>"/addressBook"</js>,
*
* <jc>// Swagger info.</jc>
- * swagger={
+ * swagger=@ResourceSwagger({
* <js>"contact:{name:'John
Smith',email:'[email protected]'},"</js>,
* <js>"license:{name:'Apache
2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'},"</js>,
* <js>"version:'2.0',</js>,
* <js>"termsOfService:'You are on your
own.',"</js>,
* <js>"tags:[{name:'Java',description:'Java
utility',externalDocs:{description:'Home
page',url:'http://juneau.apache.org'}}],"</js>,
* <js>"externalDocs:{description:'Home
page',url:'http://juneau.apache.org'}"</js>
- * }
+ * })
* )
* </p>
- * {@link TODO}
*
* <h5 class='section'>See Also:</h5>
* <ul>
@@ -903,7 +899,7 @@ public @interface RestResource {
* <li class='jm'>{@link RestInfoProvider#getTitle(RestRequest)}
* </ul>
*/
- String title() default "";
+ String[] title() default {};
/**
* Configuration property: Use classpath resource caching.
--
To stop receiving notification emails like this one, please contact
[email protected].