http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/c4956832/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestMethod.html
----------------------------------------------------------------------
diff --git
a/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestMethod.html
b/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestMethod.html
index 1a83b92..fdb605d 100644
---
a/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestMethod.html
+++
b/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestMethod.html
@@ -354,275 +354,281 @@
<span class="sourceLineNo">346</span> * }<a name="line.346"></a>
<span class="sourceLineNo">347</span> *<a name="line.347"></a>
<span class="sourceLineNo">348</span> * <jc>// Only render "id"
property.</jc><a name="line.348"></a>
-<span class="sourceLineNo">349</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/mybeans"</js>,
bpIncludes=<js>"{MyBean:'id'}"</js>)<a name="line.349"></a>
+<span class="sourceLineNo">349</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/mybeans"</js>, bpi=<js>"MyBean: id"</js>)<a
name="line.349"></a>
<span class="sourceLineNo">350</span> * <jk>public</jk>
List&lt;MyBean&gt; getBeanSummary();<a name="line.350"></a>
<span class="sourceLineNo">351</span> *<a name="line.351"></a>
<span class="sourceLineNo">352</span> * <jc>// Only render "a" and
"b" properties.</jc><a name="line.352"></a>
-<span class="sourceLineNo">353</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/mybeans/{id}"</js>,
bpIncludes=<js>"{MyBean:'a,b'}"</js>)<a name="line.353"></a>
+<span class="sourceLineNo">353</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/mybeans/{id}"</js>, bpi=<js>"MyBean:
a,b"</js>)<a name="line.353"></a>
<span class="sourceLineNo">354</span> * <jk>public</jk>
MyBean getBeanDetails(<ja>@Path</ja> String id);<a
name="line.354"></a>
<span class="sourceLineNo">355</span> * </p><a name="line.355"></a>
<span class="sourceLineNo">356</span> *<a name="line.356"></a>
<span class="sourceLineNo">357</span> * <p><a name="line.357"></a>
-<span class="sourceLineNo">358</span> * The format of this value is a lax
JSON object.<a name="line.358"></a>
+<span class="sourceLineNo">358</span> * The format of each value is:
<js>"Key: comma-delimited-tokens".<a name="line.358"></a>
<span class="sourceLineNo">359</span> * <br>Keys can be
fully-qualified or short class names or <js>"*"</js> to represent
all classes.<a name="line.359"></a>
<span class="sourceLineNo">360</span> * <br>Values are
comma-delimited lists of bean property names.<a name="line.360"></a>
<span class="sourceLineNo">361</span> * <br>Properties apply to
specified class and all subclasses.<a name="line.361"></a>
-<span class="sourceLineNo">362</span> */<a name="line.362"></a>
-<span class="sourceLineNo">363</span> String bpIncludes() default "";<a
name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span> /**<a name="line.365"></a>
-<span class="sourceLineNo">366</span> * Shortcut for specifying the {@link
BeanContext#BEAN_excludeProperties} property on all serializers.<a
name="line.366"></a>
-<span class="sourceLineNo">367</span> *<a name="line.367"></a>
-<span class="sourceLineNo">368</span> * <p><a name="line.368"></a>
-<span class="sourceLineNo">369</span> * Same as {@link #bpIncludes()}
except you specify a list of bean property names that you want to exclude
from<a name="line.369"></a>
-<span class="sourceLineNo">370</span> * serialization.<a
name="line.370"></a>
-<span class="sourceLineNo">371</span> *<a name="line.371"></a>
-<span class="sourceLineNo">372</span> * <p><a name="line.372"></a>
-<span class="sourceLineNo">373</span> * In the example below, our 'summary'
view is a list of beans where we want to exclude some properties:<a
name="line.373"></a>
-<span class="sourceLineNo">374</span> * <p class='bcode'><a
name="line.374"></a>
-<span class="sourceLineNo">375</span> * <jc>// Our bean</jc><a
name="line.375"></a>
-<span class="sourceLineNo">376</span> * <jk>public
class</jk> MyBean {<a name="line.376"></a>
-<span class="sourceLineNo">377</span> *<a name="line.377"></a>
-<span class="sourceLineNo">378</span> * <jc>// Summary
properties</jc><a name="line.378"></a>
-<span class="sourceLineNo">379</span> *
<ja>@Html</ja>(link=<js>"servlet:/mybeans/{id}"</js>)<a
name="line.379"></a>
-<span class="sourceLineNo">380</span> * <jk>public</jk>
String <jf>id</jf>;<a name="line.380"></a>
-<span class="sourceLineNo">381</span> *<a name="line.381"></a>
-<span class="sourceLineNo">382</span> * <jc>// Detail
properties</jc><a name="line.382"></a>
-<span class="sourceLineNo">383</span> * <jk>public</jk>
String <jf>a</jf>, <jf>b</jf>;<a name="line.383"></a>
-<span class="sourceLineNo">384</span> * }<a name="line.384"></a>
-<span class="sourceLineNo">385</span> *<a name="line.385"></a>
-<span class="sourceLineNo">386</span> * <jc>// Don't show "a" and "b"
properties.</jc><a name="line.386"></a>
-<span class="sourceLineNo">387</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/mybeans"</js>,
bpExcludes=<js>"{MyBean:'a,b'}"</js>)<a name="line.387"></a>
-<span class="sourceLineNo">388</span> * <jk>public</jk>
List&lt;MyBean&gt; getBeanSummary();<a name="line.388"></a>
-<span class="sourceLineNo">389</span> *<a name="line.389"></a>
-<span class="sourceLineNo">390</span> * <jc>// Render all
properties.</jc><a name="line.390"></a>
-<span class="sourceLineNo">391</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/mybeans/{id}"</js>)<a name="line.391"></a>
-<span class="sourceLineNo">392</span> * <jk>public</jk>
MyBean getBeanDetails(<ja>@Path</ja> String id);<a
name="line.392"></a>
-<span class="sourceLineNo">393</span> * </p><a name="line.393"></a>
-<span class="sourceLineNo">394</span> *<a name="line.394"></a>
-<span class="sourceLineNo">395</span> * <p><a name="line.395"></a>
-<span class="sourceLineNo">396</span> * The format of this value is a lax
JSON object.<a name="line.396"></a>
-<span class="sourceLineNo">397</span> * <br>Keys can be
fully-qualified or short class names or <js>"*"</js> to represent
all classes.<a name="line.397"></a>
-<span class="sourceLineNo">398</span> * <br>Values are
comma-delimited lists of bean property names.<a name="line.398"></a>
-<span class="sourceLineNo">399</span> * <br>Properties apply to
specified class and all subclasses.<a name="line.399"></a>
-<span class="sourceLineNo">400</span> */<a name="line.400"></a>
-<span class="sourceLineNo">401</span> String bpExcludes() default "";<a
name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span> /**<a name="line.403"></a>
-<span class="sourceLineNo">404</span> * Specifies default values for
request headers.<a name="line.404"></a>
-<span class="sourceLineNo">405</span> *<a name="line.405"></a>
-<span class="sourceLineNo">406</span> * <p><a name="line.406"></a>
-<span class="sourceLineNo">407</span> * Strings are of the format
<js>"Header-Name: header-value"</js>.<a name="line.407"></a>
-<span class="sourceLineNo">408</span> *<a name="line.408"></a>
-<span class="sourceLineNo">409</span> * <p><a name="line.409"></a>
-<span class="sourceLineNo">410</span> * Affects values returned by {@link
RestRequest#getHeader(String)} when the header is not present on the request.<a
name="line.410"></a>
+<span class="sourceLineNo">362</span> *<a name="line.362"></a>
+<span class="sourceLineNo">363</span> * <p><a name="line.363"></a>
+<span class="sourceLineNo">364</span> * Semicolons can be used as an
additional separator for multiple values: <code>bpi="Bean1: foo; Bean2:
bar,baz"</code><a name="line.364"></a>
+<span class="sourceLineNo">365</span> */<a name="line.365"></a>
+<span class="sourceLineNo">366</span> String[] bpi() default {};<a
name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span> /**<a name="line.368"></a>
+<span class="sourceLineNo">369</span> * Shortcut for specifying the {@link
BeanContext#BEAN_excludeProperties} property on all serializers.<a
name="line.369"></a>
+<span class="sourceLineNo">370</span> *<a name="line.370"></a>
+<span class="sourceLineNo">371</span> * <p><a name="line.371"></a>
+<span class="sourceLineNo">372</span> * Same as {@link #bpi()} except you
specify a list of bean property names that you want to exclude from<a
name="line.372"></a>
+<span class="sourceLineNo">373</span> * serialization.<a
name="line.373"></a>
+<span class="sourceLineNo">374</span> *<a name="line.374"></a>
+<span class="sourceLineNo">375</span> * <p><a name="line.375"></a>
+<span class="sourceLineNo">376</span> * In the example below, our 'summary'
view is a list of beans where we want to exclude some properties:<a
name="line.376"></a>
+<span class="sourceLineNo">377</span> * <p class='bcode'><a
name="line.377"></a>
+<span class="sourceLineNo">378</span> * <jc>// Our bean</jc><a
name="line.378"></a>
+<span class="sourceLineNo">379</span> * <jk>public
class</jk> MyBean {<a name="line.379"></a>
+<span class="sourceLineNo">380</span> *<a name="line.380"></a>
+<span class="sourceLineNo">381</span> * <jc>// Summary
properties</jc><a name="line.381"></a>
+<span class="sourceLineNo">382</span> *
<ja>@Html</ja>(link=<js>"servlet:/mybeans/{id}"</js>)<a
name="line.382"></a>
+<span class="sourceLineNo">383</span> * <jk>public</jk>
String <jf>id</jf>;<a name="line.383"></a>
+<span class="sourceLineNo">384</span> *<a name="line.384"></a>
+<span class="sourceLineNo">385</span> * <jc>// Detail
properties</jc><a name="line.385"></a>
+<span class="sourceLineNo">386</span> * <jk>public</jk>
String <jf>a</jf>, <jf>b</jf>;<a name="line.386"></a>
+<span class="sourceLineNo">387</span> * }<a name="line.387"></a>
+<span class="sourceLineNo">388</span> *<a name="line.388"></a>
+<span class="sourceLineNo">389</span> * <jc>// Don't show "a" and "b"
properties.</jc><a name="line.389"></a>
+<span class="sourceLineNo">390</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/mybeans"</js>, bpx=<js>"MyBean: a,b"</js>)<a
name="line.390"></a>
+<span class="sourceLineNo">391</span> * <jk>public</jk>
List&lt;MyBean&gt; getBeanSummary();<a name="line.391"></a>
+<span class="sourceLineNo">392</span> *<a name="line.392"></a>
+<span class="sourceLineNo">393</span> * <jc>// Render all
properties.</jc><a name="line.393"></a>
+<span class="sourceLineNo">394</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/mybeans/{id}"</js>)<a name="line.394"></a>
+<span class="sourceLineNo">395</span> * <jk>public</jk>
MyBean getBeanDetails(<ja>@Path</ja> String id);<a
name="line.395"></a>
+<span class="sourceLineNo">396</span> * </p><a name="line.396"></a>
+<span class="sourceLineNo">397</span> *<a name="line.397"></a>
+<span class="sourceLineNo">398</span> * <p><a name="line.398"></a>
+<span class="sourceLineNo">399</span> * The format of each value is:
<js>"Key: comma-delimited-tokens".<a name="line.399"></a>
+<span class="sourceLineNo">400</span> * <br>Keys can be
fully-qualified or short class names or <js>"*"</js> to represent
all classes.<a name="line.400"></a>
+<span class="sourceLineNo">401</span> * <br>Values are
comma-delimited lists of bean property names.<a name="line.401"></a>
+<span class="sourceLineNo">402</span> * <br>Properties apply to
specified class and all subclasses.<a name="line.402"></a>
+<span class="sourceLineNo">403</span> *<a name="line.403"></a>
+<span class="sourceLineNo">404</span> * <p><a name="line.404"></a>
+<span class="sourceLineNo">405</span> * Semicolons can be used as an
additional separator for multiple values: <code>bpi="Bean1: foo; Bean2:
bar,baz"</code><a name="line.405"></a>
+<span class="sourceLineNo">406</span> */<a name="line.406"></a>
+<span class="sourceLineNo">407</span> String[] bpx() default {};<a
name="line.407"></a>
+<span class="sourceLineNo">408</span><a name="line.408"></a>
+<span class="sourceLineNo">409</span> /**<a name="line.409"></a>
+<span class="sourceLineNo">410</span> * Specifies default values for
request headers.<a name="line.410"></a>
<span class="sourceLineNo">411</span> *<a name="line.411"></a>
<span class="sourceLineNo">412</span> * <p><a name="line.412"></a>
-<span class="sourceLineNo">413</span> * The most useful reason for this
annotation is to provide a default <code>Accept</code> header when
one is not<a name="line.413"></a>
-<span class="sourceLineNo">414</span> * specified so that a particular
default {@link Serializer} is picked.<a name="line.414"></a>
-<span class="sourceLineNo">415</span> *<a name="line.415"></a>
-<span class="sourceLineNo">416</span> * <p><a name="line.416"></a>
-<span class="sourceLineNo">417</span> * Only one header value can be
specified per entry (i.e. it's not a delimited list of header entries).<a
name="line.417"></a>
-<span class="sourceLineNo">418</span> *<a name="line.418"></a>
-<span class="sourceLineNo">419</span> * <p><a name="line.419"></a>
-<span class="sourceLineNo">420</span> * Header values specified at the
method level override header values specified at the servlet level.<a
name="line.420"></a>
+<span class="sourceLineNo">413</span> * Strings are of the format
<js>"Header-Name: header-value"</js>.<a name="line.413"></a>
+<span class="sourceLineNo">414</span> *<a name="line.414"></a>
+<span class="sourceLineNo">415</span> * <p><a name="line.415"></a>
+<span class="sourceLineNo">416</span> * Affects values returned by {@link
RestRequest#getHeader(String)} when the header is not present on the request.<a
name="line.416"></a>
+<span class="sourceLineNo">417</span> *<a name="line.417"></a>
+<span class="sourceLineNo">418</span> * <p><a name="line.418"></a>
+<span class="sourceLineNo">419</span> * The most useful reason for this
annotation is to provide a default <code>Accept</code> header when
one is not<a name="line.419"></a>
+<span class="sourceLineNo">420</span> * specified so that a particular
default {@link Serializer} is picked.<a name="line.420"></a>
<span class="sourceLineNo">421</span> *<a name="line.421"></a>
-<span class="sourceLineNo">422</span> * <h5
class='section'>Example:</h5><a name="line.422"></a>
-<span class="sourceLineNo">423</span> * <p class='bcode'><a
name="line.423"></a>
-<span class="sourceLineNo">424</span> * <jc>// Assume "text/json"
Accept value when Accept not specified</jc><a name="line.424"></a>
-<span class="sourceLineNo">425</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/*"</js>, defaultRequestHeaders={<js>"Accept:
text/json"</js>})<a name="line.425"></a>
-<span class="sourceLineNo">426</span> * <jk>public</jk>
String doGet() {<a name="line.426"></a>
-<span class="sourceLineNo">427</span> * ...<a name="line.427"></a>
-<span class="sourceLineNo">428</span> * }<a name="line.428"></a>
-<span class="sourceLineNo">429</span> * </p><a name="line.429"></a>
-<span class="sourceLineNo">430</span> *<a name="line.430"></a>
-<span class="sourceLineNo">431</span> * <p><a name="line.431"></a>
-<span class="sourceLineNo">432</span> * You can use either
<js>':'</js> or <js>'='</js> as the key/value
delimiter.<a name="line.432"></a>
-<span class="sourceLineNo">433</span> * Key and value is trimmed of
whitespace.<a name="line.433"></a>
-<span class="sourceLineNo">434</span> */<a name="line.434"></a>
-<span class="sourceLineNo">435</span> String[] defaultRequestHeaders()
default {};<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span> /**<a name="line.437"></a>
-<span class="sourceLineNo">438</span> * Specifies default values for query
parameters.<a name="line.438"></a>
-<span class="sourceLineNo">439</span> *<a name="line.439"></a>
-<span class="sourceLineNo">440</span> * <p><a name="line.440"></a>
-<span class="sourceLineNo">441</span> * Strings are of the format
<js>"name=value"</js>.<a name="line.441"></a>
-<span class="sourceLineNo">442</span> *<a name="line.442"></a>
-<span class="sourceLineNo">443</span> * <p><a name="line.443"></a>
-<span class="sourceLineNo">444</span> * Affects values returned by {@link
RestRequest#getQuery(String)} when the parameter is not present on the
request.<a name="line.444"></a>
+<span class="sourceLineNo">422</span> * <p><a name="line.422"></a>
+<span class="sourceLineNo">423</span> * Only one header value can be
specified per entry (i.e. it's not a delimited list of header entries).<a
name="line.423"></a>
+<span class="sourceLineNo">424</span> *<a name="line.424"></a>
+<span class="sourceLineNo">425</span> * <p><a name="line.425"></a>
+<span class="sourceLineNo">426</span> * Header values specified at the
method level override header values specified at the servlet level.<a
name="line.426"></a>
+<span class="sourceLineNo">427</span> *<a name="line.427"></a>
+<span class="sourceLineNo">428</span> * <h5
class='section'>Example:</h5><a name="line.428"></a>
+<span class="sourceLineNo">429</span> * <p class='bcode'><a
name="line.429"></a>
+<span class="sourceLineNo">430</span> * <jc>// Assume "text/json"
Accept value when Accept not specified</jc><a name="line.430"></a>
+<span class="sourceLineNo">431</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/*"</js>, defaultRequestHeaders={<js>"Accept:
text/json"</js>})<a name="line.431"></a>
+<span class="sourceLineNo">432</span> * <jk>public</jk>
String doGet() {<a name="line.432"></a>
+<span class="sourceLineNo">433</span> * ...<a name="line.433"></a>
+<span class="sourceLineNo">434</span> * }<a name="line.434"></a>
+<span class="sourceLineNo">435</span> * </p><a name="line.435"></a>
+<span class="sourceLineNo">436</span> *<a name="line.436"></a>
+<span class="sourceLineNo">437</span> * <p><a name="line.437"></a>
+<span class="sourceLineNo">438</span> * You can use either
<js>':'</js> or <js>'='</js> as the key/value
delimiter.<a name="line.438"></a>
+<span class="sourceLineNo">439</span> * Key and value is trimmed of
whitespace.<a name="line.439"></a>
+<span class="sourceLineNo">440</span> */<a name="line.440"></a>
+<span class="sourceLineNo">441</span> String[] defaultRequestHeaders()
default {};<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span> /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span> * Specifies default values for query
parameters.<a name="line.444"></a>
<span class="sourceLineNo">445</span> *<a name="line.445"></a>
-<span class="sourceLineNo">446</span> * <h5
class='section'>Example:</h5><a name="line.446"></a>
-<span class="sourceLineNo">447</span> * <p class='bcode'><a
name="line.447"></a>
-<span class="sourceLineNo">448</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/*"</js>,
defaultQuery={<js>"foo=bar"</js>})<a name="line.448"></a>
-<span class="sourceLineNo">449</span> * <jk>public</jk>
String doGet(<ja>@Query</ja>(<js>"foo"</js>) String
foo) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span> * ...<a name="line.450"></a>
-<span class="sourceLineNo">451</span> * }<a name="line.451"></a>
-<span class="sourceLineNo">452</span> * </p><a name="line.452"></a>
-<span class="sourceLineNo">453</span> *<a name="line.453"></a>
-<span class="sourceLineNo">454</span> * <p><a name="line.454"></a>
-<span class="sourceLineNo">455</span> * You can use either
<js>':'</js> or <js>'='</js> as the key/value
delimiter.<a name="line.455"></a>
-<span class="sourceLineNo">456</span> * Key and value is trimmed of
whitespace.<a name="line.456"></a>
-<span class="sourceLineNo">457</span> */<a name="line.457"></a>
-<span class="sourceLineNo">458</span> String[] defaultQuery() default {};<a
name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span> /**<a name="line.460"></a>
-<span class="sourceLineNo">461</span> * Specifies default values for
form-data parameters.<a name="line.461"></a>
-<span class="sourceLineNo">462</span> *<a name="line.462"></a>
-<span class="sourceLineNo">463</span> * <p><a name="line.463"></a>
-<span class="sourceLineNo">464</span> * Strings are of the format
<js>"name=value"</js>.<a name="line.464"></a>
-<span class="sourceLineNo">465</span> *<a name="line.465"></a>
-<span class="sourceLineNo">466</span> * <p><a name="line.466"></a>
-<span class="sourceLineNo">467</span> * Affects values returned by {@link
RestRequest#getFormData(String)} when the parameter is not present on the<a
name="line.467"></a>
-<span class="sourceLineNo">468</span> * request.<a name="line.468"></a>
-<span class="sourceLineNo">469</span> *<a name="line.469"></a>
-<span class="sourceLineNo">470</span> * <h5
class='section'>Example:</h5><a name="line.470"></a>
-<span class="sourceLineNo">471</span> * <p class='bcode'><a
name="line.471"></a>
-<span class="sourceLineNo">472</span> *
<ja>@RestMethod</ja>(name=<js>"POST"</js>,
path=<js>"/*"</js>,
defaultFormData={<js>"foo=bar"</js>})<a name="line.472"></a>
-<span class="sourceLineNo">473</span> * <jk>public</jk>
String doGet(<ja>@FormData</ja>(<js>"foo"</js>) String
foo) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span> * ...<a name="line.474"></a>
-<span class="sourceLineNo">475</span> * }<a name="line.475"></a>
-<span class="sourceLineNo">476</span> * </p><a name="line.476"></a>
-<span class="sourceLineNo">477</span> *<a name="line.477"></a>
-<span class="sourceLineNo">478</span> * <p><a name="line.478"></a>
-<span class="sourceLineNo">479</span> * You can use either
<js>':'</js> or <js>'='</js> as the key/value
delimiter.<a name="line.479"></a>
-<span class="sourceLineNo">480</span> * Key and value is trimmed of
whitespace.<a name="line.480"></a>
-<span class="sourceLineNo">481</span> */<a name="line.481"></a>
-<span class="sourceLineNo">482</span> String[] defaultFormData() default
{};<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span> /**<a name="line.484"></a>
-<span class="sourceLineNo">485</span> * Optional summary for the exposed
API.<a name="line.485"></a>
-<span class="sourceLineNo">486</span> *<a name="line.486"></a>
-<span class="sourceLineNo">487</span> * <p><a name="line.487"></a>
-<span class="sourceLineNo">488</span> * This summary is used in the
following locations:<a name="line.488"></a>
-<span class="sourceLineNo">489</span> * <ul class='spaced-list'><a
name="line.489"></a>
-<span class="sourceLineNo">490</span> * <li><a name="line.490"></a>
-<span class="sourceLineNo">491</span> * The value returned by {@link
RestRequest#getMethodSummary()}.<a name="line.491"></a>
-<span class="sourceLineNo">492</span> * <li><a name="line.492"></a>
-<span class="sourceLineNo">493</span> * The
<js>"$R{methodSummary}"</js> variable.<a name="line.493"></a>
-<span class="sourceLineNo">494</span> * <li><a name="line.494"></a>
-<span class="sourceLineNo">495</span> * The summary of the method in
the Swagger page.<a name="line.495"></a>
-<span class="sourceLineNo">496</span> * </ul><a name="line.496"></a>
-<span class="sourceLineNo">497</span> *<a name="line.497"></a>
-<span class="sourceLineNo">498</span> * <p><a name="line.498"></a>
-<span class="sourceLineNo">499</span> * The default value pulls the
description from the
<code>(className.?)[javaMethodName].summary</code> entry in the<a
name="line.499"></a>
-<span class="sourceLineNo">500</span> * servlet resource bundle. (e.g.
<js>"MyClass.myMethod.summary = foo"</js> or
<js>"myMethod.summary = foo"</js>).<a name="line.500"></a>
-<span class="sourceLineNo">501</span> *<a name="line.501"></a>
-<span class="sourceLineNo">502</span> * <p><a name="line.502"></a>
-<span class="sourceLineNo">503</span> * This field can contain variables
(e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.503"></a>
-<span class="sourceLineNo">504</span> * <br>See {@link
RestContext#getVarResolver()} for the list of supported variables.<a
name="line.504"></a>
-<span class="sourceLineNo">505</span> *<a name="line.505"></a>
-<span class="sourceLineNo">506</span> * <p><a name="line.506"></a>
-<span class="sourceLineNo">507</span> * Corresponds to the swagger field
<code>/paths/{path}/{method}/summary</code>.<a name="line.507"></a>
-<span class="sourceLineNo">508</span> */<a name="line.508"></a>
-<span class="sourceLineNo">509</span> String summary() default "";<a
name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span> /**<a name="line.511"></a>
-<span class="sourceLineNo">512</span> * Optional description for the
exposed API.<a name="line.512"></a>
-<span class="sourceLineNo">513</span> *<a name="line.513"></a>
-<span class="sourceLineNo">514</span> * <p><a name="line.514"></a>
-<span class="sourceLineNo">515</span> * This description is used in the
following locations:<a name="line.515"></a>
-<span class="sourceLineNo">516</span> * <ul class='spaced-list'><a
name="line.516"></a>
-<span class="sourceLineNo">517</span> * <li><a name="line.517"></a>
-<span class="sourceLineNo">518</span> * The value returned by {@link
RestRequest#getMethodDescription()}.<a name="line.518"></a>
-<span class="sourceLineNo">519</span> * <li><a name="line.519"></a>
-<span class="sourceLineNo">520</span> * The
<js>"$R{methodDescription}"</js> variable.<a name="line.520"></a>
-<span class="sourceLineNo">521</span> * <li><a name="line.521"></a>
-<span class="sourceLineNo">522</span> * The description of the method
in the Swagger page.<a name="line.522"></a>
-<span class="sourceLineNo">523</span> * </ul><a name="line.523"></a>
-<span class="sourceLineNo">524</span> *<a name="line.524"></a>
-<span class="sourceLineNo">525</span> * <p><a name="line.525"></a>
-<span class="sourceLineNo">526</span> * The default value pulls the
description from the
<code>(className.?)[javaMethodName].description</code> entry in<a
name="line.526"></a>
-<span class="sourceLineNo">527</span> * the servlet resource bundle. (e.g.
<js>"MyClass.myMethod.description = foo"</js> or<a
name="line.527"></a>
-<span class="sourceLineNo">528</span> * <js>"myMethod.description =
foo"</js>).<a name="line.528"></a>
-<span class="sourceLineNo">529</span> *<a name="line.529"></a>
-<span class="sourceLineNo">530</span> * <p><a name="line.530"></a>
-<span class="sourceLineNo">531</span> * This field can contain variables
(e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.531"></a>
-<span class="sourceLineNo">532</span> * <br>See {@link
RestContext#getVarResolver()} for the list of supported variables.<a
name="line.532"></a>
-<span class="sourceLineNo">533</span> *<a name="line.533"></a>
-<span class="sourceLineNo">534</span> * <p><a name="line.534"></a>
-<span class="sourceLineNo">535</span> * Corresponds to the swagger field
<code>/paths/{path}/{method}/description</code>.<a
name="line.535"></a>
-<span class="sourceLineNo">536</span> */<a name="line.536"></a>
-<span class="sourceLineNo">537</span> String description() default "";<a
name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span> /**<a name="line.539"></a>
-<span class="sourceLineNo">540</span> * Specifies whether this method can
be called based on the client version.<a name="line.540"></a>
-<span class="sourceLineNo">541</span> *<a name="line.541"></a>
-<span class="sourceLineNo">542</span> * <p><a name="line.542"></a>
-<span class="sourceLineNo">543</span> * The client version is identified
via the HTTP request header identified by<a name="line.543"></a>
-<span class="sourceLineNo">544</span> * {@link
RestResource#clientVersionHeader()} which by default is
<js>"X-Client-Version"</js>.<a name="line.544"></a>
-<span class="sourceLineNo">545</span> *<a name="line.545"></a>
-<span class="sourceLineNo">546</span> * <p><a name="line.546"></a>
-<span class="sourceLineNo">547</span> * This is a specialized kind of
{@link RestMatcher} that allows you to invoke different Java methods for the
same<a name="line.547"></a>
-<span class="sourceLineNo">548</span> * method/path based on the client
version.<a name="line.548"></a>
-<span class="sourceLineNo">549</span> *<a name="line.549"></a>
-<span class="sourceLineNo">550</span> * <p><a name="line.550"></a>
-<span class="sourceLineNo">551</span> * The format of the client version
range is similar to that of OSGi versions.<a name="line.551"></a>
-<span class="sourceLineNo">552</span> *<a name="line.552"></a>
-<span class="sourceLineNo">553</span> * <p><a name="line.553"></a>
-<span class="sourceLineNo">554</span> * In the following example, the Java
methods are mapped to the same HTTP method and URL
<js>"/foobar"</js>.<a name="line.554"></a>
-<span class="sourceLineNo">555</span> * <p class='bcode'><a
name="line.555"></a>
-<span class="sourceLineNo">556</span> * <jc>// Call this method if
X-Client-Version is at least 2.0.<a name="line.556"></a>
-<span class="sourceLineNo">557</span> * // Note that this also matches
2.0.1.</jc><a name="line.557"></a>
-<span class="sourceLineNo">558</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/foobar"</js>,
clientVersion=<js>"2.0"</js>)<a name="line.558"></a>
-<span class="sourceLineNo">559</span> * <jk>public</jk>
Object method1() {<a name="line.559"></a>
-<span class="sourceLineNo">560</span> * ...<a name="line.560"></a>
-<span class="sourceLineNo">561</span> * }<a name="line.561"></a>
-<span class="sourceLineNo">562</span> *<a name="line.562"></a>
-<span class="sourceLineNo">563</span> * <jc>// Call this method if
X-Client-Version is at least 1.1, but less than 2.0.</jc><a
name="line.563"></a>
-<span class="sourceLineNo">564</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/foobar"</js>,
clientVersion=<js>"[1.1,2.0)"</js>)<a name="line.564"></a>
-<span class="sourceLineNo">565</span> * <jk>public</jk>
Object method2() {<a name="line.565"></a>
+<span class="sourceLineNo">446</span> * <p><a name="line.446"></a>
+<span class="sourceLineNo">447</span> * Strings are of the format
<js>"name=value"</js>.<a name="line.447"></a>
+<span class="sourceLineNo">448</span> *<a name="line.448"></a>
+<span class="sourceLineNo">449</span> * <p><a name="line.449"></a>
+<span class="sourceLineNo">450</span> * Affects values returned by {@link
RestRequest#getQuery(String)} when the parameter is not present on the
request.<a name="line.450"></a>
+<span class="sourceLineNo">451</span> *<a name="line.451"></a>
+<span class="sourceLineNo">452</span> * <h5
class='section'>Example:</h5><a name="line.452"></a>
+<span class="sourceLineNo">453</span> * <p class='bcode'><a
name="line.453"></a>
+<span class="sourceLineNo">454</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/*"</js>,
defaultQuery={<js>"foo=bar"</js>})<a name="line.454"></a>
+<span class="sourceLineNo">455</span> * <jk>public</jk>
String doGet(<ja>@Query</ja>(<js>"foo"</js>) String
foo) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span> * ...<a name="line.456"></a>
+<span class="sourceLineNo">457</span> * }<a name="line.457"></a>
+<span class="sourceLineNo">458</span> * </p><a name="line.458"></a>
+<span class="sourceLineNo">459</span> *<a name="line.459"></a>
+<span class="sourceLineNo">460</span> * <p><a name="line.460"></a>
+<span class="sourceLineNo">461</span> * You can use either
<js>':'</js> or <js>'='</js> as the key/value
delimiter.<a name="line.461"></a>
+<span class="sourceLineNo">462</span> * Key and value is trimmed of
whitespace.<a name="line.462"></a>
+<span class="sourceLineNo">463</span> */<a name="line.463"></a>
+<span class="sourceLineNo">464</span> String[] defaultQuery() default {};<a
name="line.464"></a>
+<span class="sourceLineNo">465</span><a name="line.465"></a>
+<span class="sourceLineNo">466</span> /**<a name="line.466"></a>
+<span class="sourceLineNo">467</span> * Specifies default values for
form-data parameters.<a name="line.467"></a>
+<span class="sourceLineNo">468</span> *<a name="line.468"></a>
+<span class="sourceLineNo">469</span> * <p><a name="line.469"></a>
+<span class="sourceLineNo">470</span> * Strings are of the format
<js>"name=value"</js>.<a name="line.470"></a>
+<span class="sourceLineNo">471</span> *<a name="line.471"></a>
+<span class="sourceLineNo">472</span> * <p><a name="line.472"></a>
+<span class="sourceLineNo">473</span> * Affects values returned by {@link
RestRequest#getFormData(String)} when the parameter is not present on the<a
name="line.473"></a>
+<span class="sourceLineNo">474</span> * request.<a name="line.474"></a>
+<span class="sourceLineNo">475</span> *<a name="line.475"></a>
+<span class="sourceLineNo">476</span> * <h5
class='section'>Example:</h5><a name="line.476"></a>
+<span class="sourceLineNo">477</span> * <p class='bcode'><a
name="line.477"></a>
+<span class="sourceLineNo">478</span> *
<ja>@RestMethod</ja>(name=<js>"POST"</js>,
path=<js>"/*"</js>,
defaultFormData={<js>"foo=bar"</js>})<a name="line.478"></a>
+<span class="sourceLineNo">479</span> * <jk>public</jk>
String doGet(<ja>@FormData</ja>(<js>"foo"</js>) String
foo) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span> * ...<a name="line.480"></a>
+<span class="sourceLineNo">481</span> * }<a name="line.481"></a>
+<span class="sourceLineNo">482</span> * </p><a name="line.482"></a>
+<span class="sourceLineNo">483</span> *<a name="line.483"></a>
+<span class="sourceLineNo">484</span> * <p><a name="line.484"></a>
+<span class="sourceLineNo">485</span> * You can use either
<js>':'</js> or <js>'='</js> as the key/value
delimiter.<a name="line.485"></a>
+<span class="sourceLineNo">486</span> * Key and value is trimmed of
whitespace.<a name="line.486"></a>
+<span class="sourceLineNo">487</span> */<a name="line.487"></a>
+<span class="sourceLineNo">488</span> String[] defaultFormData() default
{};<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span> /**<a name="line.490"></a>
+<span class="sourceLineNo">491</span> * Optional summary for the exposed
API.<a name="line.491"></a>
+<span class="sourceLineNo">492</span> *<a name="line.492"></a>
+<span class="sourceLineNo">493</span> * <p><a name="line.493"></a>
+<span class="sourceLineNo">494</span> * This summary is used in the
following locations:<a name="line.494"></a>
+<span class="sourceLineNo">495</span> * <ul class='spaced-list'><a
name="line.495"></a>
+<span class="sourceLineNo">496</span> * <li><a name="line.496"></a>
+<span class="sourceLineNo">497</span> * The value returned by {@link
RestRequest#getMethodSummary()}.<a name="line.497"></a>
+<span class="sourceLineNo">498</span> * <li><a name="line.498"></a>
+<span class="sourceLineNo">499</span> * The
<js>"$R{methodSummary}"</js> variable.<a name="line.499"></a>
+<span class="sourceLineNo">500</span> * <li><a name="line.500"></a>
+<span class="sourceLineNo">501</span> * The summary of the method in
the Swagger page.<a name="line.501"></a>
+<span class="sourceLineNo">502</span> * </ul><a name="line.502"></a>
+<span class="sourceLineNo">503</span> *<a name="line.503"></a>
+<span class="sourceLineNo">504</span> * <p><a name="line.504"></a>
+<span class="sourceLineNo">505</span> * The default value pulls the
description from the
<code>(className.?)[javaMethodName].summary</code> entry in the<a
name="line.505"></a>
+<span class="sourceLineNo">506</span> * servlet resource bundle. (e.g.
<js>"MyClass.myMethod.summary = foo"</js> or
<js>"myMethod.summary = foo"</js>).<a name="line.506"></a>
+<span class="sourceLineNo">507</span> *<a name="line.507"></a>
+<span class="sourceLineNo">508</span> * <p><a name="line.508"></a>
+<span class="sourceLineNo">509</span> * This field can contain variables
(e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.509"></a>
+<span class="sourceLineNo">510</span> * <br>See {@link
RestContext#getVarResolver()} for the list of supported variables.<a
name="line.510"></a>
+<span class="sourceLineNo">511</span> *<a name="line.511"></a>
+<span class="sourceLineNo">512</span> * <p><a name="line.512"></a>
+<span class="sourceLineNo">513</span> * Corresponds to the swagger field
<code>/paths/{path}/{method}/summary</code>.<a name="line.513"></a>
+<span class="sourceLineNo">514</span> */<a name="line.514"></a>
+<span class="sourceLineNo">515</span> String summary() default "";<a
name="line.515"></a>
+<span class="sourceLineNo">516</span><a name="line.516"></a>
+<span class="sourceLineNo">517</span> /**<a name="line.517"></a>
+<span class="sourceLineNo">518</span> * Optional description for the
exposed API.<a name="line.518"></a>
+<span class="sourceLineNo">519</span> *<a name="line.519"></a>
+<span class="sourceLineNo">520</span> * <p><a name="line.520"></a>
+<span class="sourceLineNo">521</span> * This description is used in the
following locations:<a name="line.521"></a>
+<span class="sourceLineNo">522</span> * <ul class='spaced-list'><a
name="line.522"></a>
+<span class="sourceLineNo">523</span> * <li><a name="line.523"></a>
+<span class="sourceLineNo">524</span> * The value returned by {@link
RestRequest#getMethodDescription()}.<a name="line.524"></a>
+<span class="sourceLineNo">525</span> * <li><a name="line.525"></a>
+<span class="sourceLineNo">526</span> * The
<js>"$R{methodDescription}"</js> variable.<a name="line.526"></a>
+<span class="sourceLineNo">527</span> * <li><a name="line.527"></a>
+<span class="sourceLineNo">528</span> * The description of the method
in the Swagger page.<a name="line.528"></a>
+<span class="sourceLineNo">529</span> * </ul><a name="line.529"></a>
+<span class="sourceLineNo">530</span> *<a name="line.530"></a>
+<span class="sourceLineNo">531</span> * <p><a name="line.531"></a>
+<span class="sourceLineNo">532</span> * The default value pulls the
description from the
<code>(className.?)[javaMethodName].description</code> entry in<a
name="line.532"></a>
+<span class="sourceLineNo">533</span> * the servlet resource bundle. (e.g.
<js>"MyClass.myMethod.description = foo"</js> or<a
name="line.533"></a>
+<span class="sourceLineNo">534</span> * <js>"myMethod.description =
foo"</js>).<a name="line.534"></a>
+<span class="sourceLineNo">535</span> *<a name="line.535"></a>
+<span class="sourceLineNo">536</span> * <p><a name="line.536"></a>
+<span class="sourceLineNo">537</span> * This field can contain variables
(e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.537"></a>
+<span class="sourceLineNo">538</span> * <br>See {@link
RestContext#getVarResolver()} for the list of supported variables.<a
name="line.538"></a>
+<span class="sourceLineNo">539</span> *<a name="line.539"></a>
+<span class="sourceLineNo">540</span> * <p><a name="line.540"></a>
+<span class="sourceLineNo">541</span> * Corresponds to the swagger field
<code>/paths/{path}/{method}/description</code>.<a
name="line.541"></a>
+<span class="sourceLineNo">542</span> */<a name="line.542"></a>
+<span class="sourceLineNo">543</span> String description() default "";<a
name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span> /**<a name="line.545"></a>
+<span class="sourceLineNo">546</span> * Specifies whether this method can
be called based on the client version.<a name="line.546"></a>
+<span class="sourceLineNo">547</span> *<a name="line.547"></a>
+<span class="sourceLineNo">548</span> * <p><a name="line.548"></a>
+<span class="sourceLineNo">549</span> * The client version is identified
via the HTTP request header identified by<a name="line.549"></a>
+<span class="sourceLineNo">550</span> * {@link
RestResource#clientVersionHeader()} which by default is
<js>"X-Client-Version"</js>.<a name="line.550"></a>
+<span class="sourceLineNo">551</span> *<a name="line.551"></a>
+<span class="sourceLineNo">552</span> * <p><a name="line.552"></a>
+<span class="sourceLineNo">553</span> * This is a specialized kind of
{@link RestMatcher} that allows you to invoke different Java methods for the
same<a name="line.553"></a>
+<span class="sourceLineNo">554</span> * method/path based on the client
version.<a name="line.554"></a>
+<span class="sourceLineNo">555</span> *<a name="line.555"></a>
+<span class="sourceLineNo">556</span> * <p><a name="line.556"></a>
+<span class="sourceLineNo">557</span> * The format of the client version
range is similar to that of OSGi versions.<a name="line.557"></a>
+<span class="sourceLineNo">558</span> *<a name="line.558"></a>
+<span class="sourceLineNo">559</span> * <p><a name="line.559"></a>
+<span class="sourceLineNo">560</span> * In the following example, the Java
methods are mapped to the same HTTP method and URL
<js>"/foobar"</js>.<a name="line.560"></a>
+<span class="sourceLineNo">561</span> * <p class='bcode'><a
name="line.561"></a>
+<span class="sourceLineNo">562</span> * <jc>// Call this method if
X-Client-Version is at least 2.0.<a name="line.562"></a>
+<span class="sourceLineNo">563</span> * // Note that this also matches
2.0.1.</jc><a name="line.563"></a>
+<span class="sourceLineNo">564</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/foobar"</js>,
clientVersion=<js>"2.0"</js>)<a name="line.564"></a>
+<span class="sourceLineNo">565</span> * <jk>public</jk>
Object method1() {<a name="line.565"></a>
<span class="sourceLineNo">566</span> * ...<a name="line.566"></a>
<span class="sourceLineNo">567</span> * }<a name="line.567"></a>
<span class="sourceLineNo">568</span> *<a name="line.568"></a>
-<span class="sourceLineNo">569</span> * <jc>// Call this method if
X-Client-Version is less than 1.1.</jc><a name="line.569"></a>
-<span class="sourceLineNo">570</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/foobar"</js>,
clientVersion=<js>"[0,1.1)"</js>)<a name="line.570"></a>
-<span class="sourceLineNo">571</span> * <jk>public</jk>
Object method3() {<a name="line.571"></a>
+<span class="sourceLineNo">569</span> * <jc>// Call this method if
X-Client-Version is at least 1.1, but less than 2.0.</jc><a
name="line.569"></a>
+<span class="sourceLineNo">570</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/foobar"</js>,
clientVersion=<js>"[1.1,2.0)"</js>)<a name="line.570"></a>
+<span class="sourceLineNo">571</span> * <jk>public</jk>
Object method2() {<a name="line.571"></a>
<span class="sourceLineNo">572</span> * ...<a name="line.572"></a>
<span class="sourceLineNo">573</span> * }<a name="line.573"></a>
-<span class="sourceLineNo">574</span> * </p><a name="line.574"></a>
-<span class="sourceLineNo">575</span> *<a name="line.575"></a>
-<span class="sourceLineNo">576</span> * <p><a name="line.576"></a>
-<span class="sourceLineNo">577</span> * It's common to combine the client
version with transforms that will convert new POJOs into older POJOs for<a
name="line.577"></a>
-<span class="sourceLineNo">578</span> * backwards compatibility.<a
name="line.578"></a>
-<span class="sourceLineNo">579</span> * <p class='bcode'><a
name="line.579"></a>
-<span class="sourceLineNo">580</span> * <jc>// Call this method if
X-Client-Version is at least 2.0.</jc><a name="line.580"></a>
-<span class="sourceLineNo">581</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/foobar"</js>,
clientVersion=<js>"2.0"</js>)<a name="line.581"></a>
-<span class="sourceLineNo">582</span> * <jk>public</jk>
NewPojo newMethod() {<a name="line.582"></a>
-<span class="sourceLineNo">583</span> * ...<a name="line.583"></a>
-<span class="sourceLineNo">584</span> * }<a name="line.584"></a>
-<span class="sourceLineNo">585</span> *<a name="line.585"></a>
-<span class="sourceLineNo">586</span> * <jc>// Call this method if
X-Client-Version is at least 1.1, but less than 2.0.</jc><a
name="line.586"></a>
-<span class="sourceLineNo">587</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/foobar"</js>,
clientVersion=<js>"[1.1,2.0)"</js>,
transforms={NewToOldPojoSwap.<jk>class</jk>})<a name="line.587"></a>
-<span class="sourceLineNo">588</span> * <jk>public</jk>
NewPojo oldMethod() {<a name="line.588"></a>
-<span class="sourceLineNo">589</span> * <jk>return</jk>
newMethod()<a name="line.589"></a>
+<span class="sourceLineNo">574</span> *<a name="line.574"></a>
+<span class="sourceLineNo">575</span> * <jc>// Call this method if
X-Client-Version is less than 1.1.</jc><a name="line.575"></a>
+<span class="sourceLineNo">576</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/foobar"</js>,
clientVersion=<js>"[0,1.1)"</js>)<a name="line.576"></a>
+<span class="sourceLineNo">577</span> * <jk>public</jk>
Object method3() {<a name="line.577"></a>
+<span class="sourceLineNo">578</span> * ...<a name="line.578"></a>
+<span class="sourceLineNo">579</span> * }<a name="line.579"></a>
+<span class="sourceLineNo">580</span> * </p><a name="line.580"></a>
+<span class="sourceLineNo">581</span> *<a name="line.581"></a>
+<span class="sourceLineNo">582</span> * <p><a name="line.582"></a>
+<span class="sourceLineNo">583</span> * It's common to combine the client
version with transforms that will convert new POJOs into older POJOs for<a
name="line.583"></a>
+<span class="sourceLineNo">584</span> * backwards compatibility.<a
name="line.584"></a>
+<span class="sourceLineNo">585</span> * <p class='bcode'><a
name="line.585"></a>
+<span class="sourceLineNo">586</span> * <jc>// Call this method if
X-Client-Version is at least 2.0.</jc><a name="line.586"></a>
+<span class="sourceLineNo">587</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/foobar"</js>,
clientVersion=<js>"2.0"</js>)<a name="line.587"></a>
+<span class="sourceLineNo">588</span> * <jk>public</jk>
NewPojo newMethod() {<a name="line.588"></a>
+<span class="sourceLineNo">589</span> * ...<a name="line.589"></a>
<span class="sourceLineNo">590</span> * }<a name="line.590"></a>
<span class="sourceLineNo">591</span> *<a name="line.591"></a>
-<span class="sourceLineNo">592</span> * <p><a name="line.592"></a>
-<span class="sourceLineNo">593</span> * Note that in the previous example,
we're returning the exact same POJO, but using a transform to convert it into<a
name="line.593"></a>
-<span class="sourceLineNo">594</span> * an older form.<a
name="line.594"></a>
-<span class="sourceLineNo">595</span> * The old method could also just
return back a completely different object.<a name="line.595"></a>
-<span class="sourceLineNo">596</span> * The range can be any of the
following:<a name="line.596"></a>
-<span class="sourceLineNo">597</span> * <ul><a name="line.597"></a>
-<span class="sourceLineNo">598</span> *
<li><js>"[0,1.0)"</js> = Less than 1.0. 1.0 and 1.0.0 does
not match.<a name="line.598"></a>
-<span class="sourceLineNo">599</span> *
<li><js>"[0,1.0]"</js> = Less than or equal to 1.0. Note
that 1.0.1 will match.<a name="line.599"></a>
-<span class="sourceLineNo">600</span> *
<li><js>"1.0"</js> = At least 1.0. 1.0 and 2.0 will match.<a
name="line.600"></a>
-<span class="sourceLineNo">601</span> * </ul><a name="line.601"></a>
-<span class="sourceLineNo">602</span> */<a name="line.602"></a>
-<span class="sourceLineNo">603</span> String clientVersion() default "";<a
name="line.603"></a>
-<span class="sourceLineNo">604</span><a name="line.604"></a>
-<span class="sourceLineNo">605</span> /**<a name="line.605"></a>
-<span class="sourceLineNo">606</span> * Provides swagger-specific metadata
on this method.<a name="line.606"></a>
-<span class="sourceLineNo">607</span> */<a name="line.607"></a>
-<span class="sourceLineNo">608</span> MethodSwagger swagger() default
@MethodSwagger;<a name="line.608"></a>
-<span class="sourceLineNo">609</span><a name="line.609"></a>
-<span class="sourceLineNo">610</span> /**<a name="line.610"></a>
-<span class="sourceLineNo">611</span> * Provides HTML-doc-specific metadata
on this method.<a name="line.611"></a>
-<span class="sourceLineNo">612</span> *<a name="line.612"></a>
-<span class="sourceLineNo">613</span> * <p><a name="line.613"></a>
-<span class="sourceLineNo">614</span> * Information provided here overrides
information provided in the servlet-level annotation.<a name="line.614"></a>
-<span class="sourceLineNo">615</span> */<a name="line.615"></a>
-<span class="sourceLineNo">616</span> HtmlDoc htmldoc() default @HtmlDoc;<a
name="line.616"></a>
-<span class="sourceLineNo">617</span>}<a name="line.617"></a>
+<span class="sourceLineNo">592</span> * <jc>// Call this method if
X-Client-Version is at least 1.1, but less than 2.0.</jc><a
name="line.592"></a>
+<span class="sourceLineNo">593</span> *
<ja>@RestMethod</ja>(name=<js>"GET"</js>,
path=<js>"/foobar"</js>,
clientVersion=<js>"[1.1,2.0)"</js>,
transforms={NewToOldPojoSwap.<jk>class</jk>})<a name="line.593"></a>
+<span class="sourceLineNo">594</span> * <jk>public</jk>
NewPojo oldMethod() {<a name="line.594"></a>
+<span class="sourceLineNo">595</span> * <jk>return</jk>
newMethod()<a name="line.595"></a>
+<span class="sourceLineNo">596</span> * }<a name="line.596"></a>
+<span class="sourceLineNo">597</span> *<a name="line.597"></a>
+<span class="sourceLineNo">598</span> * <p><a name="line.598"></a>
+<span class="sourceLineNo">599</span> * Note that in the previous example,
we're returning the exact same POJO, but using a transform to convert it into<a
name="line.599"></a>
+<span class="sourceLineNo">600</span> * an older form.<a
name="line.600"></a>
+<span class="sourceLineNo">601</span> * The old method could also just
return back a completely different object.<a name="line.601"></a>
+<span class="sourceLineNo">602</span> * The range can be any of the
following:<a name="line.602"></a>
+<span class="sourceLineNo">603</span> * <ul><a name="line.603"></a>
+<span class="sourceLineNo">604</span> *
<li><js>"[0,1.0)"</js> = Less than 1.0. 1.0 and 1.0.0 does
not match.<a name="line.604"></a>
+<span class="sourceLineNo">605</span> *
<li><js>"[0,1.0]"</js> = Less than or equal to 1.0. Note
that 1.0.1 will match.<a name="line.605"></a>
+<span class="sourceLineNo">606</span> *
<li><js>"1.0"</js> = At least 1.0. 1.0 and 2.0 will match.<a
name="line.606"></a>
+<span class="sourceLineNo">607</span> * </ul><a name="line.607"></a>
+<span class="sourceLineNo">608</span> */<a name="line.608"></a>
+<span class="sourceLineNo">609</span> String clientVersion() default "";<a
name="line.609"></a>
+<span class="sourceLineNo">610</span><a name="line.610"></a>
+<span class="sourceLineNo">611</span> /**<a name="line.611"></a>
+<span class="sourceLineNo">612</span> * Provides swagger-specific metadata
on this method.<a name="line.612"></a>
+<span class="sourceLineNo">613</span> */<a name="line.613"></a>
+<span class="sourceLineNo">614</span> MethodSwagger swagger() default
@MethodSwagger;<a name="line.614"></a>
+<span class="sourceLineNo">615</span><a name="line.615"></a>
+<span class="sourceLineNo">616</span> /**<a name="line.616"></a>
+<span class="sourceLineNo">617</span> * Provides HTML-doc-specific metadata
on this method.<a name="line.617"></a>
+<span class="sourceLineNo">618</span> *<a name="line.618"></a>
+<span class="sourceLineNo">619</span> * <p><a name="line.619"></a>
+<span class="sourceLineNo">620</span> * Information provided here overrides
information provided in the servlet-level annotation.<a name="line.620"></a>
+<span class="sourceLineNo">621</span> */<a name="line.621"></a>
+<span class="sourceLineNo">622</span> HtmlDoc htmldoc() default @HtmlDoc;<a
name="line.622"></a>
+<span class="sourceLineNo">623</span>}<a name="line.623"></a>