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 1525ea6  REST refactoring.
1525ea6 is described below

commit 1525ea64c10c77b6d05d6eb563bb8372b9f1a1e6
Author: JamesBognar <[email protected]>
AuthorDate: Tue Feb 9 12:35:23 2021 -0500

    REST refactoring.
---
 .../java/org/apache/juneau/rest/RequestHeader.java |   4 +-
 .../apache/juneau/rest/RestOperationContext.java   |  24 ++-
 .../java/org/apache/juneau/rest/RestRequest.java   | 179 ++++++++-------------
 .../juneau/rest/params/ResponseBeanParam.java      |   2 +-
 .../juneau/rest/params/ResponseHeaderParam.java    |   2 +-
 .../juneau/rest/reshandlers/DefaultHandler.java    |   2 +-
 6 files changed, 95 insertions(+), 118 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
index 6f76f60..f1b393f 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RequestHeader.java
@@ -178,7 +178,7 @@ public class RequestHeader implements Header {
         * @throws ParseException If value could not be parsed.
         */
        public <T> T as(Type type, Type...args) throws ParseException {
-               return as(request.getClassMeta(type, args));
+               return as(request.getBeanSession().getClassMeta(type, args));
        }
 
        /**
@@ -205,7 +205,7 @@ public class RequestHeader implements Header {
         * @throws ParseException If value could not be parsed.
         */
        public <T> T as(Class<T> type) throws ParseException {
-               return as(request.getClassMeta(type));
+               return as(request.getBeanSession().getClassMeta(type));
        }
 
        /**
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
index 7957f58..855bcb1 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
@@ -1547,7 +1547,13 @@ public class RestOperationContext extends BeanContext 
implements Comparable<Rest
                return x;
        }
 
-       ResponseBeanMeta getResponseBeanMeta(Object o) {
+       /**
+        * Returns metadata about the specified response object if it's 
annotated with {@link Response @Response}.
+        *
+        * @param o The response POJO.
+        * @return Metadata about the specified response object, or 
<jk>null</jk> if it's not annotated with {@link Response @Response}.
+        */
+       public ResponseBeanMeta getResponseBeanMeta(Object o) {
                if (o == null)
                        return null;
                Class<?> c = o.getClass();
@@ -1563,7 +1569,13 @@ public class RestOperationContext extends BeanContext 
implements Comparable<Rest
                return rbm;
        }
 
-       ResponsePartMeta getResponseHeaderMeta(Object o) {
+       /**
+        * Returns metadata about the specified response object if it's 
annotated with {@link ResponseHeader @ResponseHeader}.
+        *
+        * @param o The response POJO.
+        * @return Metadata about the specified response object, or 
<jk>null</jk> if it's not annotated with {@link ResponseHeader @ResponseHeader}.
+        */
+       public ResponsePartMeta getResponseHeaderMeta(Object o) {
                if (o == null)
                        return null;
                Class<?> c = o.getClass();
@@ -1584,7 +1596,13 @@ public class RestOperationContext extends BeanContext 
implements Comparable<Rest
                return pm;
        }
 
-       ResponsePartMeta getResponseBodyMeta(Object o) {
+       /**
+        * Returns metadata about the specified response object if it's 
annotated with {@link ResponseBody @ResponseBody}.
+        *
+        * @param o The response POJO.
+        * @return Metadata about the specified response object, or 
<jk>null</jk> if it's not annotated with {@link ResponseBody @ResponseBody}.
+        */
+       public ResponsePartMeta getResponseBodyMeta(Object o) {
                if (o == null)
                        return null;
                Class<?> c = o.getClass();
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 a9f65c8..1c0906e 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
@@ -110,6 +110,8 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
        private final HttpPartSerializerSession partSerializerSession;
        private final HttpPartParserSession partParserSession;
        private final RestCall call;
+       private final SerializerSessionArgs serializerSessionArgs;
+       private final ParserSessionArgs parserSessionArgs;
 
        // Lazy initialized.
        private VarResolverSession varSession;
@@ -118,21 +120,18 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
        private String charset, authorityPath;
        private Config config;
        private Swagger swagger;
-       private SerializerSessionArgs serializerSessionArgs;
-       private ParserSessionArgs parserSessionArgs;
 
        /**
         * Constructor.
         */
        RestRequest(RestCall call, RestOperationContext opContext) throws 
Exception {
                super(call.getRequest());
+               call.restRequest(this);
 
                this.call = call;
                this.opContext = opContext;
 
                inner = call.getRequest();
-               call.restRequest(this);
-
                context = call.getContext();
 
                queryParams = new RequestQuery(this);
@@ -158,25 +157,49 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
                if (! s.isEmpty())
                        headers.queryParams(queryParams, s);
 
-               this.pathParams = new RequestPath(call);
+               pathParams = new RequestPath(call);
 
-               this.beanSession = opContext.createSession();
-               this.partParserSession = 
opContext.getPartParser().createPartSession(getParserSessionArgs());
-               this.partSerializerSession = 
opContext.getPartSerializer().createPartSession(getSerializerSessionArgs());
-               this.pathParams
-                       .parser(partParserSession);
-               this.queryParams
+               beanSession = opContext.createSession();
+
+               parserSessionArgs =
+                       ParserSessionArgs
+                               .create()
+                               .javaMethod(opContext.getJavaMethod())
+                               .locale(getLocale())
+                               .timeZone(getHeaders().getTimeZone())
+                               .debug(isDebug() ? true : null);
+
+               partParserSession = 
opContext.getPartParser().createPartSession(parserSessionArgs);
+
+               serializerSessionArgs = SerializerSessionArgs
+                       .create()
+                       .javaMethod(opContext.getJavaMethod())
+                       .locale(getLocale())
+                       .timeZone(getHeaders().getTimeZone())
+                       .debug(isDebug() ? true : null)
+                       .uriContext(getUriContext())
+                       .resolver(getVarResolverSession())
+                       .useWhitespace(isPlainText() ? true : null);
+
+               partSerializerSession = 
opContext.getPartSerializer().createPartSession(serializerSessionArgs);
+
+               pathParams.parser(partParserSession);
+
+               queryParams
                        .addDefault(opContext.getDefaultRequestQuery())
                        .parser(partParserSession);
-               this.headers
+
+               headers
                        .addDefault(opContext.getDefaultRequestHeaders())
                        .addDefault(context.getDefaultRequestHeaders())
                        .parser(partParserSession);
-               this.attrs = new RequestAttributes(this);
-               this.attrs
+
+               attrs = new RequestAttributes(this);
+               attrs
                        .addDefault(opContext.getDefaultRequestAttributes())
                        .addDefault(context.getDefaultRequestAttributes());
-               this.body
+
+               body
                        .encoders(opContext.getEncoders())
                        .parsers(opContext.getParsers())
                        .headers(headers)
@@ -872,7 +895,7 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
         * @return <jk>true</jk> if {@code &amp;plainText=true} was specified 
as a URL parameter
         */
        public boolean isPlainText() {
-               return "true".equals(getQuery().getString("plainText", 
"false"));
+               return "true".equals(queryParams.getString("plainText", 
"false"));
        }
 
        /**
@@ -932,6 +955,15 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
        }
 
        /**
+        * Returns access to the inner {@link RestOperationContext} of this 
method.
+        *
+        * @return The {@link RestOperationContext} of this method.  May be 
<jk>null</jk> if method has not yet been found.
+        */
+       public RestOperationContext getOpContext() {
+               return opContext;
+       }
+
+       /**
         * Returns the {@link BeanSession} associated with this request.
         *
         * @return The request bean session.
@@ -1224,44 +1256,12 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
                }
        }
 
-       @Override /* Object */
-       public String toString() {
-               StringBuilder sb = new 
StringBuilder("\n").append(getDescription()).append("\n");
-               sb.append("---Headers---\n");
-               for (Enumeration<String> e = getHeaderNames(); 
e.hasMoreElements();) {
-                       String h = e.nextElement();
-                       sb.append("\t").append(h).append(": 
").append(getHeader(h)).append("\n");
-               }
-               String m = getMethod();
-               if (m.equals("PUT") || m.equals("POST")) {
-                       try {
-                               sb.append("---Body UTF-8---\n");
-                               sb.append(body.asString()).append("\n");
-                               sb.append("---Body Hex---\n");
-                               sb.append(body.asSpacedHex()).append("\n");
-                       } catch (Exception e1) {
-                               sb.append(e1.getLocalizedMessage());
-                       }
-               }
-               return sb.toString();
-       }
-
        /**
         * Returns the session arguments to pass to serializers.
         *
         * @return The session arguments to pass to serializers.
         */
        public SerializerSessionArgs getSerializerSessionArgs() {
-               if (serializerSessionArgs == null)
-                       serializerSessionArgs = SerializerSessionArgs
-                               .create()
-                               .javaMethod(opContext.getJavaMethod())
-                               .locale(getLocale())
-                               .timeZone(getHeaders().getTimeZone())
-                               .debug(isDebug() ? true : null)
-                               .uriContext(getUriContext())
-                               .resolver(getVarResolverSession())
-                               .useWhitespace(isPlainText() ? true : null);
                return serializerSessionArgs;
        }
 
@@ -1271,17 +1271,10 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
         * @return The session arguments to pass to parsers.
         */
        public ParserSessionArgs getParserSessionArgs() {
-               if (parserSessionArgs == null)
-                       parserSessionArgs =
-                               ParserSessionArgs
-                                       .create()
-                                       .javaMethod(opContext.getJavaMethod())
-                                       .locale(getLocale())
-                                       .timeZone(getHeaders().getTimeZone())
-                                       .debug(isDebug() ? true : null);
                return parserSessionArgs;
        }
 
+       /* Called by RestCall.finish() */
        void close() {
                if (config != null) {
                        try {
@@ -1293,45 +1286,6 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
        }
 
        /**
-        * Returns metadata about the specified response object if it's 
annotated with {@link Response @Response}.
-        *
-        * @param o The response POJO.
-        * @return Metadata about the specified response object, or 
<jk>null</jk> if it's not annotated with {@link Response @Response}.
-        */
-       public ResponseBeanMeta getResponseBeanMeta(Object o) {
-               return opContext.getResponseBeanMeta(o);
-       }
-
-       /**
-        * Returns metadata about the specified response object if it's 
annotated with {@link ResponseHeader @ResponseHeader}.
-        *
-        * @param o The response POJO.
-        * @return Metadata about the specified response object, or 
<jk>null</jk> if it's not annotated with {@link ResponseHeader @ResponseHeader}.
-        */
-       public ResponsePartMeta getResponseHeaderMeta(Object o) {
-               return opContext.getResponseHeaderMeta(o);
-       }
-
-       /**
-        * Returns metadata about the specified response object if it's 
annotated with {@link ResponseBody @ResponseBody}.
-        *
-        * @param o The response POJO.
-        * @return Metadata about the specified response object, or 
<jk>null</jk> if it's not annotated with {@link ResponseBody @ResponseBody}.
-        */
-       public ResponsePartMeta getResponseBodyMeta(Object o) {
-               return opContext.getResponseBodyMeta(o);
-       }
-
-       /**
-        * Returns access to the inner {@link RestOperationContext} of this 
method.
-        *
-        * @return The {@link RestOperationContext} of this method.  May be 
<jk>null</jk> if method has not yet been found.
-        */
-       public RestOperationContext getOpContext() {
-               return opContext;
-       }
-
-       /**
         * Returns the wrapped servlet request.
         *
         * @return The wrapped servlet request.
@@ -1340,21 +1294,26 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
                return inner;
        }
 
-       /**
-        * Returns the REST object of this call.
-        *
-        * @return The REST object of this call.
-        */
-       public Object getResource() {
-               return call.getResource();
-       }
-
-       <T> ClassMeta<T> getClassMeta(Type type, Type[] args) {
-               return beanSession.getClassMeta(type, args);
-       }
-
-       <T> ClassMeta<T> getClassMeta(Class<T> type) {
-               return beanSession.getClassMeta(type);
+       @Override /* Object */
+       public String toString() {
+               StringBuilder sb = new 
StringBuilder("\n").append(getDescription()).append("\n");
+               sb.append("---Headers---\n");
+               for (Enumeration<String> e = getHeaderNames(); 
e.hasMoreElements();) {
+                       String h = e.nextElement();
+                       sb.append("\t").append(h).append(": 
").append(getHeader(h)).append("\n");
+               }
+               String m = getMethod();
+               if (m.equals("PUT") || m.equals("POST")) {
+                       try {
+                               sb.append("---Body UTF-8---\n");
+                               sb.append(body.asString()).append("\n");
+                               sb.append("---Body Hex---\n");
+                               sb.append(body.asSpacedHex()).append("\n");
+                       } catch (Exception e1) {
+                               sb.append(e1.getLocalizedMessage());
+                       }
+               }
+               return sb.toString();
        }
 
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseBeanParam.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseBeanParam.java
index 036de33..dc82632 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseBeanParam.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseBeanParam.java
@@ -68,7 +68,7 @@ public class ResponseBeanParam implements RestOperationParam {
                        public void onSet(Object o) {
                                RestRequest req = call.getRestRequest();
                                RestResponse res = call.getRestResponse();
-                               ResponseBeanMeta meta = 
req.getResponseBeanMeta(o);
+                               ResponseBeanMeta meta = 
req.getOpContext().getResponseBeanMeta(o);
                                if (meta == null)
                                        meta = ResponseBeanParam.this.meta;
                                res.setResponseMeta(meta);
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseHeaderParam.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseHeaderParam.java
index 822ee27..5ec9bd3 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseHeaderParam.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseHeaderParam.java
@@ -88,7 +88,7 @@ public class ResponseHeaderParam implements 
RestOperationParam {
                                try {
                                        RestRequest req = call.getRestRequest();
                                        RestResponse res = 
call.getRestResponse();
-                                       ResponsePartMeta rpm = 
req.getResponseHeaderMeta(o);
+                                       ResponsePartMeta rpm = 
req.getOpContext().getResponseHeaderMeta(o);
                                        if (rpm == null)
                                                rpm = 
ResponseHeaderParam.this.meta;
                                        HttpPartSerializerSession pss = 
rpm.getSerializer() == null ? req.getPartSerializerSession() : 
rpm.getSerializer().createPartSession(req.getSerializerSessionArgs());
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
index a3f34c8..4c20e8f 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
@@ -63,7 +63,7 @@ public class DefaultHandler implements ResponseHandler {
 
                ResponseBeanMeta rm = res.getResponseMeta();
                if (rm == null)
-                       rm = req.getResponseBeanMeta(o);
+                       rm = req.getOpContext().getResponseBeanMeta(o);
 
                if (rm != null) {
 

Reply via email to