You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2018/08/01 19:17:10 UTC

[juneau] branch master updated: REST Response annotation changes

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 08b8f9c  REST Response annotation changes
08b8f9c is described below

commit 08b8f9cd9038acf999a24c6c09e2df570d66d3a9
Author: JamesBognar <ja...@apache.org>
AuthorDate: Wed Aug 1 15:16:51 2018 -0400

    REST Response annotation changes
---
 .../apache/juneau/rest/BasicRestInfoProvider.java  | 25 ++++++++++++++++++++--
 .../org/apache/juneau/rest/RestParamDefaults.java  |  2 +-
 .../java/org/apache/juneau/rest/RestParamType.java |  3 +++
 3 files changed, 27 insertions(+), 3 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 2c88f30..eb50043 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
@@ -396,7 +396,7 @@ public class BasicRestInfoProvider implements RestInfoProvider {
 
 				RestParamType in = mp.getParamType();
 
-				if (in == RestParamType.OTHER || in == RESPONSE_BODY || in == RESPONSE_HEADER || in == RESPONSE_STATUS)
+				if (in == RestParamType.OTHER || in == RESPONSE || in == RESPONSE_BODY || in == RESPONSE_HEADER || in == RESPONSE_STATUS)
 					continue;
 
 				String key = in.toString() + '.' + (in == BODY ? "body" : mp.getName());
@@ -601,7 +601,7 @@ public class BasicRestInfoProvider implements RestInfoProvider {
 						header.appendSkipEmpty("items", parseMap(vr, pi2.get("items"), "@ResponseHeader/items on class {0} method {1}", c, m));
 					}
 
-				} else if (in == RESPONSE_BODY) {
+				} else if (in == RESPONSE) {
 					ObjectMap pi = resolve(vr, mp.getApi(), "@Response on class {0} method {1}", c, m);
 					for (String code : pi.keySet()) {
 						ObjectMap pi2 = pi.getObjectMap(code, true);
@@ -624,6 +624,27 @@ public class BasicRestInfoProvider implements RestInfoProvider {
 						response.appendSkipEmpty("schema", getSchema(req, response.getObjectMap("schema", true), js, type));
 					}
 
+				} else if (in == RESPONSE_BODY) {
+					ObjectMap pi = resolve(vr, mp.getApi(), "@ResponseBody on class {0} method {1}", c, m);
+					for (String code : pi.keySet()) {
+						ObjectMap pi2 = pi.getObjectMap(code, true);
+
+						ObjectMap response = responses.getObjectMap(code, true);
+
+						response.appendSkipEmpty("schema", parseMap(vr, pi2.get("schema"), "@ResponseBody/schema on class {0} method {1}", c, m));
+						response.appendSkipEmpty("x-example", parseAnything(vr, pi2.getString("example"), "@ResponseBody/example on class {0} method {1}", c, m));
+						response.appendSkipEmpty("examples", parseMap(vr, pi2.get("examples"), "@ResponseBody/examples on class {0} method {1}", c, m));
+
+						Type type = mp.getType();
+						if (type instanceof ParameterizedType) {
+							ParameterizedType pt = (ParameterizedType)type;
+							if (pt.getRawType().equals(Value.class))
+								type = pt.getActualTypeArguments()[0];
+						}
+
+						response.appendSkipEmpty("schema", getSchema(req, response.getObjectMap("schema", true), js, type));
+					}
+
 				} else if (in == RESPONSE_STATUS) {
 					ObjectMap pi = resolve(vr, mp.getApi(), "@ResponseStatus on class {0} method {1}", c, m);
 					for (String code : pi.keySet()) {
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 7466e6e..a14060f 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
@@ -683,7 +683,7 @@ class RestParamDefaults {
 		final ResponseBeanMeta rbm;
 
 		protected ResponseBeanObject(Method m, int i, HttpPartSchema s, Type t, PropertyStore ps) {
-			super(RESPONSE_BODY, m, s.getName(), t, HttpPartSchema.getApiCodeMap(s, 200));
+			super(RESPONSE, m, s.getName(), t, HttpPartSchema.getApiCodeMap(s, 200));
 			this.rbm = ResponseBeanMeta.create(m.getParameterTypes()[i], ps);
 			if (getTypeClass() != Value.class)
 				throw new InternalServerError("Invalid type {0} specified with @Response annotation.  It must be Value.", type);
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestParamType.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestParamType.java
index 403e598..197fffb 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestParamType.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestParamType.java
@@ -42,6 +42,9 @@ public enum RestParamType {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	/** Response value */
+	RESPONSE("response"),
+
+	/** Response value */
 	RESPONSE_BODY("responseBody"),
 
 	/** Response header value */