This is an automated email from the ASF dual-hosted git repository.

radu pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-models-impl.git


The following commit(s) were added to refs/heads/master by this push:
     new 2b5c614  SLING-9834 - [Sling Models] Caching bug with reused Servlet 
requests
2b5c614 is described below

commit 2b5c614769d1bcc8d3bd941aaabed8362edad952
Author: Radu Cotescu <[email protected]>
AuthorDate: Tue Oct 20 17:21:29 2020 +0200

    SLING-9834 - [Sling Models] Caching bug with reused Servlet requests
    
    * minor code cleanup
---
 .../sling/models/impl/ModelAdapterFactory.java       |  6 ++----
 .../org/apache/sling/models/impl/CachingTest.java    | 20 +++++++++++---------
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java 
b/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java
index 86cc2ad..d216586 100644
--- a/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java
+++ b/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java
@@ -353,13 +353,11 @@ public class ModelAdapterFactory implements 
AdapterFactory, Runnable, ModelFacto
             ServletRequest request = (ServletRequest) adaptable;
             adaptableCache = (Map<Class<?>, SoftReference<Object>>) 
request.getAttribute(REQUEST_CACHE_ATTRIBUTE);
             if (adaptableCache == null) {
-                adaptableCache = Collections.synchronizedMap(new 
WeakHashMap<Class<?>, SoftReference<Object>>());
+                adaptableCache = Collections.synchronizedMap(new 
WeakHashMap<>());
                 request.setAttribute(REQUEST_CACHE_ATTRIBUTE, adaptableCache);
             }
         } else {
-            adaptableCache = adapterCache.computeIfAbsent(adaptable, k -> {
-                return Collections.synchronizedMap(new WeakHashMap<Class<?>, 
SoftReference<Object>>());
-            });
+            adaptableCache = adapterCache.computeIfAbsent(adaptable, k -> 
Collections.synchronizedMap(new WeakHashMap<>()));
         }
         return adaptableCache;
     }
diff --git a/src/test/java/org/apache/sling/models/impl/CachingTest.java 
b/src/test/java/org/apache/sling/models/impl/CachingTest.java
index 13fef17..20d3cd8 100644
--- a/src/test/java/org/apache/sling/models/impl/CachingTest.java
+++ b/src/test/java/org/apache/sling/models/impl/CachingTest.java
@@ -37,6 +37,8 @@ import org.mockito.Spy;
 import org.mockito.runners.MockitoJUnitRunner;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
@@ -75,7 +77,7 @@ public class CachingTest {
         CachedModel cached1 = factory.getAdapter(request, CachedModel.class);
         CachedModel cached2 = factory.getAdapter(request, CachedModel.class);
 
-        assertTrue(cached1 == cached2);
+        assertSame(cached1, cached2);
         assertEquals("test", cached1.getTestValue());
         assertEquals("test", cached2.getTestValue());
 
@@ -87,7 +89,7 @@ public class CachingTest {
         CachedModel cached1 = factory.getAdapter(resource, CachedModel.class);
         CachedModel cached2 = factory.getAdapter(resource, CachedModel.class);
 
-        assertTrue(cached1 == cached2);
+        assertSame(cached1, cached2);
         assertEquals("test", cached1.getTestValue());
         assertEquals("test", cached2.getTestValue());
 
@@ -99,7 +101,7 @@ public class CachingTest {
         UncachedModel uncached1 = factory.getAdapter(request, 
UncachedModel.class);
         UncachedModel uncached2 = factory.getAdapter(request, 
UncachedModel.class);
 
-        assertTrue(uncached1 != uncached2);
+        assertNotSame(uncached1, uncached2);
         assertEquals("test", uncached1.getTestValue());
         assertEquals("test", uncached2.getTestValue());
 
@@ -111,7 +113,7 @@ public class CachingTest {
         UncachedModel uncached1 = factory.getAdapter(resource, 
UncachedModel.class);
         UncachedModel uncached2 = factory.getAdapter(resource, 
UncachedModel.class);
 
-        assertTrue(uncached1 != uncached2);
+        assertNotSame(uncached1, uncached2);
         assertEquals("test", uncached1.getTestValue());
         assertEquals("test", uncached2.getTestValue());
 
@@ -123,7 +125,7 @@ public class CachingTest {
         org.apache.sling.models.testmodels.interfaces.CachedModel cached1 = 
factory.getAdapter(request, 
org.apache.sling.models.testmodels.interfaces.CachedModel.class);
         org.apache.sling.models.testmodels.interfaces.CachedModel cached2 = 
factory.getAdapter(request, 
org.apache.sling.models.testmodels.interfaces.CachedModel.class);
 
-        assertTrue(cached1 == cached2);
+        assertSame(cached1, cached2);
         assertEquals("test", cached1.getTestValue());
         assertEquals("test", cached2.getTestValue());
 
@@ -135,7 +137,7 @@ public class CachingTest {
         org.apache.sling.models.testmodels.interfaces.UncachedModel uncached1 
= factory.getAdapter(request, 
org.apache.sling.models.testmodels.interfaces.UncachedModel.class);
         org.apache.sling.models.testmodels.interfaces.UncachedModel uncached2 
= factory.getAdapter(request, 
org.apache.sling.models.testmodels.interfaces.UncachedModel.class);
 
-        assertTrue(uncached1 != uncached2);
+        assertNotSame(uncached1, uncached2);
         assertEquals("test", uncached1.getTestValue());
         assertEquals("test", uncached2.getTestValue());
 
@@ -147,7 +149,7 @@ public class CachingTest {
         CachedModel cached1 = factory.getAdapter(request, CachedModel.class);
         CachedModel cached2 = factory.getAdapter(requestWrapper, 
CachedModel.class);
 
-        assertTrue(cached1 == cached2);
+        assertSame(cached1, cached2);
         assertEquals("test", cached1.getTestValue());
         assertEquals("test", cached2.getTestValue());
 
@@ -156,7 +158,7 @@ public class CachingTest {
         // If we clear the request attributes, the sling model is no longer 
cached
         request.clearAttributes();
         CachedModel cached3 = factory.getAdapter(request, CachedModel.class);
-        assertTrue(cached1 != cached3);
+        assertNotSame(cached1, cached3);
     }
 
     @Test
@@ -164,7 +166,7 @@ public class CachingTest {
         org.apache.sling.models.testmodels.interfaces.CachedModel cached1 = 
factory.getAdapter(request, 
org.apache.sling.models.testmodels.interfaces.CachedModel.class);
         org.apache.sling.models.testmodels.interfaces.CachedModel cached2 = 
factory.getAdapter(requestWrapper, 
org.apache.sling.models.testmodels.interfaces.CachedModel.class);
 
-        assertTrue(cached1 == cached2);
+        assertSame(cached1, cached2);
         assertEquals("test", cached1.getTestValue());
         assertEquals("test", cached2.getTestValue());
 

Reply via email to