diff --git a/pom.xml b/pom.xml
index 220de4c..1921b53 100644
--- a/pom.xml
+++ b/pom.xml
@@ -99,7 +99,7 @@
org.apache.sling
org.apache.sling.api
- 2.21.0
+ 2.27.2
provided
diff --git a/src/main/java/org/apache/sling/models/impl/DisposalCallbackRegistryImpl.java b/src/main/java/org/apache/sling/models/impl/DisposalCallbackRegistryImpl.java
index 455beab..36a9134 100644
--- a/src/main/java/org/apache/sling/models/impl/DisposalCallbackRegistryImpl.java
+++ b/src/main/java/org/apache/sling/models/impl/DisposalCallbackRegistryImpl.java
@@ -18,30 +18,88 @@
*/
package org.apache.sling.models.impl;
+import java.io.Closeable;
+import java.lang.ref.PhantomReference;
+import java.lang.ref.ReferenceQueue;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.models.spi.DisposalCallback;
import org.apache.sling.models.spi.DisposalCallbackRegistry;
import org.jetbrains.annotations.NotNull;
public class DisposalCallbackRegistryImpl implements DisposalCallbackRegistry {
- List callbacks = new ArrayList<>();
+ private static final String RESOURCE_RESOLVER_DISPOSABLE =
+ ModelAdapterFactory.class.getName().concat(".Disposable");
+
+ private static final ReferenceQueue