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 64bde2a RestClient tests
64bde2a is described below
commit 64bde2ae99748170c2f6e4daa5d459da2963bd52
Author: JamesBognar <[email protected]>
AuthorDate: Sat Jun 13 12:57:59 2020 -0400
RestClient tests
---
.../org/apache/juneau/rest/test/MockRestTest.java | 58 --------
.../java/org/apache/juneau/rest/test/Root.java | 1 -
.../org/apache/juneau/rest/test/_TestSuite.java | 6 -
.../rest/test/client/RestClientResource.java | 38 -----
.../juneau/rest/test/client/RestClientTest.java | 157 ---------------------
juneau-rest/juneau-rest-client-utest/pom.xml | 5 +
.../juneau/rest/client2}/ClientFuturesTest.java | 4 +-
.../apache/juneau/rest/client2}/FormDataTest.java | 6 +-
.../juneau/rest/client2}/InterfaceProxyTest.java | 2 +-
.../juneau/rest/client2}/RequestBeanProxyTest.java | 2 +-
.../apache/juneau/rest/client2/RestClientTest.java | 57 +++++++-
.../rest/client2/BasicRestCallInterceptor.java | 11 --
.../juneau/rest/client2/RestCallInterceptor.java | 4 +-
.../org/apache/juneau/rest/client2/RestClient.java | 43 ++++--
.../juneau/rest/client2/RestClientBuilder.java | 51 +++++--
.../apache/juneau/rest/client2/RestRequest.java | 11 +-
.../apache/juneau/rest/client2/RestResponse.java | 6 +-
.../juneau/rest/mock2/MockRestClientBuilder.java | 5 +-
18 files changed, 139 insertions(+), 328 deletions(-)
diff --git
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/MockRestTest.java
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/MockRestTest.java
deleted file mode 100644
index 58f465b..0000000
---
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/MockRestTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-//
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file *
-// * distributed with this work for additional information regarding copyright
ownership. The ASF licenses this file *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance *
-// * with the License. You may obtain a copy of the License at
*
-// *
*
-// * http://www.apache.org/licenses/LICENSE-2.0
*
-// *
*
-// * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
-// * specific language governing permissions and limitations under the
License. *
-//
***************************************************************************************************************************
-package org.apache.juneau.rest.test;
-
-import static org.apache.juneau.http.HttpMethodName.*;
-import static org.junit.Assert.*;
-import static org.junit.runners.MethodSorters.*;
-
-import org.apache.juneau.http.annotation.Body;
-import org.apache.juneau.json.*;
-import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.client2.*;
-import org.apache.juneau.rest.mock2.*;
-import org.junit.*;
-
-@FixMethodOrder(NAME_ASCENDING)
-public class MockRestTest {
-
-
//=================================================================================================================
- // Basic tests
-
//=================================================================================================================
-
- @Rest
- public static class A {
- @RestMethod(name=PUT, path="/a01")
- public String a01(@Body String body) {
- return body;
- }
-
- @RestMethod(name=PUT, path="/a02",
serializers=JsonSerializer.class, parsers=JsonParser.class)
- public String a02(@Body String body) {
- return body;
- }
- }
-
- @Test
- public void a01() throws Exception {
- RestClient rc = MockRestClient.build(A.class);
- assertEquals("OK", rc.put("/a01",
"OK").run().getBody().asString());
- }
-
- @Test
- public void a02() throws Exception {
- RestClient rc = MockRestClient.buildJson(A.class);
- assertEquals("OK", rc.put("/a02",
"OK").run().getBody().as(String.class));
- }
-}
-
diff --git
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/Root.java
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/Root.java
index e2b0a4e..ee2e5e2 100644
---
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/Root.java
+++
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/Root.java
@@ -28,7 +28,6 @@ import org.apache.juneau.rest.test.client.*;
LogsResource.class,
ConfigResource.class,
LargePojosResource.class,
- RestClientResource.class,
ThirdPartyProxyResource.class,
ShutdownResource.class,
}
diff --git
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
index f3ad721..cbc9247 100644
---
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
+++
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
@@ -25,13 +25,7 @@ import org.junit.runners.Suite.*;
*/
@RunWith(Suite.class)
@SuiteClasses({
- ClientFuturesTest.class,
ConfigTest.class,
- FormDataTest.class,
- InterfaceProxyTest.class,
- MockRestTest.class,
- RequestBeanProxyTest.class,
- RestClientTest.class,
ThirdPartyProxyTest.class,
})
public class _TestSuite {
diff --git
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RestClientResource.java
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RestClientResource.java
deleted file mode 100644
index 3c74a2a..0000000
---
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RestClientResource.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file *
-// * distributed with this work for additional information regarding copyright
ownership. The ASF licenses this file *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance *
-// * with the License. You may obtain a copy of the License at
*
-// *
*
-// * http://www.apache.org/licenses/LICENSE-2.0
*
-// *
*
-// * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
-// * specific language governing permissions and limitations under the
License. *
-//
***************************************************************************************************************************
-package org.apache.juneau.rest.test.client;
-
-import static org.apache.juneau.http.HttpMethodName.*;
-
-import java.io.*;
-
-import org.apache.juneau.rest.*;
-import org.apache.juneau.rest.annotation.*;
-
-/**
- * JUnit automated testcase resource.
- */
-@Rest(
- path="/testRestClient"
-)
-public class RestClientResource extends BasicRestServlet {
- private static final long serialVersionUID = 1L;
-
-
//====================================================================================================
- // Echo response
-
//====================================================================================================
- @RestMethod(name=POST, path="/")
- public Reader test1(RestRequest req) throws Exception {
- return new StringReader(req.getBody().asString());
- }
-}
diff --git
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RestClientTest.java
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RestClientTest.java
deleted file mode 100644
index f92dad8..0000000
---
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RestClientTest.java
+++ /dev/null
@@ -1,157 +0,0 @@
-//
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file *
-// * distributed with this work for additional information regarding copyright
ownership. The ASF licenses this file *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance *
-// * with the License. You may obtain a copy of the License at
*
-// *
*
-// * http://www.apache.org/licenses/LICENSE-2.0
*
-// *
*
-// * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
-// * specific language governing permissions and limitations under the
License. *
-//
***************************************************************************************************************************
-package org.apache.juneau.rest.test.client;
-
-import static org.apache.juneau.rest.testutils.TestUtils.*;
-import static org.junit.Assert.*;
-import static org.junit.runners.MethodSorters.*;
-
-import java.util.regex.*;
-
-import org.apache.http.entity.*;
-import org.apache.juneau.rest.client2.*;
-import org.apache.juneau.rest.test.*;
-import org.apache.juneau.utils.*;
-import org.junit.*;
-
-@FixMethodOrder(NAME_ASCENDING)
-public class RestClientTest extends RestTestcase {
-
- private static String URL = "/testRestClient";
-
-
//====================================================================================================
- // successPattern()
-
//====================================================================================================
- @Test
- public void testSuccessPattern() throws Exception {
- RestClient c = TestMicroservice.DEFAULT_CLIENT;
-
- Mutable<Integer> rc = new Mutable<>();
- Mutable<String> r = new Mutable<>();
- c.post(URL, new StringEntity("xxxSUCCESSxxx"))
- .run()
- .getStatusCode(rc)
- .cacheBody()
- .assertBody().contains("SUCCESS")
- .getBody().asString(r);
- assertEquals("xxxSUCCESSxxx", r.get());
- assertEquals(200, rc.get().intValue());
-
- try {
- c.post(URL, new StringEntity("xxxFAILURExxx"))
- .run()
- .assertBody().contains("SUCCESS");
- fail();
- } catch (AssertionError e) {
- // OK
- }
- }
-
-
//====================================================================================================
- // failurePattern()
-
//====================================================================================================
- @Test
- public void testFailurePattern() throws Exception {
- RestClient c = TestMicroservice.DEFAULT_CLIENT;
-
- Mutable<Integer> rc = new Mutable<>();
- Mutable<String> r = new Mutable<>();
- c.post(URL, new StringEntity("xxxSUCCESSxxx"))
- .run()
- .getStatusCode(rc)
- .cacheBody()
- .assertBody().passes(x -> ! x.contains("FAILURE"))
- .getBody().asString(r);
- assertEquals("xxxSUCCESSxxx", r.get());
- assertEquals(200, rc.get().intValue());
-
- try {
- c.post(URL, new StringEntity("xxxFAILURExxx"))
- .run()
- .assertBody().passes(x -> !
x.contains("FAILURE"));
- fail();
- } catch (AssertionError e) {
- // OK
- }
- }
-
-
//====================================================================================================
- // captureResponse()/getCapturedResponse()
-
//====================================================================================================
- @Test
- public void testCaptureResponse() throws Exception {
- RestClient c = TestMicroservice.DEFAULT_CLIENT;
- RestResponse r = c
- .post(URL, new StringEntity("xxx"))
- .run()
- .cacheBody()
- .getBody().toResponse();
-
- assertEquals("xxx", r.getBody().asString());
- assertEquals("xxx", r.getBody().asString());
-
- r = c.post(URL, new StringEntity("xxx")).run();
- assertEquals("xxx", r.getBody().asString());
-
- try {
- r.getBody().asString();
- fail();
- } catch (IllegalStateException e) {
- assertEquals("Method cannot be called. Response has
already been consumed. Consider using the RestResponse.cacheBody() method.",
e.getLocalizedMessage());
- }
- }
-
-
//====================================================================================================
- // addResponsePattern()
-
//====================================================================================================
- @Test
- public void testAddResponsePattern() throws Exception {
- RestClient c = TestMicroservice.DEFAULT_CLIENT;
- String r;
-
- Mutable<Matcher> m = Mutable.create();
- r = c.post(URL, new StringEntity("x=1,y=2"))
- .run()
- .cacheBody()
- .getBody().asMatcher(m, "x=(\\d+),y=(\\S+)")
- .getBody().asString();
- assertEquals("x=1,y=2", r);
- assertTrue(m.get().matches());
- assertObjectEquals("['x=1,y=2','1','2']",
m.get().toMatchResult());
-
- r = c.post(URL, new StringEntity("x=1,y=2\nx=3,y=4"))
- .run()
- .cacheBody()
- .getBody().asMatcher(m, "x=(\\d+),y=(\\S+)")
- .getBody().asString();
- assertEquals("x=1,y=2\nx=3,y=4", r);
- assertTrue(m.get().find());
- assertObjectEquals("['x=1,y=2','1','2']",
m.get().toMatchResult());
- assertTrue(m.get().find());
- assertObjectEquals("['x=3,y=4','3','4']",
m.get().toMatchResult());
-
- c.post(URL, new
StringEntity("x=1")).run().getBody().asMatcher("x=(\\d+),y=(\\S+)");
- assertFalse(m.get().find());
-
- Mutable<Matcher> m2 = Mutable.create();
- c.post(URL, new StringEntity("x=1,y=2"))
- .run()
- .cacheBody()
- .getBody().asMatcher(m, "x=(\\d+),y=(\\S+)")
- .getBody().asMatcher(m2, "x=(\\d+),y=(\\S+)");
- assertTrue(m.get().matches());
- assertTrue(m2.get().matches());
- assertObjectEquals("['x=1,y=2','1','2']",
m.get().toMatchResult());
- assertObjectEquals("['x=1,y=2','1','2']",
m2.get().toMatchResult());
- }
-}
diff --git a/juneau-rest/juneau-rest-client-utest/pom.xml
b/juneau-rest/juneau-rest-client-utest/pom.xml
index 4426562..e8a6135 100644
--- a/juneau-rest/juneau-rest-client-utest/pom.xml
+++ b/juneau-rest/juneau-rest-client-utest/pom.xml
@@ -56,6 +56,11 @@
</dependency>
<dependency>
<groupId>org.apache.juneau</groupId>
+ <artifactId>juneau-rest-server-rdf</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.juneau</groupId>
<artifactId>juneau-core-utest</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
diff --git
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ClientFuturesTest.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/ClientFuturesTest.java
similarity index 93%
rename from
juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ClientFuturesTest.java
rename to
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/ClientFuturesTest.java
index a43a57f..bab1196 100644
---
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ClientFuturesTest.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/ClientFuturesTest.java
@@ -10,7 +10,7 @@
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
// * specific language governing permissions and limitations under the
License. *
//
***************************************************************************************************************************
-package org.apache.juneau.rest.test.client;
+package org.apache.juneau.rest.client2;
import static org.apache.juneau.rest.testutils.TestUtils.*;
import static org.junit.Assert.*;
@@ -21,8 +21,6 @@ import java.util.concurrent.*;
import org.apache.juneau.collections.*;
import org.apache.juneau.rest.RestRequest;
import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.client2.*;
-import org.apache.juneau.rest.client2.RestResponse;
import org.apache.juneau.rest.mock2.*;
import org.junit.*;
diff --git
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/FormDataTest.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/FormDataTest.java
similarity index 94%
rename from
juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/FormDataTest.java
rename to
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/FormDataTest.java
index 24fb3c1..3d18668 100644
---
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/FormDataTest.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/FormDataTest.java
@@ -10,7 +10,7 @@
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
// * specific language governing permissions and limitations under the
License. *
//
***************************************************************************************************************************
-package org.apache.juneau.rest.test.client;
+package org.apache.juneau.rest.client2;
import static org.apache.juneau.internal.IOUtils.*;
import static org.junit.Assert.*;
@@ -23,13 +23,11 @@ import org.apache.juneau.collections.*;
import org.apache.juneau.http.*;
import org.apache.juneau.rest.RestRequest;
import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.client2.*;
import org.apache.juneau.rest.mock2.*;
-import org.apache.juneau.rest.test.*;
import org.junit.*;
@FixMethodOrder(NAME_ASCENDING)
-public class FormDataTest extends RestTestcase {
+public class FormDataTest {
//=================================================================================================================
// Basic tests
diff --git
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/InterfaceProxyTest.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/InterfaceProxyTest.java
similarity index 97%
rename from
juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/InterfaceProxyTest.java
rename to
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/InterfaceProxyTest.java
index f24970d..04e94d0 100644
---
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/InterfaceProxyTest.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/InterfaceProxyTest.java
@@ -10,7 +10,7 @@
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
// * specific language governing permissions and limitations under the
License. *
//
***************************************************************************************************************************
-package org.apache.juneau.rest.test.client;
+package org.apache.juneau.rest.client2;
import static java.util.Arrays.*;
import static org.apache.juneau.http.HttpMethodName.*;
diff --git
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RequestBeanProxyTest.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RequestBeanProxyTest.java
similarity index 97%
rename from
juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RequestBeanProxyTest.java
rename to
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RequestBeanProxyTest.java
index b534334..453b644 100644
---
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RequestBeanProxyTest.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RequestBeanProxyTest.java
@@ -10,7 +10,7 @@
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
// * specific language governing permissions and limitations under the
License. *
//
***************************************************************************************************************************
-package org.apache.juneau.rest.test.client;
+package org.apache.juneau.rest.client2;
import static org.apache.juneau.http.HttpMethodName.*;
import static org.apache.juneau.internal.ArrayUtils.*;
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index 59f9a89..4781abb 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -889,6 +889,7 @@ public class RestClientTest {
public static class B02a extends BasicRestCallInterceptor {
@Override /* RestCallInterceptor */
public void onConnect(RestRequest req, RestResponse res) throws
Exception {
+ super.onConnect(req, res);
req.log(Level.WARNING, "Foo");
req.log(Level.WARNING, new RuntimeException(), "Foo");
res.log(Level.WARNING, "Foo");
@@ -896,7 +897,6 @@ public class RestClientTest {
}
}
- @SuppressWarnings("unchecked")
@Test
public void b02a_loggingOther() throws Exception {
MockLogger ml = new MockLogger();
@@ -936,6 +936,60 @@ public class RestClientTest {
assertTrue(B03.METHOD_CALLED);
}
+ public static class B04a extends BasicRestCallInterceptor {
+ @Override /* HttpRequestInterceptor */
+ public void onInit(RestRequest req) throws Exception { throw
new RuntimeException("foo"); }
+ }
+ public static class B04d extends BasicRestCallInterceptor {
+ @Override /* RestCallInterceptor */
+ public void onConnect(RestRequest req, RestResponse res) throws
Exception { throw new RuntimeException("foo"); }
+ }
+ public static class B04e extends BasicRestCallInterceptor {
+ @Override /* RestCallInterceptor */
+ public void onClose(RestRequest req, RestResponse res) throws
Exception { throw new RuntimeException("foo"); }
+ }
+
+ @Test
+ public void b04_restCallInterceptor_exceptionHandling() throws
Exception {
+ try {
+ MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .interceptors(B04a.class)
+ .build()
+ .post("/bean", bean)
+ .complete();
+ fail();
+ } catch (RestCallException e) {
+ assertEquals("foo",
e.getCause(RuntimeException.class).getMessage());
+ }
+ try {
+ MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .interceptors(B04d.class)
+ .build()
+ .post("/bean", bean)
+ .complete();
+ fail();
+ } catch (RestCallException e) {
+ assertEquals("foo",
e.getCause(RuntimeException.class).getMessage());
+ }
+ try {
+ MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .interceptors(B04e.class)
+ .build()
+ .post("/bean", bean)
+ .complete();
+ fail();
+ } catch (RestCallException e) {
+ assertEquals("foo",
e.getCause(RuntimeException.class).getMessage());
+ }
+ }
+
+
//------------------------------------------------------------------------------------------------------------------
// Passthrough methods for HttpClientBuilder.
//------------------------------------------------------------------------------------------------------------------
@@ -2971,7 +3025,6 @@ public class RestClientTest {
}
}
- @SuppressWarnings("unchecked")
@Test
public void k07_restClient_interceptorsClasses() throws Exception {
MockRestClient
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 95c3412..8e7dfb6 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,11 +12,6 @@
//
***************************************************************************************************************************
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}.
*
@@ -27,12 +22,6 @@ 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/RestCallInterceptor.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestCallInterceptor.java
index fd26b3a..91c2d82 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,8 +12,6 @@
//
***************************************************************************************************************************
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.
@@ -48,7 +46,7 @@ import org.apache.http.*;
* <li class='jm'>{@link
RestClientBuilder#interceptors(RestCallInterceptor...)}
* </ul>
*/
-public interface RestCallInterceptor extends HttpRequestInterceptor,
HttpResponseInterceptor {
+public interface RestCallInterceptor {
/**
* 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/RestClient.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
index 27d2dbd..fd5bad5 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
@@ -949,7 +949,7 @@ import org.apache.http.client.CookieStore;
* </ul>
*/
@ConfigurableContext(nocache=true)
-public class RestClient extends BeanContext implements HttpClient, Closeable,
RestCallHandler {
+public class RestClient extends BeanContext implements HttpClient, Closeable,
RestCallHandler, RestCallInterceptor {
//-------------------------------------------------------------------------------------------------------------------
// Configurable properties
@@ -2818,7 +2818,7 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
for (Object o : formData)
req.formData(toFormData(o));
- req.interceptors(interceptors);
+ onInit(req);
return req;
}
@@ -3275,7 +3275,6 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
*
* <p>
* Subclasses can override this method to intercept the request and
perform special modifications.
- * The default behavior is a no-op.
*
* <ul class='seealso'>
* <li class='jf'>{@link RestClient#RESTCLIENT_interceptors}
@@ -3284,10 +3283,16 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
* </ul>
*
* @param req The HTTP request.
- * @throws Exception Any exception can be thrown.
+ * @throws RestCallException If any of the interceptors threw an
exception.
*/
- public void onInit(RestRequest req) throws Exception {
- // Default is a no-op.
+ @Override
+ public void onInit(RestRequest req) throws RestCallException {
+ try {
+ for (RestCallInterceptor rci : interceptors)
+ rci.onInit(req);
+ } catch (Exception e) {
+ throw RestCallException.create(e);
+ }
}
/**
@@ -3295,7 +3300,6 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
*
* <p>
* Subclasses can override this method to intercept the response and
perform special modifications.
- * The default behavior is a no-op.
*
* <ul class='seealso'>
* <li class='jf'>{@link RestClient#RESTCLIENT_interceptors}
@@ -3305,10 +3309,16 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
*
* @param req The HTTP request.
* @param res The HTTP response.
- * @throws Exception Any exception can be thrown.
+ * @throws RestCallException If any of the interceptors threw an
exception.
*/
- public void onConnect(RestRequest req, RestResponse res) throws
Exception {
- // Default is a no-op.
+ @Override
+ public void onConnect(RestRequest req, RestResponse res) throws
RestCallException {
+ try {
+ for (RestCallInterceptor rci : interceptors)
+ rci.onConnect(req, res);
+ } catch (Exception e) {
+ throw RestCallException.create(e);
+ }
}
/**
@@ -3316,7 +3326,6 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
*
* <p>
* Subclasses can override this method to handle any cleanup operations.
- * The default behavior is a no-op.
*
* <ul class='seealso'>
* <li class='jf'>{@link RestClient#RESTCLIENT_interceptors}
@@ -3326,10 +3335,16 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
*
* @param req The HTTP request.
* @param res The HTTP response.
- * @throws Exception Any exception can be thrown.
+ * @throws RestCallException If any of the interceptors threw an
exception.
*/
- public void onClose(RestRequest req, RestResponse res) throws Exception
{
- // Default is a no-op.
+ @Override
+ public void onClose(RestRequest req, RestResponse res) throws
RestCallException {
+ try {
+ for (RestCallInterceptor rci : interceptors)
+ rci.onClose(req, res);
+ } catch (Exception e) {
+ throw RestCallException.create(e);
+ }
}
//------------------------------------------------------------------------------------------------
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 5c334ed..dddc00b 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
@@ -2763,17 +2763,27 @@ public class RestClientBuilder extends
BeanContextBuilder {
* <li class='jf'>{@link RestClient#RESTCLIENT_interceptors}
* </ul>
*
- * @param values The values to add to this setting.
+ * @param values
+ * The values to add to this setting.
+ * <br>Can be implementations of any of the following:
+ * <ul>
+ * <li class='jic'>{@link RestCallInterceptor}
+ * <li class='jic'>{@link HttpRequestInterceptor}
+ * <li class='jic'>{@link HttpResponseInterceptor}
+ * </ul>
* @return This object (for method chaining).
* @throws Exception If one or more interceptors could not be created.
*/
- @SuppressWarnings("unchecked")
@FluentSetter
- 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);
+ public RestClientBuilder interceptors(Class<?>...values) throws
Exception {
+ for (Class<?> c : values) {
+ ClassInfo ci = ClassInfo.of(c);
+ if (ci.isChildOfAny(RestCallInterceptor.class,
HttpRequestInterceptor.class, HttpResponseInterceptor.class))
+ interceptors(ci.newInstance());
+ else
+ throw new ConfigException("Invalid class of
type ''{0}'' passed to RestClientBuilder.interceptors.", ci.getSimpleName());
+ }
+ return this;
}
/**
@@ -2824,16 +2834,31 @@ public class RestClientBuilder extends
BeanContextBuilder {
* <li class='jf'>{@link RestClient#RESTCLIENT_interceptors}
* </ul>
*
- * @param value The values to add to this setting.
+ * @param value
+ * The values to add to this setting.
+ * <br>Can be implementations of any of the following:
+ * <ul>
+ * <li class='jic'>{@link RestCallInterceptor}
+ * <li class='jic'>{@link HttpRequestInterceptor}
+ * <li class='jic'>{@link HttpResponseInterceptor}
+ * </ul>
* @return This object (for method chaining).
*/
@FluentSetter
- public RestClientBuilder interceptors(RestCallInterceptor...value) {
- for (RestCallInterceptor r : value) {
- addInterceptorLast((HttpRequestInterceptor)r);
- addInterceptorLast((HttpResponseInterceptor)r);
+ public RestClientBuilder interceptors(Object...value) {
+ List<RestCallInterceptor> l = new ArrayList<>();
+ for (Object o : value) {
+ ClassInfo ci = ClassInfo.of(o);
+ if (! ci.isChildOfAny(HttpRequestInterceptor.class,
HttpResponseInterceptor.class, RestCallInterceptor.class))
+ throw new ConfigException("Invalid object of
type ''{0}'' passed to RestClientBuilder.interceptors.", ci.getSimpleName());
+ if (o instanceof HttpRequestInterceptor)
+ addInterceptorLast((HttpRequestInterceptor)o);
+ if (o instanceof HttpResponseInterceptor)
+ addInterceptorLast((HttpResponseInterceptor)o);
+ if (o instanceof RestCallInterceptor)
+ l.add((RestCallInterceptor)o);
}
- return prependTo(RESTCLIENT_interceptors, value);
+ return prependTo(RESTCLIENT_interceptors, l);
}
/**
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
index 637f671..17bb007 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
@@ -685,16 +685,11 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
* @throws RestCallException If init method on interceptor threw an
exception.
*/
public RestRequest interceptors(RestCallInterceptor...interceptors)
throws RestCallException {
- for (RestCallInterceptor i : interceptors) {
- this.interceptors.add(i);
- try {
+ try {
+ for (RestCallInterceptor i : interceptors) {
+ this.interceptors.add(i);
i.onInit(this);
- } catch (Exception e) {
- throw RestCallException.create(e);
}
- }
- try {
- client.onInit(this);
} catch (Exception e) {
throw RestCallException.create(e);
}
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponse.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponse.java
index e2d3e4c..fcab39b 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponse.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponse.java
@@ -1001,11 +1001,7 @@ public class RestResponse implements HttpResponse {
throw RestCallException.create(e);
}
}
- try {
- client.onClose(request, this);
- } catch (Exception e) {
- throw RestCallException.create(e);
- }
+ client.onClose(request, this);
}
//------------------------------------------------------------------------------------------------------------------
diff --git
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
index 6c6d1d6..8739c14 100644
---
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
+++
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClientBuilder.java
@@ -1078,14 +1078,13 @@ public class MockRestClientBuilder extends
RestClientBuilder {
}
@Override /* GENERATED - RestClientBuilder */
- @SuppressWarnings("unchecked")
- public MockRestClientBuilder interceptors(java.lang.Class<? extends
org.apache.juneau.rest.client2.RestCallInterceptor>...values) throws Exception{
+ public MockRestClientBuilder interceptors(java.lang.Class<?>...values)
throws Exception{
super.interceptors(values);
return this;
}
@Override /* GENERATED - RestClientBuilder */
- public MockRestClientBuilder interceptors(RestCallInterceptor...value) {
+ public MockRestClientBuilder interceptors(Object...value) {
super.interceptors(value);
return this;
}