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 9efaf86  Tests.
9efaf86 is described below

commit 9efaf865fbe1bd657bcf76558ad6f67e0313e804
Author: JamesBognar <jamesbog...@apache.org>
AuthorDate: Sun May 6 14:34:03 2018 -0400

    Tests.
---
 .../apache/juneau/rest/BasicRestInfoProvider.java  |   2 +-
 .../java/org/apache/juneau/rest/RestContext.java   |  28 +-
 .../org/apache/juneau/rest/RestMethodThrown.java   |   1 +
 .../org/apache/juneau/rest/RestParamDefaults.java  |   8 +-
 .../juneau/rest/annotation/ResponseHeaders.java    |  37 --
 .../juneau/rest/annotation/ResponseStatus.java     | 170 ++----
 .../juneau/rest/annotation/ResponseStatuses.java   |  37 --
 .../{ResponseStatus.java => Status.java}           |  21 +-
 .../juneau/rest/BasicRestInfoProviderTest.java     | 663 +++++++++++++++++++--
 9 files changed, 679 insertions(+), 288 deletions(-)

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 82b35bd..148bdca 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
@@ -64,7 +64,7 @@ public class BasicRestInfoProvider implements 
RestInfoProvider {
         * 
         * <h5 class='section'>Property:</h5>
         * <ul>
-        *      <li><b>Name:</b>  <js>"BasicRestInfoProvider.ignoreTypes.b"</js>
+        *      <li><b>Name:</b>  <js>"BasicRestInfoProvider.ignoreTypes.s"</js>
         *      <li><b>Data type:</b>  <code>String</code> (comma-delimited)
         *      <li><b>Default:</b>  <jk>null</jk>.
         *      <li><b>Session-overridable:</b>  <jk>false</jk>
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 3e8e096..e8f258d 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -4295,17 +4295,15 @@ public final class RestContext extends BeanContext {
                                                rp[i] = new 
RestParamDefaults.ResponseObject(method, (Response)a, t, ps, rp[i]);            
                            
                                        else if (a instanceof ResponseHeader)
                                                rp[i] = new 
RestParamDefaults.ResponseHeaderObject(method, (ResponseHeader)a, t, ps, 
rp[i]);                                    
-                                       else if (a instanceof ResponseStatus)
-                                               rp[i] = new 
RestParamDefaults.ResponseStatusObject(method, (ResponseStatus)a, t, ps, 
rp[i]);                    
                                        else if (a instanceof Responses) 
                                                for (Response r : 
((Responses)a).value())
                                                        rp[i] = new 
RestParamDefaults.ResponseObject(method, r, t, ps, rp[i]);                  
-                                       else if (a instanceof ResponseStatuses)
-                                               for (ResponseStatus rs : 
((ResponseStatuses)a).value())
+                                       else if (a instanceof ResponseStatus) {
+                                               for (Status rs : 
((ResponseStatus)a).value())
                                                        rp[i] = new 
RestParamDefaults.ResponseStatusObject(method, rs, t, ps, rp[i]);               
    
-                                       else if (a instanceof ResponseHeaders)
-                                               for (ResponseHeader rh : 
((ResponseHeaders)a).value())
-                                                       rp[i] = new 
RestParamDefaults.ResponseHeaderObject(method, rh, t, ps, rp[i]);               
    
+                                               if (rp[i] == null)
+                                                       rp[i] = new 
RestParamDefaults.ResponseStatusObject(method, null, t, ps, rp[i]);
+                                       }
                                }
                        }
 
