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:51:47 UTC

[juneau] branch master updated: Refactor RestMethodParam to include method parameter index.

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 d298a5a  Refactor RestMethodParam to include method parameter index.
d298a5a is described below

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

    Refactor RestMethodParam to include method parameter index.
---
 .../java/org/apache/juneau/rest/RestContext.java   | 14 ++++-----
 .../org/apache/juneau/rest/RestMethodParam.java    | 14 ++++++---
 .../org/apache/juneau/rest/RestParamDefaults.java  | 36 +++++++++++-----------
 3 files changed, 34 insertions(+), 30 deletions(-)

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 ddf7748..aee7dd2 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
@@ -4316,23 +4316,23 @@ public final class RestContext extends BeanContext {
 
 			if (hasAnnotation(Header.class, method, i)) {
 				s = HttpPartSchema.create(Header.class, method, i);
-				rp[i] = new RestParamDefaults.HeaderObject(method, s, t, ps);
+				rp[i] = new RestParamDefaults.HeaderObject(method, i, s, t, ps);
 			} else if (hasAnnotation(Query.class, method, i)) {
 				s = HttpPartSchema.create(Query.class, method, i);
-				rp[i] = new RestParamDefaults.QueryObject(method, s, t, ps);
+				rp[i] = new RestParamDefaults.QueryObject(method, i, s, t, ps);
 			} else if (hasAnnotation(FormData.class, method, i)) {
 				s = HttpPartSchema.create(FormData.class, method, i);
-				rp[i] = new RestParamDefaults.FormDataObject(method, s, t, ps);
+				rp[i] = new RestParamDefaults.FormDataObject(method, i, s, t, ps);
 			} else if (hasAnnotation(Path.class, method, i)) {
 				s = HttpPartSchema.create(Path.class, method, i);
 				rp[i] = new RestParamDefaults.PathObject(method, i, s, t, ps);
 			} else if (hasAnnotation(Body.class, method, i)) {
 				s = HttpPartSchema.create(Body.class, method, i);
-				rp[i] = new RestParamDefaults.BodyObject(method, s, t, ps);
+				rp[i] = new RestParamDefaults.BodyObject(method, i, s, t, ps);
 
 			} else if (hasAnnotation(RequestBean.class, method, i)) {
 				RequestBeanMeta rbm = RequestBeanMeta.create(method, i, ps);
-				rp[i] = new RestParamDefaults.RequestBeanObject(method, rbm, t);
+				rp[i] = new RestParamDefaults.RequestBeanObject(method, i, rbm, t);
 
 			} else if (hasAnnotation(Response.class, method, i) || hasAnnotation(Response.class, Value.getValueType(method, i))) {
 				s = HttpPartSchema.create(Response.class, method, i);
@@ -4349,10 +4349,10 @@ public final class RestContext extends BeanContext {
 
 			} else if (hasAnnotation(HasFormData.class, method, i)) {
 				s = HttpPartSchema.create(HasFormData.class, method, i);
-				rp[i] = new RestParamDefaults.HasFormDataObject(method, s, t);
+				rp[i] = new RestParamDefaults.HasFormDataObject(method, i, s, t);
 			} else if (hasAnnotation(HasQuery.class, method, i)) {
 				s = HttpPartSchema.create(HasQuery.class, method, i);
-				rp[i] = new RestParamDefaults.HasQueryObject(method, s, t);
+				rp[i] = new RestParamDefaults.HasQueryObject(method, i, s, t);
 
 			} else if (hasAnnotation(org.apache.juneau.rest.annotation.Method.class, method, i)) {
 				rp[i] = new RestParamDefaults.MethodObject(method, t);
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 b4b07c8..2942e53 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
@@ -115,6 +115,7 @@ public abstract class RestMethodParam {
 
 	final RestParamType paramType;
 	final Method method;
+	final int index;
 	final String name;
 	final Type type;
 	final Class<?> c;
@@ -125,15 +126,17 @@ public abstract class RestMethodParam {
 	 *
 	 * @param paramType The Swagger parameter type.
 	 * @param method The method on which the parameter resides.
+	 * @param index The method parameter index.
 	 * @param name
 	 * 	The parameter name.
 	 * 	Can be <jk>null</jk> if parameter doesn't have a name (e.g. the request body).
 	 * @param type The object type to convert the parameter to.
 	 * @param api Swagger metadata.
 	 */
-	protected RestMethodParam(RestParamType paramType, Method method, String name, Type type, ObjectMap api) {
+	protected RestMethodParam(RestParamType paramType, Method method, int index, String name, Type type, ObjectMap api) {
 		this.paramType = paramType;
 		this.method = method;
+		this.index = index;
 		this.name = name;
 		this.type = type;
 		this.c = type instanceof Class ? (Class<?>)type : type instanceof ParameterizedType ? (Class<?>)((ParameterizedType)type).getRawType() : null;
@@ -147,7 +150,7 @@ public abstract class RestMethodParam {
 	 * @param type The object type to convert the parameter to.
 	 */
 	protected RestMethodParam(RestParamType paramType, Type type) {
-		this(paramType, null, null, type, ObjectMap.EMPTY_MAP);
+		this(paramType, null, -1, null, type, ObjectMap.EMPTY_MAP);
 	}
 
 	/**
@@ -160,7 +163,7 @@ public abstract class RestMethodParam {
 	 * @param type The object type to convert the parameter to.
 	 */
 	protected RestMethodParam(RestParamType paramType, String name, Type type) {
-		this(paramType, null, name, type, ObjectMap.EMPTY_MAP);
+		this(paramType, null, -1, name, type, ObjectMap.EMPTY_MAP);
 	}
 
 	/**
@@ -168,13 +171,14 @@ public abstract class RestMethodParam {
 	 *
 	 * @param paramType The Swagger parameter type.
 	 * @param method The method on which the parameter resides.
+	 * @param index The method parameter index.
 	 * @param name
 	 * 	The parameter name.
 	 * 	Can be <jk>null</jk> if parameter doesn't have a name (e.g. the request body).
 	 * @param type The object type to convert the parameter to.
 	 */
-	protected RestMethodParam(RestParamType paramType, Method method, String name, Type type) {
-		this(paramType, method, name, type, ObjectMap.EMPTY_MAP);
+	protected RestMethodParam(RestParamType paramType, Method method, int index, String name, Type type) {
+		this(paramType, method, index, name, type, ObjectMap.EMPTY_MAP);
 	}
 
 	/**
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 a14060f..52618b7 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
@@ -553,7 +553,7 @@ class RestParamDefaults {
 		private final HttpPartSchema schema;
 
 		protected PathObject(Method m, int i, HttpPartSchema s, Type t, PropertyStore ps) {
-			super(PATH, m, s.getName(), t, s.getApi());
+			super(PATH, m, i, s.getName(), t, s.getApi());
 			this.schema = HttpPartSchema.create(Path.class, m, i);
 			this.partParser = createPartParser(schema.getParser(), ps);
 
@@ -571,8 +571,8 @@ class RestParamDefaults {
 		private final HttpPartParser partParser;
 		private final HttpPartSchema schema;
 
-		protected BodyObject(Method m, HttpPartSchema s, Type t, PropertyStore ps) {
-			super(BODY, m, null, t, s.getApi());
+		protected BodyObject(Method m, int i, HttpPartSchema s, Type t, PropertyStore ps) {
+			super(BODY, m, i, null, t, s.getApi());
 			this.partParser = s.isUsePartParser() ? createPartParser(s.getParser(), ps) : null;
 			this.schema = s;
 		}
@@ -587,8 +587,8 @@ class RestParamDefaults {
 		private final HttpPartParser partParser;
 		private final HttpPartSchema schema;
 
-		protected HeaderObject(Method m, HttpPartSchema s, Type t, PropertyStore ps) {
-			super(HEADER, m, s.getName(), t, s.getApi());
+		protected HeaderObject(Method m, int i, HttpPartSchema s, Type t, PropertyStore ps) {
+			super(HEADER, m, i, s.getName(), t, s.getApi());
 			this.partParser = createPartParser(s.getParser(), ps);
 			this.schema = s;
 
@@ -605,8 +605,8 @@ class RestParamDefaults {
 	static final class RequestBeanObject extends RestMethodParam {
 		private final RequestBeanMeta requestBeanMeta;
 
-		protected RequestBeanObject(Method m, RequestBeanMeta rbm, Type t) {
-			super(RESPONSE_BODY, m, null, t, null);
+		protected RequestBeanObject(Method m, int i, RequestBeanMeta rbm, Type t) {
+			super(RESPONSE_BODY, m, i, null, t, null);
 			this.requestBeanMeta = rbm;
 		}
 
@@ -620,7 +620,7 @@ class RestParamDefaults {
 		final ResponsePartMeta rpm;
 
 		protected ResponseHeaderObject(Method m, int i, HttpPartSchema s, Type t, PropertyStore ps) {
-			super(RESPONSE_HEADER, m, s.getName(), t, HttpPartSchema.getApiCodeMap(s, 200));
+			super(RESPONSE_HEADER, m, i, s.getName(), t, HttpPartSchema.getApiCodeMap(s, 200));
 			this.rpm = new ResponsePartMeta(HttpPartType.HEADER, s, createPartSerializer(s.getSerializer(), ps));
 
 			if (isEmpty(rpm.getSchema().getName()))
@@ -654,7 +654,7 @@ class RestParamDefaults {
 		final ResponsePartMeta rpm;
 
 		protected ResponseBodyObject(Method m, int i, HttpPartSchema s, Type t, PropertyStore ps) {
-			super(RESPONSE_BODY, m, s.getName(), t, HttpPartSchema.getApiCodeMap(s, 200));
+			super(RESPONSE_BODY, m, i, s.getName(), t, HttpPartSchema.getApiCodeMap(s, 200));
 			this.rpm = new ResponsePartMeta(HttpPartType.BODY, s, createPartSerializer(s.getSerializer(), ps));
 
 			if (getTypeClass() != Value.class)
@@ -683,7 +683,7 @@ class RestParamDefaults {
 		final ResponseBeanMeta rbm;
 
 		protected ResponseBeanObject(Method m, int i, HttpPartSchema s, Type t, PropertyStore ps) {
-			super(RESPONSE, m, s.getName(), t, HttpPartSchema.getApiCodeMap(s, 200));
+			super(RESPONSE, m, i, 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);
@@ -748,8 +748,8 @@ class RestParamDefaults {
 		private final HttpPartParser partParser;
 		private final HttpPartSchema schema;
 
-		protected FormDataObject(Method m, HttpPartSchema s, Type t, PropertyStore ps) {
-			super(FORM_DATA, m, s.getName(), t, s.getApi());
+		protected FormDataObject(Method m, int i, HttpPartSchema s, Type t, PropertyStore ps) {
+			super(FORM_DATA, m, i, s.getName(), t, s.getApi());
 			this.partParser = createPartParser(s.getParser(), ps);
 			this.schema = s;
 			this.multiPart = s.getCollectionFormat() == HttpPartSchema.CollectionFormat.MULTI;
@@ -773,8 +773,8 @@ class RestParamDefaults {
 		private final HttpPartParser partParser;
 		private final HttpPartSchema schema;
 
-		protected QueryObject(Method m, HttpPartSchema s, Type t, PropertyStore ps) {
-			super(QUERY, m, s.getName(), t, s.getApi());
+		protected QueryObject(Method m, int i, HttpPartSchema s, Type t, PropertyStore ps) {
+			super(QUERY, m, i, s.getName(), t, s.getApi());
 			this.partParser = createPartParser(s.getParser(), ps);
 			this.schema = s;
 			this.multiPart = s.getCollectionFormat() == HttpPartSchema.CollectionFormat.MULTI;
@@ -795,8 +795,8 @@ class RestParamDefaults {
 
 	static final class HasFormDataObject extends RestMethodParam {
 
-		protected HasFormDataObject(Method m, HttpPartSchema s, Type t) throws ServletException {
-			super(FORM_DATA, m, s.getName(), t);
+		protected HasFormDataObject(Method m, int i, HttpPartSchema s, Type t) throws ServletException {
+			super(FORM_DATA, m, i, s.getName(), t);
 			if (t != Boolean.class && t != boolean.class)
 				throw new RestServletException("Use of @HasForm annotation on parameter that is not a boolean on method ''{0}''", m);
 		}
@@ -810,8 +810,8 @@ class RestParamDefaults {
 
 	static final class HasQueryObject extends RestMethodParam {
 
-		protected HasQueryObject(Method m, HttpPartSchema s, Type t) throws ServletException {
-			super(QUERY, m, s.getName(), t);
+		protected HasQueryObject(Method m, int i, HttpPartSchema s, Type t) throws ServletException {
+			super(QUERY, m, i, s.getName(), t);
 			if (t != Boolean.class && t != boolean.class)
 				throw new RestServletException("Use of @HasQuery annotation on parameter that is not a boolean on method ''{0}''", m);
 		}