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());
+        }
     }
 
 

Reply via email to