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 022fec5  RestClient tests.
022fec5 is described below

commit 022fec5d019d4b630e57d31c53d576d4d9d175e1
Author: JamesBognar <jamesbog...@apache.org>
AuthorDate: Tue Mar 31 20:32:08 2020 -0400

    RestClient tests.
---
 .../juneau/rest/client2/RestClientBuilderTest.java |  2 +-
 .../rest/client2/BasicRestCallInterceptor.java     | 11 ++++
 .../juneau/rest/client2/RestCallException.java     |  2 +-
 .../juneau/rest/client2/RestCallInterceptor.java   |  4 +-
 .../juneau/rest/client2/RestClientBuilder.java     | 12 ++++-
 .../juneau/rest/client2/RestResponseBody.java      | 62 +++++++++++-----------
 .../rest/client2/ext/SerializedHttpEntity.java     |  2 +-
 .../client2/logging/ConsoleRestCallLogger.java     |  4 ++
 .../rest/client2/logging/RestCallLogger.java       |  6 +--
 .../apache/juneau/rest/mock2/MockRestClient.java   |  2 +-
 10 files changed, 63 insertions(+), 44 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientBuilderTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientBuilderTest.java
index f8431d5..556b450 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientBuilderTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientBuilderTest.java
@@ -1871,7 +1871,7 @@ public class RestClientBuilderTest {
                        .assertContains("OK");
        }
 
