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 77e6dae  REST refactoring.
77e6dae is described below

commit 77e6dae564c7b750fb112dd217d1c0271514c882
Author: JamesBognar <[email protected]>
AuthorDate: Tue Feb 9 12:52:48 2021 -0500

    REST refactoring.
---
 .../java/org/apache/juneau/rest/RestResponse.java  | 55 ++++++++--------------
 .../juneau/rest/logging/BasicRestLogger.java       |  2 +-
 .../juneau/rest/reshandlers/DefaultHandler.java    |  2 +-
 .../rest/annotation/Restx_Serializers_Test.java    |  6 +--
 4 files changed, 25 insertions(+), 40 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
index f96fe8b..febc7a4 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
@@ -61,23 +61,25 @@ public final class RestResponse extends 
HttpServletResponseWrapper {
 
        private HttpServletResponse inner;
        private final RestRequest request;
-       private RestOperationContext opContext;
+
        private Object output;                       // The POJO being sent to 
the output.
        private boolean isNullOutput;                // The output is null (as 
opposed to not being set at all)
        private ServletOutputStream sos;
        private FinishableServletOutputStream os;
        private FinishablePrintWriter w;
-
        private ResponseBeanMeta responseMeta;
 
        /**
         * Constructor.
         */
-       RestResponse(RestCall call, RestOperationContext roc) throws Exception {
+       RestResponse(RestCall call, RestOperationContext opContext) throws 
Exception {
                super(call.getResponse());
-               this.inner = call.getResponse();
-               this.request = call.getRestRequest();
                call.restResponse(this);
+
+               inner = call.getResponse();
+               request = call.getRestRequest();
+               responseMeta = opContext.getResponseMeta();
+
                RestContext context = call.getContext();
 
                try {
@@ -92,17 +94,15 @@ public final class RestResponse extends 
HttpServletResponseWrapper {
                        throw new BadRequest(e1, "Invalid format for header 
'x-response-headers'.  Must be in URL-encoded format.");
                }
 
-               this.opContext = roc;
-
                // Find acceptable charset
                String h = request.getHeader("accept-charset");
                String charset = null;
                if (h == null)
-                       charset = roc.getDefaultCharset();
+                       charset = opContext.getDefaultCharset();
                else for (StringRange r : StringRanges.of(h).getRanges()) {
                        if (r.getQValue() > 0) {
                                if (r.getName().equals("*"))
-                                       charset = roc.getDefaultCharset();
+                                       charset = opContext.getDefaultCharset();
                                else if (Charset.isSupported(r.getName()))
                                        charset = r.getName();
                                if (charset != null)
@@ -112,46 +112,31 @@ public final class RestResponse extends 
HttpServletResponseWrapper {
 
                for (Header e : 
request.getContext().getDefaultResponseHeaders())
                        setHeaderSafe(e.getName(), stringify(e.getValue()));
-               for (Header e : roc.getDefaultResponseHeaders())
+               for (Header e : opContext.getDefaultResponseHeaders())
                        setHeaderSafe(e.getName(), stringify(e.getValue()));
 
                if (charset == null)
                        throw new NotAcceptable("No supported charsets in 
header ''Accept-Charset'': ''{0}''", request.getHeader("Accept-Charset"));
                super.setCharacterEncoding(charset);
 
-               this.responseMeta = roc.getResponseMeta();
-       }
-
-       /**
-        * Gets the serializer group for the response.
-        *
-        * <ul class='seealso'>
-        *      <li class='link'>{@doc RestSerializers}
-        * </ul>
-        *
-        * @return The serializer group for the response.
-        */
-       public SerializerGroup getSerializers() {
-               return opContext == null ? SerializerGroup.EMPTY : 
opContext.getSerializers();
        }
 
        /**
-        * Returns the media types that are valid for <c>Accept</c> headers on 
the request.
+        * Returns access to the inner {@link RestContext} of the class of this 
method.
         *
-        * @return The set of media types registered in the parser group of 
this request.
+        * @return The {@link RestContext} of this class.  Never <jk>null</jk>.
         */
-       public List<MediaType> getSupportedMediaTypes() {
-               return opContext == null ? Collections.<MediaType>emptyList() : 
opContext.getSupportedAcceptTypes();
+       public RestContext getContext() {
+               return request.getContext();
        }
 
        /**
-        * Returns the codings that are valid for <c>Accept-Encoding</c> and 
<c>Content-Encoding</c> headers on
-        * the request.
+        * Returns access to the inner {@link RestOperationContext} of this 
method.
         *
-        * @return The set of media types registered in the parser group of 
this request.
+        * @return The {@link RestOperationContext} of this method.  Never 
<jk>null</jk>.
         */
-       public List<String> getSupportedEncodings() {
-               return opContext == null ? Collections.<String>emptyList() : 
opContext.getEncoders().getSupportedEncodings();
+       public RestOperationContext getOpContext() {
+               return request.getOpContext();
        }
 
        /**
@@ -277,7 +262,7 @@ public final class RestResponse extends 
HttpServletResponseWrapper {
        public FinishableServletOutputStream getNegotiatedOutputStream() throws 
NotAcceptable, IOException {
                if (os == null) {
                        Encoder encoder = null;
-                       EncoderGroup encoders = opContext == null ? 
EncoderGroup.DEFAULT : opContext.getEncoders();
+                       EncoderGroup encoders = 
request.getOpContext().getEncoders();
 
                        String ae = request.getHeader("Accept-Encoding");
                        if (! (ae == null || ae.isEmpty())) {
@@ -668,7 +653,7 @@ public final class RestResponse extends 
HttpServletResponseWrapper {
         *
         * @return The wrapped servlet request.
         */
-       public HttpServletResponse getInner() {
+       public HttpServletResponse getHttpServletResponse() {
                return inner;
        }
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/BasicRestLogger.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/BasicRestLogger.java
index aef1a57..3a72bfd 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/BasicRestLogger.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/BasicRestLogger.java
@@ -344,7 +344,7 @@ public class BasicRestLogger implements RestLogger {
 
        private byte[] getResponseBody(HttpServletRequest req, 
HttpServletResponse res) {
                if (res instanceof RestResponse)
-                       res = ((RestResponse)res).getInner();
+                       res = ((RestResponse)res).getHttpServletResponse();
                if (res instanceof CachingHttpServletResponse)
                        return ((CachingHttpServletResponse)res).getBody();
                return castOrNull(req.getAttribute("ResponseBody"), 
byte[].class);
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 4c20e8f..b59d320 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
@@ -54,7 +54,7 @@ public class DefaultHandler implements ResponseHandler {
        @SuppressWarnings("resource")
        @Override /* ResponseHandler */
        public boolean handle(RestRequest req, RestResponse res) throws 
IOException, InternalServerError, NotAcceptable {
-               SerializerGroup g = res.getSerializers();
+               SerializerGroup g = res.getOpContext().getSerializers();
                String accept = req.getHeaders().getString("Accept", "*/*");
                SerializerMatch sm = g.getSerializerMatch(accept);
                HttpPartSchema schema = null;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Restx_Serializers_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Restx_Serializers_Test.java
index b349d15..34631da 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Restx_Serializers_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Restx_Serializers_Test.java
@@ -202,17 +202,17 @@ public class Restx_Serializers_Test {
                @RestOp
                public OList a(RestResponse res) {
                        // Should show ['text/s3','text/s4','text/s1','text/s2']
-                       return OList.of(res.getSupportedMediaTypes());
+                       return 
OList.of(res.getOpContext().getSupportedAcceptTypes());
                }
                @RestOp(serializers=S5.class)
                public OList b(RestResponse res) {
                        // Should show ['text/s5']
-                       return OList.of(res.getSupportedMediaTypes());
+                       return 
OList.of(res.getOpContext().getSupportedAcceptTypes());
                }
                @RestOp(serializers={S5.class,Inherit.class})
                public OList c(RestResponse res) {
                        // Should show 
['text/s5','text/s3','text/s4','text/s1','text/s2']
-                       return OList.of(res.getSupportedMediaTypes());
+                       return 
OList.of(res.getOpContext().getSupportedAcceptTypes());
                }
        }
 

Reply via email to