This is an automated email from the ASF dual-hosted git repository.
buhhunyx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/master by this push:
new dfb8d8a CacheControlFeature implements Closeable (#708)
dfb8d8a is described below
commit dfb8d8a8caf59e2328b0218a7b9b7f835546d2d6
Author: Alexey Markevich <[email protected]>
AuthorDate: Wed Oct 7 15:23:29 2020 +0300
CacheControlFeature implements Closeable (#708)
---
.../jaxrs/client/cache/CacheControlFeature.java | 2 +-
.../systest/jaxrs/JAXRSClientServerBookTest.java | 197 ++++++++++-----------
2 files changed, 98 insertions(+), 101 deletions(-)
diff --git
a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/cache/CacheControlFeature.java
b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/cache/CacheControlFeature.java
index a4d9c43..cd15c6d 100644
---
a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/cache/CacheControlFeature.java
+++
b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/cache/CacheControlFeature.java
@@ -41,7 +41,7 @@ import javax.ws.rs.ext.Provider;
@Provider
-public class CacheControlFeature implements Feature {
+public class CacheControlFeature implements Feature, Closeable {
private CachingProvider provider;
private CacheManager manager;
private Cache<Key, Entry> cache;
diff --git
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
index 11ecbdc..49512ed 100644
---
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
+++
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
@@ -813,38 +813,37 @@ public class JAXRSClientServerBookTest extends
AbstractBusClientServerTestBase {
"http://localhost:" + PORT + "/bookstore/books/response/123";
// Add the CacheControlFeature to cache books returned by the service
on the client side
- CacheControlFeature cacheControlFeature = new CacheControlFeature();
- cacheControlFeature.setCacheResponseInputStream(true);
- Client client = ClientBuilder.newBuilder()
- .register(cacheControlFeature)
- .build();
- WebTarget target = client.target(endpointAddress);
-
- // First call
- Response response = target.request().get();
- assertEquals(200, response.getStatus());
- Book book = response.readEntity(Book.class);
- assertEquals(123L, book.getId());
-
- MultivaluedMap<String, Object> headers = response.getMetadata();
- assertFalse(headers.isEmpty());
- Object etag = headers.getFirst("ETag");
- assertNotNull(etag);
- assertTrue(etag.toString().startsWith("\""));
- assertTrue(etag.toString().endsWith("\""));
-
- Object cacheControl = headers.getFirst("Cache-Control");
- assertNotNull(cacheControl);
- assertTrue(cacheControl.toString().contains("private"));
- assertTrue(cacheControl.toString().contains("max-age=100000"));
-
- // Now make a second call. This should be retrieved from the client's
cache
- target.request().get();
- assertEquals(200, response.getStatus());
- book = response.readEntity(Book.class);
- assertEquals(123L, book.getId());
-
- cacheControlFeature.close();
+ try (CacheControlFeature cacheControlFeature = new
CacheControlFeature()) {
+ cacheControlFeature.setCacheResponseInputStream(true);
+ Client client = ClientBuilder.newBuilder()
+ .register(cacheControlFeature)
+ .build();
+ WebTarget target = client.target(endpointAddress);
+
+ // First call
+ Response response = target.request().get();
+ assertEquals(200, response.getStatus());
+ Book book = response.readEntity(Book.class);
+ assertEquals(123L, book.getId());
+
+ MultivaluedMap<String, Object> headers = response.getMetadata();
+ assertFalse(headers.isEmpty());
+ Object etag = headers.getFirst("ETag");
+ assertNotNull(etag);
+ assertTrue(etag.toString().startsWith("\""));
+ assertTrue(etag.toString().endsWith("\""));
+
+ Object cacheControl = headers.getFirst("Cache-Control");
+ assertNotNull(cacheControl);
+ assertTrue(cacheControl.toString().contains("private"));
+ assertTrue(cacheControl.toString().contains("max-age=100000"));
+
+ // Now make a second call. This should be retrieved from the
client's cache
+ target.request().get();
+ assertEquals(200, response.getStatus());
+ book = response.readEntity(Book.class);
+ assertEquals(123L, book.getId());
+ }
}
@Test
@@ -854,40 +853,39 @@ public class JAXRSClientServerBookTest extends
AbstractBusClientServerTestBase {
"http://localhost:" + PORT + "/bookstore/books/response2/123";
// Add the CacheControlFeature to cache books returned by the service
on the client side
- CacheControlFeature cacheControlFeature = new CacheControlFeature();
- cacheControlFeature.setCacheResponseInputStream(true);
- Client client = ClientBuilder.newBuilder()
- .register(cacheControlFeature)
- .build();
- WebTarget target = client.target(endpointAddress);
-
- // First call
- Response response = target.request().get();
- assertEquals(200, response.getStatus());
- Book book = response.readEntity(Book.class);
- assertEquals(123L, book.getId());
-
- MultivaluedMap<String, Object> headers = response.getMetadata();
- assertFalse(headers.isEmpty());
- Object etag = headers.getFirst("ETag");
- assertNotNull(etag);
- assertTrue(etag.toString().startsWith("\""));
- assertTrue(etag.toString().endsWith("\""));
-
- Object cacheControl = headers.getFirst("Cache-Control");
- assertNotNull(cacheControl);
- assertTrue(cacheControl.toString().contains("private"));
- assertTrue(cacheControl.toString().contains("max-age=1"));
-
- // Now make a second call. The value in the cache will have expired, so
- // it should call the service again
- Thread.sleep(1500L);
- target.request().get();
- assertEquals(200, response.getStatus());
- book = response.readEntity(Book.class);
- assertEquals(123L, book.getId());
-
- cacheControlFeature.close();
+ try (CacheControlFeature cacheControlFeature = new
CacheControlFeature()) {
+ cacheControlFeature.setCacheResponseInputStream(true);
+ Client client = ClientBuilder.newBuilder()
+ .register(cacheControlFeature)
+ .build();
+ WebTarget target = client.target(endpointAddress);
+
+ // First call
+ Response response = target.request().get();
+ assertEquals(200, response.getStatus());
+ Book book = response.readEntity(Book.class);
+ assertEquals(123L, book.getId());
+
+ MultivaluedMap<String, Object> headers = response.getMetadata();
+ assertFalse(headers.isEmpty());
+ Object etag = headers.getFirst("ETag");
+ assertNotNull(etag);
+ assertTrue(etag.toString().startsWith("\""));
+ assertTrue(etag.toString().endsWith("\""));
+
+ Object cacheControl = headers.getFirst("Cache-Control");
+ assertNotNull(cacheControl);
+ assertTrue(cacheControl.toString().contains("private"));
+ assertTrue(cacheControl.toString().contains("max-age=1"));
+
+ // Now make a second call. The value in the cache will have
expired, so
+ // it should call the service again
+ Thread.sleep(1500L);
+ target.request().get();
+ assertEquals(200, response.getStatus());
+ book = response.readEntity(Book.class);
+ assertEquals(123L, book.getId());
+ }
}
@Test
@@ -897,40 +895,39 @@ public class JAXRSClientServerBookTest extends
AbstractBusClientServerTestBase {
"http://localhost:" + PORT + "/bookstore/books/response3/123";
// Add the CacheControlFeature to cache books returned by the service
on the client side
- CacheControlFeature cacheControlFeature = new CacheControlFeature();
- cacheControlFeature.setCacheResponseInputStream(true);
- Client client = ClientBuilder.newBuilder()
- .register(cacheControlFeature)
- .build();
- WebTarget target = client.target(endpointAddress);
-
- // First call
- Response response = target.request().get();
- assertEquals(200, response.getStatus());
- Book book = response.readEntity(Book.class);
- assertEquals(123L, book.getId());
-
- MultivaluedMap<String, Object> headers = response.getMetadata();
- assertFalse(headers.isEmpty());
- Object etag = headers.getFirst("ETag");
- assertNotNull(etag);
- assertTrue(etag.toString().startsWith("\""));
- assertTrue(etag.toString().endsWith("\""));
-
- Object cacheControl = headers.getFirst("Cache-Control");
- assertNotNull(cacheControl);
- assertTrue(cacheControl.toString().contains("private"));
- assertTrue(cacheControl.toString().contains("max-age=1"));
-
- // Now make a second call. The value in the clients cache will have
expired, so it should call
- // out to the service, which will return 304, and the client will
re-use the cached payload
- Thread.sleep(1500L);
- target.request().get();
- assertEquals(200, response.getStatus());
- book = response.readEntity(Book.class);
- assertEquals(123L, book.getId());
-
- cacheControlFeature.close();
+ try (CacheControlFeature cacheControlFeature = new
CacheControlFeature()) {
+ cacheControlFeature.setCacheResponseInputStream(true);
+ Client client = ClientBuilder.newBuilder()
+ .register(cacheControlFeature)
+ .build();
+ WebTarget target = client.target(endpointAddress);
+
+ // First call
+ Response response = target.request().get();
+ assertEquals(200, response.getStatus());
+ Book book = response.readEntity(Book.class);
+ assertEquals(123L, book.getId());
+
+ MultivaluedMap<String, Object> headers = response.getMetadata();
+ assertFalse(headers.isEmpty());
+ Object etag = headers.getFirst("ETag");
+ assertNotNull(etag);
+ assertTrue(etag.toString().startsWith("\""));
+ assertTrue(etag.toString().endsWith("\""));
+
+ Object cacheControl = headers.getFirst("Cache-Control");
+ assertNotNull(cacheControl);
+ assertTrue(cacheControl.toString().contains("private"));
+ assertTrue(cacheControl.toString().contains("max-age=1"));
+
+ // Now make a second call. The value in the clients cache will
have expired, so it should call
+ // out to the service, which will return 304, and the client will
re-use the cached payload
+ Thread.sleep(1500L);
+ target.request().get();
+ assertEquals(200, response.getStatus());
+ book = response.readEntity(Book.class);
+ assertEquals(123L, book.getId());
+ }
}