-       public static class XRestCallInterceptor implements RestCallInterceptor 
{
+       public static class XRestCallInterceptor extends 
BasicRestCallInterceptor {
                public static int x;
                @Override
                public void onInit(RestRequest req) throws Exception {
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/BasicRestCallInterceptor.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/BasicRestCallInterceptor.java
index 8e7dfb6..95c3412 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/BasicRestCallInterceptor.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/BasicRestCallInterceptor.java
@@ -12,6 +12,11 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.client2;
 
+import java.io.*;
+
+import org.apache.http.*;
+import org.apache.http.protocol.*;
+
 /**
  * A default implementation of a {@link RestCallInterceptor}.
  *
@@ -22,6 +27,12 @@ public abstract class BasicRestCallInterceptor implements 
RestCallInterceptor {
        @Override /* RestCallInterceptor */
        public void onInit(RestRequest req) throws Exception {}
 
+       @Override /* HttpRequestInterceptor */
+       public void process(HttpRequest request, HttpContext context) {}
+
+       @Override /* HttpResponseInterceptor */
+       public void process(HttpResponse response, HttpContext context) throws 
HttpException, IOException {}
+
        @Override /* RestCallInterceptor */
        public void onConnect(RestRequest req, RestResponse res) throws 
Exception {}
 
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallException.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallException.java
index 6cff971..5bab939 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallException.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallException.java
@@ -30,7 +30,7 @@ import org.apache.juneau.reflect.*;
 /**
  * Exception representing a <c>400+</c> HTTP response code against a remote 
resource or other exception.
  */
-public final class RestCallException extends IOException {
+public final class RestCallException extends HttpException {
 
        private static final long serialVersionUID = 1L;
 
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallInterceptor.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallInterceptor.java
index 584d760..0241d01 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallInterceptor.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallInterceptor.java
@@ -12,6 +12,8 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.client2;
 
+import org.apache.http.*;
+
 /**
  * Used to intercept http connection responses to allow modification of that 
response before processing and for
  * listening for call lifecycle events.
@@ -25,7 +27,7 @@ package org.apache.juneau.rest.client2;
  *     <li class='jm'>{@link 
RestClientBuilder#interceptors(RestCallInterceptor...)}
  * </ul>
  */
-public interface RestCallInterceptor {
+public interface RestCallInterceptor extends HttpRequestInterceptor, 
HttpResponseInterceptor {
 
        /**
         * Called immediately after {@link RestRequest} object is created and 
all headers/query/form-data has been
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
index 16435bd..032ce65 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
@@ -1508,11 +1508,15 @@ public class RestClientBuilder extends 
BeanContextBuilder {
         *
         * @param values The values to add to this setting.
         * @return This object (for method chaining).
+        * @throws Exception If one or more interceptors could not be created.
         */
        @SuppressWarnings("unchecked")
        @ConfigurationProperty
-       public RestClientBuilder interceptors(Class<? extends 
RestCallInterceptor>...values) {
-               return prependTo(RESTCLIENT_interceptors, values);
+       public RestClientBuilder interceptors(Class<? extends 
RestCallInterceptor>...values) throws Exception {
+               RestCallInterceptor[] x = new 
RestCallInterceptor[values.length];
+               for (int i = 0; i < values.length; i++)
+                       x[i] = values[i].newInstance();
+               return interceptors(x);
        }
 
        /**
@@ -1530,6 +1534,10 @@ public class RestClientBuilder extends 
BeanContextBuilder {
         */
        @ConfigurationProperty
        public RestClientBuilder interceptors(RestCallInterceptor...value) {
+               for (RestCallInterceptor r : value) {
+                       addInterceptorLast((HttpRequestInterceptor)r);
+                       addInterceptorLast((HttpResponseInterceptor)r);
+               }
                return prependTo(RESTCLIENT_interceptors, value);
        }
 
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
index 906fde8..7d2b5cd 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
@@ -225,9 +225,9 @@ public class RestResponseBody implements HttpEntity {
         * @return
         *      The HTTP response message body input stream, never 
<jk>null</jk>.
         *      <br>For responses without a body(e.g. HTTP 204), returns an 
empty stream.
-        * @throws RestCallException If a stream or illegal state exception was 
thrown.
+        * @throws IOException If a stream or illegal state exception was 
thrown.
         */
-       public InputStream asInputStream() throws RestCallException {
+       public InputStream asInputStream() throws IOException {
                try {
                        if (cache != null)
                                return new ByteArrayInputStream(cache);
@@ -247,17 +247,23 @@ public class RestResponseBody implements HttpEntity {
                        is = new EofSensorInputStream(is, new 
EofSensorWatcher() {
                                @Override
                                public boolean eofDetected(InputStream wrapped) 
throws IOException {
-                                       response.close();
+                                       try {
+                                               response.close();
+                                       } catch (RestCallException e) {}
                                        return true;
                                }
                                @Override
                                public boolean streamClosed(InputStream 
wrapped) throws IOException {
-                                       response.close();
+                                       try {
+                                               response.close();
+                                       } catch (RestCallException e) {}
                                        return true;
                                }
                                @Override
                                public boolean streamAbort(InputStream wrapped) 
throws IOException {
-                                       response.close();
+                                       try {
+                                               response.close();
+                                       } catch (RestCallException e) {}
                                        return true;
                                }
                        });
@@ -265,8 +271,8 @@ public class RestResponseBody implements HttpEntity {
                        isConsumed = true;
 
                        return is;
-               } catch (UnsupportedOperationException | IOException e) {
-                       throw new RestCallException(e);
+               } catch (UnsupportedOperationException | RestCallException e) {
+                       throw new IOException(e);
                }
        }
 
@@ -288,9 +294,9 @@ public class RestResponseBody implements HttpEntity {
         * @return
         *      The HTTP response message body reader, never <jk>null</jk>.
         *      <br>For responses without a body(e.g. HTTP 204), returns an 
empty reader.
-        * @throws RestCallException If an exception occurred.
+        * @throws IOException If an exception occurred.
         */
-       public Reader asReader() throws RestCallException {
+       public Reader asReader() throws IOException {
 
                // Figure out what the charset of the response is.
                String cs = null;
@@ -322,13 +328,13 @@ public class RestResponseBody implements HttpEntity {
         * @return
         *      The HTTP response message body reader, never <jk>null</jk>.
         *      <br>For responses without a body(e.g. HTTP 204), returns an 
empty reader.
-        * @throws RestCallException If an exception occurred.
+        * @throws IOException If an exception occurred.
         */
-       public Reader asReader(String charset) throws RestCallException {
+       public Reader asReader(String charset) throws IOException {
                try {
                        return new InputStreamReader(asInputStream(), charset 
== null ? "UTF-8" : charset);
                } catch (UnsupportedEncodingException e) {
-                       throw new RestCallException(e);
+                       throw new IOException(e);
                }
        }
 
@@ -349,14 +355,10 @@ public class RestResponseBody implements HttpEntity {
         *
         * @param os The output stream to pipe the output to.
         * @return The response object (for method chaining).
-        * @throws RestCallException If an IO exception occurred.
+        * @throws IOException If an IO exception occurred.
         */
-       public RestResponse pipeTo(OutputStream os) throws RestCallException {
-               try {
-                       IOPipe.create(asInputStream(), os).run();
-               } catch (IOException e) {
-                       throw new RestCallException(e);
-               }
+       public RestResponse pipeTo(OutputStream os) throws IOException {
+               IOPipe.create(asInputStream(), os).run();
                return response;
        }
 
@@ -379,9 +381,9 @@ public class RestResponseBody implements HttpEntity {
         *
         * @param w The writer to pipe the output to.
         * @return The response object (for method chaining).
-        * @throws RestCallException If an IO exception occurred.
+        * @throws IOException If an IO exception occurred.
         */
-       public RestResponse pipeTo(Writer w) throws RestCallException {
+       public RestResponse pipeTo(Writer w) throws IOException {
                return pipeTo(w, false);
        }
 
@@ -405,9 +407,9 @@ public class RestResponseBody implements HttpEntity {
         *      The charset to use for the reader.
         *      <br>If <jk>null</jk>, <js>"UTF-8"</js> is used.
         * @return The response object (for method chaining).
-        * @throws RestCallException If an IO exception occurred.
+        * @throws IOException If an IO exception occurred.
         */
-       public RestResponse pipeTo(Writer w, String charset) throws 
RestCallException {
+       public RestResponse pipeTo(Writer w, String charset) throws IOException 
{
                return pipeTo(w, charset, false);
        }
 
@@ -431,9 +433,9 @@ public class RestResponseBody implements HttpEntity {
         * @param w The writer to write the output to.
         * @param byLines Flush the writers after every line of output.
         * @return The response object (for method chaining).
-        * @throws RestCallException If an IO exception occurred.
+        * @throws IOException If an IO exception occurred.
         */
-       public RestResponse pipeTo(Writer w, boolean byLines) throws 
RestCallException {
+       public RestResponse pipeTo(Writer w, boolean byLines) throws 
IOException {
                return pipeTo(w, null, byLines);
        }
 
@@ -458,14 +460,10 @@ public class RestResponseBody implements HttpEntity {
         *      The charset to use for the reader.
         *      <br>If <jk>null</jk>, <js>"UTF-8"</js> is used.
         * @return The response object (for method chaining).
-        * @throws RestCallException If an IO exception occurred.
+        * @throws IOException If an IO exception occurred.
         */
-       public RestResponse pipeTo(Writer w, String charset, boolean byLines) 
throws RestCallException {
-               try {
-                       IOPipe.create(asReader(charset), 
w).byLines(byLines).run();
-               } catch (IOException e) {
-                       throw new RestCallException(e);
-               }
+       public RestResponse pipeTo(Writer w, String charset, boolean byLines) 
throws IOException {
+               IOPipe.create(asReader(charset), w).byLines(byLines).run();
                return response;
        }
 
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/ext/SerializedHttpEntity.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/ext/SerializedHttpEntity.java
index 0fa9997..e677f22 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/ext/SerializedHttpEntity.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/ext/SerializedHttpEntity.java
@@ -70,7 +70,7 @@ public final class SerializedHttpEntity extends 
BasicHttpEntity {
                                        }
                                }
                        } catch (SerializeException e) {
-                               throw new 
org.apache.juneau.rest.client2.RestCallException(e);
+                               throw new IOException(e);
                        }
                }
        }
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/logging/ConsoleRestCallLogger.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/logging/ConsoleRestCallLogger.java
index 18adc37..8273080 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/logging/ConsoleRestCallLogger.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/logging/ConsoleRestCallLogger.java
@@ -12,6 +12,10 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.client2.logging;
 
+import java.io.*;
+
+import org.apache.http.*;
+import org.apache.http.protocol.*;
 import org.apache.juneau.rest.client2.*;
 
 /**
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/logging/RestCallLogger.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/logging/RestCallLogger.java
index 129e055..8bf7220 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/logging/RestCallLogger.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/logging/RestCallLogger.java
@@ -23,7 +23,7 @@ import org.apache.juneau.rest.client2.*;
 /**
  * Specialized intercepter for logging calls to a log file.
  */
-public abstract class RestCallLogger implements RestCallInterceptor {
+public abstract class RestCallLogger extends BasicRestCallInterceptor {
 
        /**
         * Returns <jk>true</jk> if the specified request/response should be 
logged.
@@ -64,10 +64,6 @@ public abstract class RestCallLogger implements 
RestCallInterceptor {
        }
 
        @Override /* RestCallInterceptor */
-       public void onInit(RestRequest req) {
-       }
-
-       @Override /* RestCallInterceptor */
        public void onConnect(RestRequest req, RestResponse res) {
                if (shouldLog(req, null))
                        res.getBody().cache();
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
index 0f88b48..dd9d1ad 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
@@ -1155,7 +1155,7 @@ public class MockRestClient extends RestClientBuilder {
 
        @Override /* GENERATED - RestClientBuilder */
        @SuppressWarnings("unchecked")
-       public MockRestClient interceptors(java.lang.Class<? extends 
org.apache.juneau.rest.client2.RestCallInterceptor>...values) {
+       public MockRestClient interceptors(java.lang.Class<? extends 
org.apache.juneau.rest.client2.RestCallInterceptor>...values) throws Exception {
                super.interceptors(values);
                return this;
        }

Reply via email to