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 */