@@ -4332,21 +4330,19 @@ public final class RestContext extends BeanContext {
                                        rp[i] = new 
RestParamDefaults.ResponseObject(method, (Response)a, t, ps, rp[i]);
                                else if (a instanceof ResponseHeader)
                                        rp[i] = new 
RestParamDefaults.ResponseHeaderObject(method, (ResponseHeader)a, t, ps, rp[i]);
-                               else if (a instanceof ResponseStatus)
-                                       rp[i] = new 
RestParamDefaults.ResponseStatusObject(method, (ResponseStatus)a, t, ps, rp[i]);
                                else if (a instanceof Responses) 
                                        for (Response r : 
((Responses)a).value())
                                                rp[i] = new 
RestParamDefaults.ResponseObject(method, r, t, ps, rp[i]);                  
-                               else if (a instanceof ResponseStatuses)
-                                       for (ResponseStatus rs : 
((ResponseStatuses)a).value())
-                                               rp[i] = new 
RestParamDefaults.ResponseStatusObject(method, rs, t, ps, rp[i]);               
    
-                               else if (a instanceof ResponseHeaders)
-                                       for (ResponseHeader rh : 
((ResponseHeaders)a).value())
-                                               rp[i] = new 
RestParamDefaults.ResponseHeaderObject(method, rh, t, ps, rp[i]);               
    
+                               else if (a instanceof ResponseStatus) {
+                                       for (Status rs : 
((ResponseStatus)a).value())
+                                               rp[i] = new 
RestParamDefaults.ResponseStatusObject(method, rs, t, ps, rp[i]);   
+                                       if (rp[i] == null)
+                                               rp[i] = new 
RestParamDefaults.ResponseStatusObject(method, null, t, ps, rp[i]);
+                               }
                        }
 
                        if (rp[i] == null) {
-                               if (isPreOrPost)
+                               if (! isPreOrPost)
                                        throw new RestServletException("Invalid 
parameter specified for method ''{0}'' at index position {1}", method, i);
                        } else {
                                rp[i].validate();
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodThrown.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodThrown.java
index 7fb8e73..a7c7dc1 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodThrown.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodThrown.java
@@ -38,6 +38,7 @@ public class RestMethodThrown {
                        code = ObjectUtils.firstNonZero(ri.code(), ri.value(), 
code);
                        metaData.appendSkipEmpty("description", 
joinnl(ri.description()));
                        metaData.appendSkipEmpty("example", 
joinnl(ri.example()));
+                       metaData.appendSkipEmpty("examples", 
joinnl(ri.examples()));
                        metaData.appendSkipEmpty("headers", 
joinnl(ri.headers()));
                        metaData.appendSkipEmpty("schema", joinnl(ri.schema()));
                }
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestParamDefaults.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestParamDefaults.java
index d8caed2..3d6770b 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestParamDefaults.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestParamDefaults.java
@@ -819,7 +819,7 @@ class RestParamDefaults {
 
        static final class ResponseStatusObject extends RestMethodParam {
 
-               protected ResponseStatusObject(Method method, ResponseStatus a, 
Type type, PropertyStore ps, RestMethodParam existing) {
+               protected ResponseStatusObject(Method method, Status a, Type 
type, PropertyStore ps, RestMethodParam existing) {
                        super(RESPONSE_STATUS, "", type, getMetaData(a, 
castOrNull(existing, ResponseStatusObject.class)));
                }
 
@@ -845,14 +845,14 @@ class RestParamDefaults {
                                                        
                                                return v;
                                        } catch (Exception e) {
-                                               throw new RestException(500, 
"Invalid type {0} specified with @ResponseStatus annotation.  It must have a 
public no-arg constructor.", type);
+                                               throw new RestException(500, 
"Invalid type {0} specified with @Status annotation.  It must have a public 
no-arg constructor.", type);
                                        }
                                }
                        }
-                       throw new RestException(500, "Invalid type {0} 
specified with @ResponseStatus annotation.  It must be a subclass of Value.", 
type);
+                       throw new RestException(500, "Invalid type {0} 
specified with @Status annotation.  It must be a subclass of Value.", type);
                }
                
-               private static ObjectMap getMetaData(ResponseStatus a, 
ResponseStatusObject existing) {
+               private static ObjectMap getMetaData(Status a, 
ResponseStatusObject existing) {
                        ObjectMap om = existing == null ? new ObjectMap() : 
existing.metaData;
                        if (a == null)
                                return om;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResponseHeaders.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResponseHeaders.java
deleted file mode 100644
index bc4ca8d..0000000
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResponseHeaders.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// 
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
-// * with the License.  You may obtain a copy of the License at                
                                              *
-// *                                                                           
                                              *
-// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
-// *                                                                           
                                              *
-// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-// * specific language governing permissions and limitations under the 
License.                                              *
-// 
***************************************************************************************************************************
-package org.apache.juneau.rest.annotation;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-
-import java.lang.annotation.*;
-
-/**
- * Used to associate multiple {@link ResponseHeader @ResponseHeader} 
annotations to the same parameter or class.
- * 
- * <p>
- * Since Juneau currently prereq's Java 1.7, we cannot take advantage of 
annotation duplication support in Java 8.
- * <br>This annotation overcomes that limitation.
- */
-@Documented
-@Target({PARAMETER,TYPE})
-@Retention(RUNTIME)
-@Inherited
-public @interface ResponseHeaders {
-
-       /**
-        * Specifies one or more {@link ResponseHeader @ResponseHeader} 
annotations to apply to the same parameter or class.
-        */
-       ResponseHeader[] value() default {};
-}
\ No newline at end of file
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResponseStatus.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResponseStatus.java
index b97ff9f..a06a94c 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResponseStatus.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResponseStatus.java
@@ -1,133 +1,37 @@
-// 
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
-// * with the License.  You may obtain a copy of the License at                
                                              * 
-// *                                                                           
                                              *
-// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
-// *                                                                           
                                              *
-// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-// * specific language governing permissions and limitations under the 
License.                                              *
-// 
***************************************************************************************************************************
-package org.apache.juneau.rest.annotation;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-
-import java.lang.annotation.*;
-
-import org.apache.juneau.utils.*;
-
-/**
- * Annotation that can be applied to parameters and types to denote them as an 
HTTP response status.
- * 
- * <p>
- * This can only be applied to parameters and subclasses of the {@link Value} 
class with an {@link Integer} type.
- * <br>The {@link Value} object is mean to be a place-holder for the set value.
- * 
- * <p class='bcode'>
- *     <ja>@RestMethod</ja>(name=<js>"GET"</js>, path=<js>"/user/login"</js>)
- *     <jk>public void</jk> login(String username, String password, 
- *                     <ja>@ResponseStatus</ja>(code=401, 
description=<js>"Invalid user/pw"</js>) Value&lt;Integer&gt; status) {
- *             <jk>if</jk> (! isValid(username, password))
- *                     status.set(401);
- *     }
- * </p>
- * 
- * <p>
- * The {@link Responses @Responses} annotation can be used to represent 
multiple possible response types.
- * 
- * <p class='bcode'>
- *     <ja>@RestMethod</ja>(name=<js>"GET"</js>, path=<js>"/user/login"</js>)
- *     <jk>public void</jk> login(String username, String password, 
- *                     <ja>@ResponseStatuses</ja>{
- *                             <ja>@ResponseStatus</ja>(200)
- *                             <ja>@ResponseStatus</ja>(code=401, 
description=<js>"Invalid user/pw"</js>)
- *                     }
- *                     Value&lt;Integer&gt; status) {
- * 
- *             <jk>if</jk> (! isValid(username, password))
- *                     status.set(401);
- *             <jk>else</jk>
- *                     status.set(200);
- *     }
- * </p>
- * 
- * <p>
- * The other option is to apply this annotation to a subclass of {@link Value} 
which often leads to a cleaner
- * REST method:
- * 
- * <p class='bcode'>
- *     <ja>@ResponseStatuses</ja>{
- *             <ja>@ResponseStatus</ja>(200)
- *             <ja>@ResponseStatus</ja>(code=401, description=<js>"Invalid 
user/pw"</js>)
- *     }
- *     <jk>public class</jk> LoginStatus <jk>extends</jk> Value&lt;Integer&gt; 
{}
- *     
- *     <ja>@RestMethod</ja>(name=<js>"GET"</js>, path=<js>"/user/login"</js>)
- *     <jk>public void</jk> login(String username, String password, 
LoginStatus status) { 
- *             <jk>if</jk> (! isValid(username, password))
- *                     status.set(401);
- *             <jk>else</jk>
- *                     status.set(200);
- *     }
- * </p>
- * 
- * <p>
- * The attributes on this annotation are used to populate the generated 
Swagger for the method.
- * <br>In this case, the Swagger is populated with the following:
- * 
- * <p class='bcode'>
- *     <js>'/user/login'</js>: {
- *             get: {
- *                     responses: {
- *                             200: {
- *                                     description: <js>'OK'</js>
- *                             },
- *                             401: {
- *                                     description: <js>'Invalid user/pw'</js>
- *                             }
- *                     }
- *             }
- *     }
- * </p>
- */
-@Documented
-@Target({PARAMETER,TYPE})
-@Retention(RUNTIME)
-@Inherited
-public @interface ResponseStatus {
-       
-       /**
-        * The HTTP status of the response.
-        */
-       int code() default 0;
-       
-       /**
-        * A synonym to {@link #code()}.
-        * 
-        * <p>
-        * Useful if you only want to specify a code only.
-        * 
-        * <p class='bcode'>
-        *      <ja>@ResponseStatus</ja>(200)
-        * </p>
-        */
-       int value() default 0;
-
-       /**
-        * Defines the swagger value 
<code>/paths/{path}/{method}/responses/{status-code}/description</code>.
-        * 
-        * <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>
-        *              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 {};
-}
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                
                                              *
+// *                                                                           
                                              *
+// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
+// *                                                                           
                                              *
+// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the 
License.                                              *
+// 
***************************************************************************************************************************
+package org.apache.juneau.rest.annotation;
+
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.*;
+
+import java.lang.annotation.*;
+
+/**
+ * Used to associate multiple {@link Status @Status} annotations to the same 
parameter or class.
+ * 
+ * <p>
+ * Since Juneau currently prereq's Java 1.7, we cannot take advantage of 
annotation duplication support in Java 8.
+ * <br>This annotation overcomes that limitation.
+ */
+@Documented
+@Target({PARAMETER,TYPE})
+@Retention(RUNTIME)
+@Inherited
+public @interface ResponseStatus {
+
+       /**
+        * Specifies one or more {@link Status @Status} annotations to apply to 
the same parameter or class.
+        */
+       Status[] value() default {};
+}
\ No newline at end of file
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResponseStatuses.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResponseStatuses.java
deleted file mode 100644
index 1111aeb..0000000
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResponseStatuses.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// 
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
-// * with the License.  You may obtain a copy of the License at                
                                              *
-// *                                                                           
                                              *
-// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
-// *                                                                           
                                              *
-// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-// * specific language governing permissions and limitations under the 
License.                                              *
-// 
***************************************************************************************************************************
-package org.apache.juneau.rest.annotation;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-
-import java.lang.annotation.*;
-
-/**
- * Used to associate multiple {@link ResponseStatus @ResponseStatus} 
annotations to the same parameter or class.
- * 
- * <p>
- * Since Juneau currently prereq's Java 1.7, we cannot take advantage of 
annotation duplication support in Java 8.
- * <br>This annotation overcomes that limitation.
- */
-@Documented
-@Target({PARAMETER,TYPE})
-@Retention(RUNTIME)
-@Inherited
-public @interface ResponseStatuses {
-
-       /**
-        * Specifies one or more {@link ResponseStatus @ResponseStatus} 
annotations to apply to the same parameter or class.
-        */
-       ResponseStatus[] value() default {};
-}
\ No newline at end of file
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResponseStatus.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Status.java
similarity index 89%
copy from 
juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResponseStatus.java
copy to 
juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Status.java
index b97ff9f..e8aedd0 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/ResponseStatus.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Status.java
@@ -12,7 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.annotation;
 
-import static java.lang.annotation.ElementType.*;
 import static java.lang.annotation.RetentionPolicy.*;
 
 import java.lang.annotation.*;
@@ -29,7 +28,7 @@ import org.apache.juneau.utils.*;
  * <p class='bcode'>
  *     <ja>@RestMethod</ja>(name=<js>"GET"</js>, path=<js>"/user/login"</js>)
  *     <jk>public void</jk> login(String username, String password, 
- *                     <ja>@ResponseStatus</ja>(code=401, 
description=<js>"Invalid user/pw"</js>) Value&lt;Integer&gt; status) {
+ *                     <ja>@Status</ja>(code=401, description=<js>"Invalid 
user/pw"</js>) Value&lt;Integer&gt; status) {
  *             <jk>if</jk> (! isValid(username, password))
  *                     status.set(401);
  *     }
@@ -41,9 +40,9 @@ import org.apache.juneau.utils.*;
  * <p class='bcode'>
  *     <ja>@RestMethod</ja>(name=<js>"GET"</js>, path=<js>"/user/login"</js>)
  *     <jk>public void</jk> login(String username, String password, 
- *                     <ja>@ResponseStatuses</ja>{
- *                             <ja>@ResponseStatus</ja>(200)
- *                             <ja>@ResponseStatus</ja>(code=401, 
description=<js>"Invalid user/pw"</js>)
+ *                     <ja>@ResponseStatus</ja>{
+ *                             <ja>@Status</ja>(200)
+ *                             <ja>@Status</ja>(code=401, 
description=<js>"Invalid user/pw"</js>)
  *                     }
  *                     Value&lt;Integer&gt; status) {
  * 
@@ -59,9 +58,9 @@ import org.apache.juneau.utils.*;
  * REST method:
  * 
  * <p class='bcode'>
- *     <ja>@ResponseStatuses</ja>{
- *             <ja>@ResponseStatus</ja>(200)
- *             <ja>@ResponseStatus</ja>(code=401, description=<js>"Invalid 
user/pw"</js>)
+ *     <ja>@ResponseStatus</ja>{
+ *             <ja>@Status</ja>(200)
+ *             <ja>@Status</ja>(code=401, description=<js>"Invalid 
user/pw"</js>)
  *     }
  *     <jk>public class</jk> LoginStatus <jk>extends</jk> Value&lt;Integer&gt; 
{}
  *     
@@ -94,10 +93,10 @@ import org.apache.juneau.utils.*;
  * </p>
  */
 @Documented
-@Target({PARAMETER,TYPE})
+@Target({})
 @Retention(RUNTIME)
 @Inherited
-public @interface ResponseStatus {
+public @interface Status {
        
        /**
         * The HTTP status of the response.
@@ -111,7 +110,7 @@ public @interface ResponseStatus {
         * Useful if you only want to specify a code only.
         * 
         * <p class='bcode'>
-        *      <ja>@ResponseStatus</ja>(200)
+        *      <ja>@Status</ja>(200)
         * </p>
         */
        int value() default 0;
diff --git 
a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/BasicRestInfoProviderTest.java
 
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/BasicRestInfoProviderTest.java
index 4583cd2..de66bc6 100644
--- 
a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/BasicRestInfoProviderTest.java
+++ 
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/BasicRestInfoProviderTest.java
@@ -5360,15 +5360,15 @@ public class BasicRestInfoProviderTest {
                assertEquals("P", getSwagger(new 
SB()).getPaths().get("/name/{P}").get("get").getParameter("path", 
"P").getName());
        }
        @Test
-       public void sb02_Path_onParameter_() throws Exception {
+       public void sb02_Path_onParameter_value() throws Exception {
                assertEquals("P", getSwagger(new 
SB()).getPaths().get("/value/{P}").get("get").getParameter("path", 
"P").getName());
        }
        @Test
-       public void sb03_Path_onParameter_() throws Exception {
+       public void sb03_Path_onParameter_description1() throws Exception {
                assertEquals("a", getSwagger(new 
SB()).getPaths().get("/description1/{P}").get("get").getParameter("path", 
"P").getDescription());
        }
        @Test
-       public void sb04_Path_onParameter_() throws Exception {
+       public void sb04_Path_onParameter_description2() throws Exception {
                assertEquals("a\nb", getSwagger(new 
SB()).getPaths().get("/description2/{P}").get("get").getParameter("path", 
"P").getDescription());
        }
        @Test
@@ -5384,7 +5384,7 @@ public class BasicRestInfoProviderTest {
                assertEquals("a", getSwagger(new 
SB()).getPaths().get("/pattern/{P}").get("get").getParameter("path", 
"P").getPattern());
        }
        @Test
-       public void sb08_Path_onParameter_() throws Exception {
+       public void sb08_Path_onParameter_maximum() throws Exception {
                assertObjectEquals("1", getSwagger(new 
SB()).getPaths().get("/maximum/{P}").get("get").getParameter("path", 
"P").getMaximum());
        }
        @Test
@@ -5392,11 +5392,11 @@ public class BasicRestInfoProviderTest {
                assertObjectEquals("1", getSwagger(new 
SB()).getPaths().get("/minimum/{P}").get("get").getParameter("path", 
"P").getMinimum());
        }
        @Test
-       public void sb10_Path_onParameter_() throws Exception {
+       public void sb10_Path_onParameter_multipleOf() throws Exception {
                assertObjectEquals("1", getSwagger(new 
SB()).getPaths().get("/multipleOf/{P}").get("get").getParameter("path", 
"P").getMultipleOf());
        }
        @Test
-       public void sb11_Path_onParameter_() throws Exception {
+       public void sb11_Path_onParameter_maxLength() throws Exception {
                assertObjectEquals("1", getSwagger(new 
SB()).getPaths().get("/maxLength/{P}").get("get").getParameter("path", 
"P").getMaxLength());
        }
        @Test
@@ -6023,82 +6023,650 @@ public class BasicRestInfoProviderTest {
 
        @RestResource()
        public static class UA {
-//     int code() default 0;
-//     int value() default 0;
-//     String[] description() default {};
-//     String[] schema() default {};
-//     String[] headers() default {};
-//     String[] example() default {};
-//     String[] examples() default {};
+
+               @Response(code=100)
+               public static class UA01 {}
+               
+               @RestMethod(name=GET,path="/code")
+               public void ua01(UA01 r) {}
+
+               @Response(100)
+               public static class UA02 {}
+               
+               @RestMethod(name=GET,path="/value")
+               public void ua02(UA02 r) {}
+
+               @Response(description="a")
+               public static class UA03a {}
+               
+               @RestMethod(name=GET,path="/description1")
+               public void ua03a(UA03a r) {}
+
+               @Response(description={"a","b"})
+               public static class UA03b {}
+               
+               @RestMethod(name=GET,path="/description2")
+               public void ua03b(UA03b r) {}
+
+               @Response(schema=" {type:'a'} ")
+               public static class UA04a {}
+               
+               @RestMethod(name=GET,path="/schema1")
+               public void ua04a(UA04a r) {}
+
+               @Response(schema={" type:'b' "})
+               public static class UA04b {}
+               
+               @RestMethod(name=GET,path="/schema2")
+               public void ua04b(UA04b r) {}
+
+               @Response(headers=" {foo:{type:'a'}} ")
+               public static class UA05a {}
+               
+               @RestMethod(name=GET,path="/headers1")
+               public void ua05a(UA05a r) {}
+
+               @Response(headers={" foo:{type:'b'} "})
+               public static class UA05b {}
+               
+               @RestMethod(name=GET,path="/headers2")
+               public void ua05b(UA05b r) {}
+
+               @Response(example="'a'")
+               public static class UA06a {}
+               
+               @RestMethod(name=GET,path="/example1")
+               public void ua06a(UA06a r) {}
+
+               @Response(example="{f1:'a'}")
+               public static class UA06b {}
+               
+               @RestMethod(name=GET,path="/example2")
+               public void ua06b(UA06b r) {}
+
+               @Response(examples=" {foo:'a'} ")
+               public static class UA07a {}
+               
+               @RestMethod(name=GET,path="/examples1")
+               public void ua07a(UA07a r) {}
+
+               @Response(examples={" foo:'b' "})
+               public static class UA07b {}
+               
+               @RestMethod(name=GET,path="/examples2")
+               public void ua07b(UA07b r) {}
+       }
+       
+       @Test
+       public void ua01_Response_onPojo_code() throws Exception {
+               assertEquals("Continue", getSwagger(new 
UA()).getPaths().get("/code").get("get").getResponse(100).getDescription());
+       }
+       @Test
+       public void ua02_Response_onPojo_() throws Exception {
+               assertEquals("Continue", getSwagger(new 
UA()).getPaths().get("/value").get("get").getResponse(100).getDescription());
+       }
+       @Test
+       public void ua03a_Response_onPojo_description1() throws Exception {
+               assertEquals("a", getSwagger(new 
UA()).getPaths().get("/description1").get("get").getResponse(200).getDescription());
+       }
+       @Test
+       public void ua03b_Response_onPojo_description2() throws Exception {
+               assertEquals("a\nb", getSwagger(new 
UA()).getPaths().get("/description2").get("get").getResponse(200).getDescription());
+       }
+       @Test
+       public void ua04a_Response_onPojo_schema1() throws Exception {
+               assertObjectEquals("{type:'a'}", getSwagger(new 
UA()).getPaths().get("/schema1").get("get").getResponse(200).getSchema());
+       }
+       @Test
+       public void ua04b_Response_onPojo_schema2() throws Exception {
+               assertObjectEquals("{type:'b'}", getSwagger(new 
UA()).getPaths().get("/schema2").get("get").getResponse(200).getSchema());
+       }
+       @Test
+       public void ua05a_Response_onPojo_headers1() throws Exception {
+               assertObjectEquals("{foo:{type:'a'}}", getSwagger(new 
UA()).getPaths().get("/headers1").get("get").getResponse(200).getHeaders());
+       }
+       @Test
+       public void ua05b_Response_onPojo_headers2() throws Exception {
+               assertObjectEquals("{foo:{type:'b'}}", getSwagger(new 
UA()).getPaths().get("/headers2").get("get").getResponse(200).getHeaders());
+       }
+       @Test
+       public void ua06a_Response_onPojo_example1() throws Exception {
+               assertObjectEquals("'a'", getSwagger(new 
UA()).getPaths().get("/example1").get("get").getResponse(200).getExample());
+       }
+       @Test
+       public void ua06b_Response_onPojo_example2() throws Exception {
+               assertObjectEquals("{f1:'a'}", getSwagger(new 
UA()).getPaths().get("/example2").get("get").getResponse(200).getExample());
+       }
+       @Test
+       public void ua07a_Response_onPojo_examples1() throws Exception {
+               assertObjectEquals("{foo:'a'}", getSwagger(new 
UA()).getPaths().get("/examples1").get("get").getResponse(200).getExamples());
+       }
+       @Test
+       public void ua07b_Response_onPojo_examples2() throws Exception {
+               assertObjectEquals("{foo:'b'}", getSwagger(new 
UA()).getPaths().get("/examples2").get("get").getResponse(200).getExamples());
        }
        
        
//-----------------------------------------------------------------------------------------------------------------
-       // @Response on parameter of type Value
+       // @Response on parameter
        
//-----------------------------------------------------------------------------------------------------------------
 
        @RestResource()
        public static class UB {
-//     int code() default 0;
-//     int value() default 0;
-//     String[] description() default {};
-//     String[] schema() default {};
-//     String[] headers() default {};
-//     String[] example() default {};
-//     String[] examples() default {};
+
+               public static class UB01 {}
+
+               @RestMethod(name=GET,path="/code")
+               public void ub01(@Response(code=100) UB01 r) {}
+
+               public static class UB02 {}
+
+               @RestMethod(name=GET,path="/value")
+               public void ub02(@Response(100) UB02 r) {}
+
+               public static class UB03 {}
+
+               @RestMethod(name=GET,path="/description1")
+               public void ub03(@Response(description="a") UB03 r) {}
+
+               public static class UB04 {}
+
+               @RestMethod(name=GET,path="/description2")
+               public void ub04(@Response(description={"a","b"}) UB04 r) {}
+
+               public static class UB05 {}
+
+               @RestMethod(name=GET,path="/schema1")
+               public void ub05(@Response(schema=" {type:'a'} ") UB05 r) {}
+
+               public static class UB06 {}
+
+               @RestMethod(name=GET,path="/schema2")
+               public void ub06(@Response(schema={" type:'b' "}) UB06 r) {}
+
+               public static class UB07 {}
+
+               @RestMethod(name=GET,path="/headers1")
+               public void ub07(@Response(headers=" {foo:{type:'a'}} ") UB07 
r) {}
+
+               public static class UB08 {}
+
+               @RestMethod(name=GET,path="/headers2")
+               public void ub08(@Response(headers={" foo:{type:'b'} "}) UB08 
r) {}
+
+               public static class UB09 {}
+
+               @RestMethod(name=GET,path="/example1")
+               public void ub09(@Response(example=" 'a' ") UB09 r) {}
+
+               public static class UB10 {}
+
+               @RestMethod(name=GET,path="/example2")
+               public void ub10(@Response(example=" {f1:'b'} ") UB10 r) {}
+
+               public static class UB11 {}
+
+               @RestMethod(name=GET,path="/examples1")
+               public void ub11(@Response(examples=" {foo:'a'} ") UB11 r) {}
+
+               public static class UB12 {}
+
+               @RestMethod(name=GET,path="/examples2")
+               public void ub12(@Response(examples={" foo:'b' "}) UB12 r) {}
        }
        
+       @Test
+       public void ub01_Response_onParameter_code() throws Exception {
+               assertEquals("Continue", getSwagger(new 
UB()).getPaths().get("/code").get("get").getResponse(100).getDescription());
+       }
+       @Test
+       public void ub02_Response_onParameter_value() throws Exception {
+               assertEquals("Continue", getSwagger(new 
UB()).getPaths().get("/value").get("get").getResponse(100).getDescription());
+       }
+       @Test
+       public void ub03_Response_onParameter_description1() throws Exception {
+               assertEquals("a", getSwagger(new 
UB()).getPaths().get("/description1").get("get").getResponse(200).getDescription());
+       }
+       @Test
+       public void ub04_Response_onParameter_description2() throws Exception {
+               assertEquals("a\nb", getSwagger(new 
UB()).getPaths().get("/description2").get("get").getResponse(200).getDescription());
+       }
+       @Test
+       public void ub05_Response_onParameter_schema1() throws Exception {
+               assertObjectEquals("{type:'a'}", getSwagger(new 
UB()).getPaths().get("/schema1").get("get").getResponse(200).getSchema());
+       }
+       @Test
+       public void ub06_Response_onParameter_schema2() throws Exception {
+               assertObjectEquals("{type:'b'}", getSwagger(new 
UB()).getPaths().get("/schema2").get("get").getResponse(200).getSchema());
+       }
+       @Test
+       public void ub07_Response_onParameter_headers1() throws Exception {
+               assertObjectEquals("{foo:{type:'a'}}", getSwagger(new 
UB()).getPaths().get("/headers1").get("get").getResponse(200).getHeaders());
+       }
+       @Test
+       public void ub08_Response_onParameter_headers2() throws Exception {
+               assertObjectEquals("{foo:{type:'b'}}", getSwagger(new 
UB()).getPaths().get("/headers2").get("get").getResponse(200).getHeaders());
+       }
+       @Test
+       public void ub09_Response_onParameter_example1() throws Exception {
+               assertObjectEquals("'a'", getSwagger(new 
UB()).getPaths().get("/example1").get("get").getResponse(200).getExample());
+       }
+       @Test
+       public void ub10_Response_onParameter_example2() throws Exception {
+               assertObjectEquals("{f1:'b'}", getSwagger(new 
UB()).getPaths().get("/example2").get("get").getResponse(200).getExample());
+       }
+       @Test
+       public void ub11_Response_onParameter_examples1() throws Exception {
+               assertObjectEquals("{foo:'a'}", getSwagger(new 
UB()).getPaths().get("/examples1").get("get").getResponse(200).getExamples());
+       }
+       @Test
+       public void ub12_Response_onParameter_examples2() throws Exception {
+               assertObjectEquals("{foo:'b'}", getSwagger(new 
UB()).getPaths().get("/examples2").get("get").getResponse(200).getExamples());
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
-       // @Response on parameter of type other than Value
+       // @Response on throwable
        
//-----------------------------------------------------------------------------------------------------------------
 
        @RestResource()
-       public static class UC {
-//     int code() default 0;
-//     int value() default 0;
-//     String[] description() default {};
-//     String[] schema() default {};
-//     String[] headers() default {};
-//     String[] example() default {};
-//     String[] examples() default {};
+       @SuppressWarnings({"unused","serial"})
+       public static class UC {                
+               
+               @Response(code=100)
+               public static class UC01 extends Throwable {}
+
+               @RestMethod(name=GET,path="/code")
+               public void uc01() throws UC01 {}
+
+               @Response(100)
+               public static class UC02 extends Throwable {}
+
+               @RestMethod(name=GET,path="/value")
+               public void uc02() throws UC02 {}
+
+               @Response(description="a")
+               public static class UC03 extends Throwable {}
+
+               @RestMethod(name=GET,path="/description1")
+               public void uc03() throws UC03 {}
+
+               @Response(description= {"a","b"})
+               public static class UC04 extends Throwable {}
+
+               @RestMethod(name=GET,path="/description2")
+               public void uc04() throws UC04 {}
+
+               @Response(schema=" {type:'a'} ")
+               public static class UC05 extends Throwable {}
+
+               @RestMethod(name=GET,path="/schema1")
+               public void uc05() throws UC05 {}
+
+               @Response(schema={" type:'b' "})
+               public static class UC06 extends Throwable {}
+
+               @RestMethod(name=GET,path="/schema2")
+               public void uc06() throws UC06 {}
+
+               @Response(headers=" {foo:{type:'a'}} ")
+               public static class UC07 extends Throwable {}
+
+               @RestMethod(name=GET,path="/headers1")
+               public void uc07() throws UC07 {}
+
+               @Response(headers={" foo:{type:'b'} "})
+               public static class UC08 extends Throwable {}
+
+               @RestMethod(name=GET,path="/headers2")
+               public void uc08() throws UC08 {}
+
+               @Response(example=" 'a' ")
+               public static class UC09 extends Throwable {}
+
+               @RestMethod(name=GET,path="/example1")
+               public void uc09() throws UC09 {}
+
+               @Response(example={" {f1:'b'} "})
+               public static class UC10 extends Throwable {}
+
+               @RestMethod(name=GET,path="/example2")
+               public void uc10() throws UC10 {}
+
+               @Response(examples=" {foo:'a'} ")
+               public static class UC11 extends Throwable {}
+
+               @RestMethod(name=GET,path="/examples1")
+               public void uc11() throws UC11 {}
+
+               @Response(examples={" foo:'b' "})
+               public static class UC12 extends Throwable {}
+
+               @RestMethod(name=GET,path="/examples2")
+               public void uc12() throws UC12 {}
        }
        
+       @Test
+       public void uc01_Response_onThrowable_code() throws Exception {
+               assertEquals("Continue", getSwagger(new 
UC()).getPaths().get("/code").get("get").getResponse(100).getDescription());
+       }
+       @Test
+       public void uc02_Response_onThrowable_value() throws Exception {
+               assertEquals("Continue", getSwagger(new 
UC()).getPaths().get("/value").get("get").getResponse(100).getDescription());
+       }
+       @Test
+       public void uc03_Response_onThrowable_description1() throws Exception {
+               assertEquals("a", getSwagger(new 
UC()).getPaths().get("/description1").get("get").getResponse(500).getDescription());
+       }
+       @Test
+       public void uc04_Response_onThrowable_description2() throws Exception {
+               assertEquals("a\nb", getSwagger(new 
UC()).getPaths().get("/description2").get("get").getResponse(500).getDescription());
+       }
+       @Test
+       public void uc05_Response_onThrowable_schema1() throws Exception {
+               assertObjectEquals("{type:'a'}", getSwagger(new 
UC()).getPaths().get("/schema1").get("get").getResponse(500).getSchema());
+       }
+       @Test
+       public void uc06_Response_onThrowable_schema2() throws Exception {
+               assertObjectEquals("{type:'b'}", getSwagger(new 
UC()).getPaths().get("/schema2").get("get").getResponse(500).getSchema());
+       }
+       @Test
+       public void uc07_Response_onThrowable_headers1() throws Exception {
+               assertObjectEquals("{foo:{type:'a'}}", getSwagger(new 
UC()).getPaths().get("/headers1").get("get").getResponse(500).getHeaders());
+       }
+       @Test
+       public void uc08_Response_onThrowable_headers2() throws Exception {
+               assertObjectEquals("{foo:{type:'b'}}", getSwagger(new 
UC()).getPaths().get("/headers2").get("get").getResponse(500).getHeaders());
+       }
+       @Test
+       public void uc09_Response_onThrowable_example1() throws Exception {
+               assertObjectEquals("'a'", getSwagger(new 
UC()).getPaths().get("/example1").get("get").getResponse(500).getExample());
+       }
+       @Test
+       public void uc10_Response_onThrowable_example2() throws Exception {
+               assertObjectEquals("{f1:'b'}", getSwagger(new 
UC()).getPaths().get("/example2").get("get").getResponse(500).getExample());
+       }
+       @Test
+       public void uc11_Response_onThrowable_examples1() throws Exception {
+               assertObjectEquals("{foo:'a'}", getSwagger(new 
UC()).getPaths().get("/examples1").get("get").getResponse(500).getExamples());
+       }
+       @Test
+       public void uc12_Response_onThrowable_examples2() throws Exception {
+               assertObjectEquals("{foo:'b'}", getSwagger(new 
UC()).getPaths().get("/examples2").get("get").getResponse(500).getExamples());
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
-       // @Response on throwable
+       // @Responses on POJO
        
//-----------------------------------------------------------------------------------------------------------------
-
+       
        @RestResource()
        public static class UD {
-//     int code() default 0;
-//     int value() default 0;
-//     String[] description() default {};
-//     String[] schema() default {};
-//     String[] headers() default {};
-//     String[] example() default {};
-//     String[] examples() default {};
+
+               @Responses({
+                       @Response(code=100),
+                       @Response(code=101)
+               })
+               public static class UD01 {}
+               
+               @RestMethod(name=GET,path="/code")
+               public void ud01(UD01 r) {}
+
+               @Responses({
+                       @Response(100),
+                       @Response(101)
+               })
+               public static class UD02 {}
+               
+               @RestMethod(name=GET,path="/value")
+               public void ud02(UD02 r) {}
+
+               @Responses({
+                       @Response(code=100, description="a"),
+                       @Response(code=101, description={"a","b"})
+               })
+               public static class UD03 {}
+               
+               @RestMethod(name=GET,path="/description")
+               public void ud03(UD03 r) {}
+
+               @Responses({
+                       @Response(code=100, schema=" {type:'a'} "),
+                       @Response(code=101, schema={" type:'b' "})
+               })
+               public static class UD04 {}
+               
+               @RestMethod(name=GET,path="/schema")
+               public void ud04(UD04 r) {}
+
+               @Responses({
+                       @Response(code=100, headers=" {foo:{type:'a'}} "),
+                       @Response(code=101, headers={" foo:{type:'b'} "})
+               })
+               public static class UD05 {}
+               
+               @RestMethod(name=GET,path="/headers")
+               public void ud05(UD05 r) {}
+
+               @Responses({
+                       @Response(code=100, example="'a'"),
+                       @Response(code=101, example="{f1:'a'}")
+               })
+               public static class UD06 {}
+               
+               @RestMethod(name=GET,path="/example")
+               public void ud06(UD06 r) {}
+
+               @Responses({
+                       @Response(code=100, examples=" {foo:'a'} "),
+                       @Response(code=101, examples={" foo:'b' "})
+               })
+               public static class UD07 {}
+               
+               @RestMethod(name=GET,path="/examples")
+               public void ud07(UD07 r) {}
+       }
+       
+       @Test
+       public void ud01_Responses_onPojo_code() throws Exception {
+               assertEquals("Continue", getSwagger(new 
UD()).getPaths().get("/code").get("get").getResponse(100).getDescription());
+               assertEquals("Switching Protocols", getSwagger(new 
UD()).getPaths().get("/code").get("get").getResponse(101).getDescription());
+       }
+       @Test
+       public void ud02_Responses_onPojo_value() throws Exception {
+               assertEquals("Continue", getSwagger(new 
UD()).getPaths().get("/value").get("get").getResponse(100).getDescription());
+               assertEquals("Switching Protocols", getSwagger(new 
UD()).getPaths().get("/value").get("get").getResponse(101).getDescription());
+       }
+       @Test
+       public void ud03_Responses_onPojo_description() throws Exception {
+               assertEquals("a", getSwagger(new 
UD()).getPaths().get("/description").get("get").getResponse(100).getDescription());
+               assertEquals("a\nb", getSwagger(new 
UD()).getPaths().get("/description").get("get").getResponse(101).getDescription());
+       }
+       @Test
+       public void ud04_Responses_onPojo_schema() throws Exception {
+               assertObjectEquals("{type:'a'}", getSwagger(new 
UD()).getPaths().get("/schema").get("get").getResponse(100).getSchema());
+               assertObjectEquals("{type:'b'}", getSwagger(new 
UD()).getPaths().get("/schema").get("get").getResponse(101).getSchema());
+       }
+       @Test
+       public void ud05_Responses_onPojo_headers() throws Exception {
+               assertObjectEquals("{foo:{type:'a'}}", getSwagger(new 
UD()).getPaths().get("/headers").get("get").getResponse(100).getHeaders());
+               assertObjectEquals("{foo:{type:'b'}}", getSwagger(new 
UD()).getPaths().get("/headers").get("get").getResponse(101).getHeaders());
+       }
+       @Test
+       public void ud06_Responses_onPojo_example() throws Exception {
+               assertObjectEquals("'a'", getSwagger(new 
UD()).getPaths().get("/example").get("get").getResponse(100).getExample());
+               assertObjectEquals("{f1:'a'}", getSwagger(new 
UD()).getPaths().get("/example").get("get").getResponse(101).getExample());
+       }
+       @Test
+       public void ud07_Responses_onPojo_examples() throws Exception {
+               assertObjectEquals("{foo:'a'}", getSwagger(new 
UD()).getPaths().get("/examples").get("get").getResponse(100).getExamples());
+               assertObjectEquals("{foo:'b'}", getSwagger(new 
UD()).getPaths().get("/examples").get("get").getResponse(101).getExamples());
        }
        
        
//-----------------------------------------------------------------------------------------------------------------
-       // @Responses on POJO
+       // @Responses on parameter
        
//-----------------------------------------------------------------------------------------------------------------
-       
+
        @RestResource()
        public static class UE {
-               
+
+               public static class UE01 {}
+
+               @RestMethod(name=GET,path="/code")
+               public void ue01(
+                       @Responses({
+                               @Response(code=100),
+                               @Response(code=101)
+                       }) 
+                       UE01 r) {}
+
+               public static class UE02 {}
+
+               @RestMethod(name=GET,path="/value")
+               public void ue02(
+                       @Responses({
+                               @Response(100),
+                               @Response(101)
+                       })
+                       UE02 r) {}
+
+               public static class UE03 {}
+
+               @RestMethod(name=GET,path="/description")
+               public void ue03(
+                       @Responses({
+                               @Response(code=100, description="a"),
+                               @Response(code=101, description={"a","b"})
+                       })
+                       UE03 r) {}
+
+               public static class UE04 {}
+
+               @RestMethod(name=GET,path="/schema")
+               public void ue04(
+                       @Responses({
+                               @Response(code=100, schema=" {type:'a'} "),
+                               @Response(code=101, schema={" type:'b' "})
+                       })
+                       UE04 r) {}
+
+               public static class UE05 {}
+
+               @RestMethod(name=GET,path="/headers")
+               public void ue05(
+                       @Responses({
+                               @Response(code=100, headers=" {foo:{type:'a'}} 
"),
+                               @Response(code=101, headers={" foo:{type:'b'} 
"})
+                       })
+                       UE05 r) {}
+
+               public static class UE06 {}
+
+               @RestMethod(name=GET,path="/example")
+               public void ue06(
+                       @Responses({
+                               @Response(code=100, example=" 'a' "),
+                               @Response(code=101, example=" {f1:'b'} ")
+                       })
+                       UE06 r) {}
+
+               public static class UE07 {}
+
+               @RestMethod(name=GET,path="/examples")
+               public void ue07(
+                       @Responses({
+                               @Response(code=100, examples=" {foo:'a'} "),
+                               @Response(code=101, examples={" foo:'b' "})
+                       })
+                       UE07 r) {}
        }
        
+       @Test
+       public void ue01_Responses_onParameter_code() throws Exception {
+               assertEquals("Continue", getSwagger(new 
UE()).getPaths().get("/code").get("get").getResponse(100).getDescription());
+               assertEquals("Switching Protocols", getSwagger(new 
UE()).getPaths().get("/code").get("get").getResponse(101).getDescription());
+       }
+       @Test
+       public void ue02_Responses_onParameter_value() throws Exception {
+               assertEquals("Continue", getSwagger(new 
UE()).getPaths().get("/value").get("get").getResponse(100).getDescription());
+               assertEquals("Switching Protocols", getSwagger(new 
UE()).getPaths().get("/value").get("get").getResponse(101).getDescription());
+       }
+       @Test
+       public void ue03_Responses_onParameter_description() throws Exception {
+               assertEquals("a", getSwagger(new 
UE()).getPaths().get("/description").get("get").getResponse(100).getDescription());
+               assertEquals("a\nb", getSwagger(new 
UE()).getPaths().get("/description").get("get").getResponse(101).getDescription());
+       }
+       @Test
+       public void ue04_Responses_onParameter_schema() throws Exception {
+               assertObjectEquals("{type:'a'}", getSwagger(new 
UE()).getPaths().get("/schema").get("get").getResponse(100).getSchema());
+               assertObjectEquals("{type:'b'}", getSwagger(new 
UE()).getPaths().get("/schema").get("get").getResponse(101).getSchema());
+       }
+       @Test
+       public void ue05_Responses_onParameter_headers() throws Exception {
+               assertObjectEquals("{foo:{type:'a'}}", getSwagger(new 
UE()).getPaths().get("/headers").get("get").getResponse(100).getHeaders());
+               assertObjectEquals("{foo:{type:'b'}}", getSwagger(new 
UE()).getPaths().get("/headers").get("get").getResponse(101).getHeaders());
+       }
+       @Test
+       public void ue06_Responses_onParameter_example() throws Exception {
+               assertObjectEquals("'a'", getSwagger(new 
UE()).getPaths().get("/example").get("get").getResponse(100).getExample());
+               assertObjectEquals("{f1:'b'}", getSwagger(new 
UE()).getPaths().get("/example").get("get").getResponse(101).getExample());
+       }
+       @Test
+       public void ue07_Responses_onParameter_examples() throws Exception {
+               assertObjectEquals("{foo:'a'}", getSwagger(new 
UE()).getPaths().get("/examples").get("get").getResponse(100).getExamples());
+               assertObjectEquals("{foo:'b'}", getSwagger(new 
UE()).getPaths().get("/examples").get("get").getResponse(101).getExamples());
+       }
+       
+
        
//-----------------------------------------------------------------------------------------------------------------
        // @ResponseStatus on POJO
        
//-----------------------------------------------------------------------------------------------------------------
 
        @RestResource()
        public static class VA {
-//     int code() default 0;
-//     int value() default 0;
-//     String[] description() default {};
+               @ResponseStatus({
+                       @Status(code=100),
+                       @Status(code=101)
+               })
+               public static class VA01 {}
+               
+               @RestMethod(name=GET,path="/code")
+               public void va01(VA01 r) {}
+
+               @ResponseStatus({
+                       @Status(100),
+                       @Status(101)
+               })
+               public static class VA02 {}
+               
+               @RestMethod(name=GET,path="/value")
+               public void va02(VA02 r) {}
+
+               @ResponseStatus({
+                       @Status(code=100, description="a"),
+                       @Status(code=101, description="a\nb")
+               })
+               public static class VA03 {}
+               
+               @RestMethod(name=GET,path="/description")
+               public void va03(VA03 r) {}
+       }
+
+       @Test
+       public void va01_ResponseStatuses_onPojo_code() throws Exception {
+               assertEquals("Continue", getSwagger(new 
VA()).getPaths().get("/code").get("get").getResponse(100).getDescription());
+               assertEquals("Switching Protocols", getSwagger(new 
VA()).getPaths().get("/code").get("get").getResponse(101).getDescription());
+       }
+       @Test
+       public void va02_ResponseStatuses_onPojo_value() throws Exception {
+               assertEquals("Continue", getSwagger(new 
VA()).getPaths().get("/value").get("get").getResponse(100).getDescription());
+               assertEquals("Switching Protocols", getSwagger(new 
VA()).getPaths().get("/value").get("get").getResponse(101).getDescription());
+       }
+       @Test
+       public void va03_ResponseStatuses_onPojo_description() throws Exception 
{
+               assertEquals("a", getSwagger(new 
VA()).getPaths().get("/description").get("get").getResponse(100).getDescription());
+               assertEquals("a\nb", getSwagger(new 
VA()).getPaths().get("/description").get("get").getResponse(101).getDescription());
        }
        
        
//-----------------------------------------------------------------------------------------------------------------
-       // @ResponseStatuses on POJO
+       // @ResponseStatus on parameter
        
//-----------------------------------------------------------------------------------------------------------------
 
        @RestResource()
@@ -6136,9 +6704,6 @@ public class BasicRestInfoProviderTest {
 //     String[] example() default {};
        }
        
-       
//-----------------------------------------------------------------------------------------------------------------
-       // @ResponseHeaders on POJO
-       
//-----------------------------------------------------------------------------------------------------------------
        
        @Bean(typeName="Foo")
        public static class Foo {

-- 
To stop receiving notification emails like this one, please contact
jamesbog...@apache.org.

Reply via email to