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 22:47:27 UTC
[juneau] branch master updated: Refactor BasicRestInfoProvider.
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 8c4b298 Refactor BasicRestInfoProvider.
8c4b298 is described below
commit 8c4b298888a02eb5ec5eecb37b2231b02e197bba
Author: JamesBognar <ja...@apache.org>
AuthorDate: Wed Aug 1 18:47:08 2018 -0400
Refactor BasicRestInfoProvider.
---
.../apache/juneau/rest/BasicRestInfoProvider.java | 51 ++++++++++----------
.../org/apache/juneau/rest/RestMethodParam.java | 9 ----
.../org/apache/juneau/rest/RestParamDefaults.java | 56 +++-------------------
3 files changed, 30 insertions(+), 86 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 efabb97..fd69397 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
@@ -407,7 +407,21 @@ public class BasicRestInfoProvider implements RestInfoProvider {
if (in != BODY)
param.append("name", mp.name);
- ObjectMap pi = resolve(vr, mp.getApi(), "ParameterInfo on class {0} method {1}", c, m);
+ ObjectMap pi = null;
+ if (in == BODY)
+ pi = HttpPartSchema.create(Body.class, mp.method, mp.index).getApi();
+ else if (in == QUERY)
+ pi = HttpPartSchema.create(Query.class, mp.method, mp.index).getApi();
+ else if (in == FORM_DATA)
+ pi = HttpPartSchema.create(FormData.class, mp.method, mp.index).getApi();
+ else if (in == HEADER)
+ pi = HttpPartSchema.create(Header.class, mp.method, mp.index).getApi();
+ else if (in == PATH)
+ pi = HttpPartSchema.create(Path.class, mp.method, mp.index).getApi();
+ else
+ throw new RuntimeException();
+
+ pi = resolve(vr, pi, "ParameterInfo on class {0} method {1}", c, m);
// Common to all
param.appendSkipEmpty("description", resolve(vr, pi.getString("description")));
@@ -575,7 +589,9 @@ public class BasicRestInfoProvider implements RestInfoProvider {
RestParamType in = mp.getParamType();
if (in == RESPONSE_HEADER) {
- ObjectMap pi = resolve(vr, mp.getApi(), "@ResponseHeader on class {0} method {1}", c, m);
+ HttpPartSchema schema = HttpPartSchema.create(ResponseHeader.class, mp.method, mp.index);
+ ObjectMap pi = HttpPartSchema.getApiCodeMap(schema, 200);
+ pi = resolve(vr, pi, "@ResponseHeader on class {0} method {1}", c, m);
for (String code : pi.keySet()) {
String name = mp.getName();
ObjectMap pi2 = pi.getObjectMap(code, true);
@@ -604,7 +620,9 @@ public class BasicRestInfoProvider implements RestInfoProvider {
}
} else if (in == RESPONSE) {
- ObjectMap pi = resolve(vr, mp.getApi(), "@Response on class {0} method {1}", c, m);
+ HttpPartSchema schema = HttpPartSchema.create(Response.class, mp.method, mp.index);
+ ObjectMap pi = HttpPartSchema.getApiCodeMap(schema, 200);
+ pi = resolve(vr, pi, "@Response on class {0} method {1}", c, m);
for (String code : pi.keySet()) {
ObjectMap pi2 = pi.getObjectMap(code, true);
@@ -627,7 +645,9 @@ public class BasicRestInfoProvider implements RestInfoProvider {
}
} else if (in == RESPONSE_BODY) {
- ObjectMap pi = resolve(vr, mp.getApi(), "@ResponseBody on class {0} method {1}", c, m);
+ HttpPartSchema schema = HttpPartSchema.create(ResponseBody.class, mp.method, mp.index);
+ ObjectMap pi = HttpPartSchema.getApiCodeMap(schema, 200);
+ pi = resolve(vr, pi, "@ResponseBody on class {0} method {1}", c, m);
for (String code : pi.keySet()) {
ObjectMap pi2 = pi.getObjectMap(code, true);
@@ -709,29 +729,6 @@ public class BasicRestInfoProvider implements RestInfoProvider {
return swagger;
}
-// private static void assertNoEmpties(ObjectMap om) throws SwaggerException {
-// if (om.isEmpty())
-// throw new SwaggerException(null, "Empty map detected.");
-// for (Map.Entry<String,Object> e : om.entrySet()) {
-// Object val = e.getValue();
-// if (val instanceof ObjectMap)
-// assertNoEmpties((ObjectMap)val);
-// if (val instanceof ObjectList)
-// assertNoEmpties((ObjectList)val);
-// }
-// }
-//
-// private static void assertNoEmpties(ObjectList ol) throws SwaggerException {
-// if (ol.isEmpty())
-// throw new SwaggerException(null, "Empty list detected.");
-// for (Object val : ol) {
-// if (val instanceof ObjectMap)
-// assertNoEmpties((ObjectMap)val);
-// if (val instanceof ObjectList)
-// assertNoEmpties((ObjectList)val);
-// }
-// }
-
//=================================================================================================================
// Utility methods
//=================================================================================================================
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodParam.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodParam.java
index 7d6cbe0..52d17bd 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodParam.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodParam.java
@@ -199,15 +199,6 @@ public abstract class RestMethodParam {
public abstract Object resolve(RestRequest req, RestResponse res) throws Exception;
/**
- * Returns the Swagger metadata associated with this parameter.
- *
- * @return A map of parameter metadata, never <jk>null</jk>.
- */
- protected ObjectMap getApi() {
- return null;
- };
-
- /**
* Returns the parameter class type that this parameter resolver is meant for.
*
* @return The parameter class type, or <jk>null</jk> if the type passed in isn't an instance of {@link Class}.
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 3c91483..85bdd6a 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
@@ -570,12 +570,7 @@ class RestParamDefaults {
@Override /* RestMethodParam */
public Object resolve(RestRequest req, RestResponse res) throws Exception {
- return req.getPathMatch().get(partParser, schema, schema.getName(), type);
- }
-
- @Override /* RestMethodParam */
- public ObjectMap getApi() {
- return schema.getApi();
+ return req.getPathMatch().get(partParser, schema, name, type);
}
}
@@ -593,11 +588,6 @@ class RestParamDefaults {
public Object resolve(RestRequest req, RestResponse res) throws Exception {
return req.getBody().asType(partParser, schema, type);
}
-
- @Override /* RestMethodParam */
- public ObjectMap getApi() {
- return schema.getApi();
- }
}
static final class HeaderObject extends RestMethodParam {
@@ -624,11 +614,6 @@ class RestParamDefaults {
public Object resolve(RestRequest req, RestResponse res) throws Exception {
return req.getHeaders().get(partParser, schema, name, type);
}
-
- @Override /* RestMethodParam */
- public ObjectMap getApi() {
- return schema.getApi();
- }
}
static final class RequestBeanObject extends RestMethodParam {
@@ -647,11 +632,10 @@ class RestParamDefaults {
static final class ResponseHeaderObject extends RestMethodParam {
final ResponsePartMeta meta;
- final HttpPartSchema schema;
protected ResponseHeaderObject(Method m, int i, PropertyStore ps) {
super(RESPONSE_HEADER, m, i, getName(m, i));
- this.schema = HttpPartSchema.create(ResponseHeader.class, method, i);
+ HttpPartSchema schema = HttpPartSchema.create(ResponseHeader.class, method, i);
this.meta = new ResponsePartMeta(HttpPartType.HEADER, schema, createPartSerializer(schema.getSerializer(), ps));
if (getTypeClass() != Value.class)
@@ -687,20 +671,14 @@ class RestParamDefaults {
});
return v;
}
-
- @Override
- public ObjectMap getApi() {
- return HttpPartSchema.getApiCodeMap(schema, 200);
- }
}
static final class ResponseBodyObject extends RestMethodParam {
final ResponsePartMeta rpm;
- final HttpPartSchema schema;
protected ResponseBodyObject(Method m, int i, PropertyStore ps) {
super(RESPONSE_BODY, m, i);
- this.schema = HttpPartSchema.create(ResponseBody.class, method, i);
+ HttpPartSchema schema = HttpPartSchema.create(ResponseBody.class, method, i);
this.rpm = new ResponsePartMeta(HttpPartType.BODY, schema, createPartSerializer(schema.getSerializer(), ps));
if (getTypeClass() != Value.class)
@@ -723,21 +701,14 @@ class RestParamDefaults {
});
return v;
}
-
- @Override
- public ObjectMap getApi() {
- return HttpPartSchema.getApiCodeMap(schema, 200);
- }
}
static final class ResponseBeanObject extends RestMethodParam {
- final ResponseBeanMeta responseBeanMeta;
- final HttpPartSchema schema;
+ final ResponseBeanMeta rbm;
protected ResponseBeanObject(Method m, int i, PropertyStore ps) {
super(RESPONSE, m, i);
- this.schema = HttpPartSchema.create(Response.class, method, i);
- this.responseBeanMeta = ResponseBeanMeta.create(m.getParameterTypes()[i], ps);
+ 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);
}
@@ -751,18 +722,13 @@ class RestParamDefaults {
public void onSet(Object o) {
ResponseBeanMeta rbm = req.getResponseBeanMeta(o);
if (rbm == null)
- rbm = ResponseBeanObject.this.responseBeanMeta;
+ rbm = ResponseBeanObject.this.rbm;
res.setResponseBeanMeta(rbm);
res.setOutput(o);
}
});
return v;
}
-
- @Override
- public ObjectMap getApi() {
- return HttpPartSchema.getApiCodeMap(schema, 200);
- }
}
static class ResponseStatusObject extends RestMethodParam {
@@ -832,11 +798,6 @@ class RestParamDefaults {
return req.getFormData().getAll(partParser, schema, name, type);
return req.getFormData().get(partParser, schema, name, type);
}
-
- @Override /* RestMethodParam */
- public ObjectMap getApi() {
- return schema.getApi();
- }
}
static final class QueryObject extends RestMethodParam {
@@ -870,11 +831,6 @@ class RestParamDefaults {
return req.getQuery().getAll(partParser, schema, name, type);
return req.getQuery().get(partParser, schema, name, type);
}
-
- @Override /* RestMethodParam */
- public ObjectMap getApi() {
- return schema.getApi();
- }
}
static final class HasFormDataObject extends RestMethodParam {