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