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/01/06 04:03:57 UTC

juneau git commit: Improve efficiency of RestMethod initialization.

Repository: juneau
Updated Branches:
  refs/heads/master 96fae4f98 -> 8574ebab3


Improve efficiency of RestMethod initialization.

Project: http://git-wip-us.apache.org/repos/asf/juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/juneau/commit/8574ebab
Tree: http://git-wip-us.apache.org/repos/asf/juneau/tree/8574ebab
Diff: http://git-wip-us.apache.org/repos/asf/juneau/diff/8574ebab

Branch: refs/heads/master
Commit: 8574ebab313380d9d7a8cafc9fbfac2db6e03e8f
Parents: 96fae4f
Author: JamesBognar <ja...@apache.org>
Authored: Fri Jan 5 23:03:53 2018 -0500
Committer: JamesBognar <ja...@apache.org>
Committed: Fri Jan 5 23:03:53 2018 -0500

----------------------------------------------------------------------
 .../org/apache/juneau/rest/RestJavaMethod.java  | 30 +++++-----
 .../org/apache/juneau/rest/RestRequest.java     | 60 +++++++-------------
 2 files changed, 39 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/juneau/blob/8574ebab/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestJavaMethod.java
----------------------------------------------------------------------
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestJavaMethod.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestJavaMethod.java
index e172e69..6d35555 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestJavaMethod.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestJavaMethod.java
@@ -45,7 +45,6 @@ import org.apache.juneau.utils.*;
  * Represents a single Java servlet/resource method annotated with {@link RestMethod @RestMethod}.
  */
 class RestJavaMethod implements Comparable<RestJavaMethod>  {
-	private final java.lang.reflect.Method method;
 	private final String httpMethod;
 	private final UrlPathPattern pathPattern;
 	private final RestParam[] params;
@@ -53,24 +52,30 @@ class RestJavaMethod implements Comparable<RestJavaMethod>  {
 	private final RestMatcher[] optionalMatchers;
 	private final RestMatcher[] requiredMatchers;
 	private final RestConverter[] converters;
-	private final SerializerGroup serializers;
-	private final ParserGroup parsers;
-	private final EncoderGroup encoders;
-	private final HttpPartParser partParser;
 	private final HttpPartSerializer partSerializer;
 	private final ObjectMap properties;
-	private final Map<String,Object> defaultRequestHeaders, defaultQuery, defaultFormData;
-	private final String defaultCharset;
-	private final long maxInput;
 	private final boolean deprecated;
 	private final String description, tags, summary, externalDocs;
 	private final Integer priority;
 	private final org.apache.juneau.rest.annotation.Parameter[] parameters;
 	private final Response[] responses;
 	private final RestContext context;
-	private final BeanContext beanContext;
-	private final Map<String,Widget> widgets;
-	private final List<MediaType> supportedAcceptTypes, supportedContentTypes;
+	final java.lang.reflect.Method method;
+	final SerializerGroup serializers;
+	final ParserGroup parsers;
+	final EncoderGroup encoders;
+	final HttpPartParser partParser;
+	final Map<String,Object> 
+		defaultRequestHeaders,
+		defaultQuery,
+		defaultFormData;
+	final String defaultCharset;
+	final long maxInput;
+	final BeanContext beanContext;
+	final Map<String,Widget> widgets;
+	final List<MediaType> 
+		supportedAcceptTypes,
+		supportedContentTypes;
 
 	RestJavaMethod(Object servlet, java.lang.reflect.Method method, RestContext context) throws RestServletException {
 		Builder b = new Builder(servlet, method, context);
@@ -793,8 +798,7 @@ class RestJavaMethod implements Comparable<RestJavaMethod>  {
 
 		ObjectMap requestProperties = new ResolvingObjectMap(req.getVarResolverSession()).setInner(properties);
 
-		req.init(method, requestProperties, defaultRequestHeaders, defaultQuery, defaultFormData, defaultCharset,
-			maxInput, serializers, parsers, partParser, beanContext, encoders, widgets, supportedAcceptTypes, supportedContentTypes);
+		req.init(this, requestProperties);
 		res.init(requestProperties, defaultCharset, serializers, partSerializer, encoders);
 
 		// Class-level guards

http://git-wip-us.apache.org/repos/asf/juneau/blob/8574ebab/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
----------------------------------------------------------------------
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index 226b100..d8f5ad3 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -74,29 +74,24 @@ import org.apache.juneau.utils.*;
 public final class RestRequest extends HttpServletRequestWrapper {
 
 	private final RestContext context;
+	private RestJavaMethod restJavaMethod;
 
 	private final String method;
 	private RequestBody body;
 	private Method javaMethod;
 	private ObjectMap properties;
-	private SerializerGroup serializerGroup;
-	private ParserGroup parserGroup;
 	private final boolean debug;
-	private HttpPartParser partParser;
 	private BeanSession beanSession;
 	private VarResolverSession varSession;
 	private final RequestQuery queryParams;
 	private RequestFormData formData;
-	private Map<String,Object> defFormData;
 	private RequestPathMatch pathParams;
 	private boolean isPost;
 	private UriContext uriContext;
-	private String charset, defaultCharset;
+	private String charset;
 	private RequestHeaders headers;
 	private ConfigFile cf;
 	private Swagger swagger, fileSwagger;
-	private Map<String,Widget> widgets;
-	private List<MediaType> supportedContentTypes, supportedAcceptTypes;
 
 	/**
 	 * Constructor.
@@ -160,40 +155,29 @@ public final class RestRequest extends HttpServletRequestWrapper {
 	/*
 	 * Called from RestServlet after a match has been made but before the guard or method invocation.
 	 */
-	final void init(Method javaMethod, ObjectMap properties, Map<String,Object> defHeader,
-			Map<String,Object> defQuery, Map<String,Object> defFormData, String defaultCharset, long maxInput,
-			SerializerGroup mSerializers, ParserGroup mParsers, HttpPartParser mUrlEncodingParser,
-			BeanContext beanContext, EncoderGroup encoders, Map<String,Widget> widgets, List<MediaType> supportedAcceptTypes, 
-			List<MediaType> supportedContentTypes) {
-		this.javaMethod = javaMethod;
+	final void init(RestJavaMethod rjm, ObjectMap properties) {
+		this.restJavaMethod = rjm;
+		this.javaMethod = rjm.method;
 		this.properties = properties;
-		this.partParser = mUrlEncodingParser;
-		this.beanSession = beanContext.createSession();
+		this.beanSession = rjm.beanContext.createSession();
 		this.pathParams
-			.setParser(partParser)
+			.setParser(rjm.partParser)
 			.setBeanSession(beanSession);
 		this.queryParams
-			.addDefault(defQuery)
-			.setParser(partParser)
+			.addDefault(rjm.defaultQuery)
+			.setParser(rjm.partParser)
 			.setBeanSession(beanSession);
 		this.headers
-			.addDefault(defHeader)
+			.addDefault(rjm.defaultRequestHeaders)
 			.addDefault(context.getDefaultRequestHeaders())
-			.setParser(partParser)
+			.setParser(rjm.partParser)
 			.setBeanSession(beanSession);
 		this.body
-			.setEncoders(encoders)
-			.setParsers(mParsers)
+			.setEncoders(rjm.encoders)
+			.setParsers(rjm.parsers)
 			.setHeaders(headers)
 			.setBeanSession(beanSession)
-			.setMaxInput(maxInput);
-		this.serializerGroup = mSerializers;
-		this.parserGroup = mParsers;
-		this.defaultCharset = defaultCharset;
-		this.defFormData = defFormData;
-		this.widgets = widgets;
-		this.supportedAcceptTypes = supportedAcceptTypes;
-		this.supportedContentTypes = supportedContentTypes;
+			.setMaxInput(rjm.maxInput);
 
 		String stylesheet = getQuery().getString("stylesheet");
 		if (stylesheet != null)
@@ -310,7 +294,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
 	 * @return The set of media types registered in the serializer group of this request.
 	 */
 	public List<MediaType> getSupportedAcceptTypes() {
-		return supportedAcceptTypes;
+		return restJavaMethod.supportedAcceptTypes;
 	}
 
 	/**
@@ -319,7 +303,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
 	 * @return The set of media types registered in the parser group of this request.
 	 */
 	public List<MediaType> getSupportedContentTypes() {
-		return supportedContentTypes;
+		return restJavaMethod.supportedContentTypes;
 	}
 
 	/**
@@ -346,7 +330,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
 					charset = h.substring(i+9).trim();
 			}
 			if (charset == null)
-				charset = defaultCharset;
+				charset = restJavaMethod.defaultCharset;
 			if (! Charset.isSupported(charset))
 				throw new RestException(SC_UNSUPPORTED_MEDIA_TYPE, "Unsupported charset in header ''Content-Type'': ''{0}''", h);
 		}
@@ -424,7 +408,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
 		try {
 			if (formData == null) {
 				formData = new RequestFormData();
-				formData.setParser(partParser).setBeanSession(beanSession);
+				formData.setParser(restJavaMethod.partParser).setBeanSession(beanSession);
 				if (! body.isLoaded()) {
 					formData.putAll(getParameterMap());
 				} else {
@@ -435,7 +419,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
 					}
 				}
 			}
-			formData.addDefault(defFormData);
+			formData.addDefault(restJavaMethod.defaultFormData);
 			return formData;
 		} catch (Exception e) {
 			throw new RestException(SC_INTERNAL_SERVER_ERROR, e);
@@ -712,7 +696,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
 	 * @return The serializers associated with this request.
 	 */
 	public SerializerGroup getSerializerGroup() {
-		return serializerGroup;
+		return restJavaMethod.serializers;
 	}
 
 	/**
@@ -721,7 +705,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
 	 * @return The parsers associated with this request.
 	 */
 	public ParserGroup getParserGroup() {
-		return parserGroup;
+		return restJavaMethod.parsers;
 	}
 
 
@@ -954,7 +938,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
 	 * 	Never <jk>null</jk>.
 	 */
 	public Map<String,Widget> getWidgets() {
-		return widgets;
+		return restJavaMethod.widgets;
 	}
 
 	/**