Author: cziegeler
Date: Mon Feb 15 08:43:51 2016
New Revision: 1730466

URL: http://svn.apache.org/viewvc?rev=1730466&view=rev
Log:
SLING-5521 : Support Closeable for provider state

Modified:
    
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
    
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/legacy/LegacyResourceProviderAdapter.java

Modified: 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java?rev=1730466&r1=1730465&r2=1730466&view=diff
==============================================================================
--- 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
 (original)
+++ 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
 Mon Feb 15 08:43:51 2016
@@ -17,6 +17,7 @@
  */
 package org.apache.sling.resourceresolver.impl.helper;
 
+import java.io.Closeable;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -126,9 +127,15 @@ public class ResourceResolverControl {
      */
     private void logout() {
         for(final Map.Entry<ResourceProviderHandler, Object> entry : 
this.authenticatedProviders.entrySet()) {
-            final ResourceProvider<Object> rp = 
entry.getKey().getResourceProvider();
-            if ( rp != null ) {
-                rp.logout(entry.getValue());
+            try {
+                final ResourceProvider<Object> rp = 
entry.getKey().getResourceProvider();
+                if ( rp != null ) {
+                    rp.logout(entry.getValue());
+                } else if ( entry.getValue() instanceof Closeable ) {
+                    ((Closeable)entry.getValue()).close();
+                }
+            } catch ( final Throwable t ) {
+                // we ignore everything from there to not stop this thread
             }
         }
         this.authenticatedProviders.clear();

Modified: 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/legacy/LegacyResourceProviderAdapter.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/legacy/LegacyResourceProviderAdapter.java?rev=1730466&r1=1730465&r2=1730466&view=diff
==============================================================================
--- 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/legacy/LegacyResourceProviderAdapter.java
 (original)
+++ 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/legacy/LegacyResourceProviderAdapter.java
 Mon Feb 15 08:43:51 2016
@@ -18,6 +18,8 @@
  */
 package org.apache.sling.resourceresolver.impl.legacy;
 
+import java.io.Closeable;
+import java.io.IOException;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Map;
@@ -42,7 +44,7 @@ import org.apache.sling.spi.resource.pro
 import org.apache.sling.spi.resource.provider.ResourceProvider;
 
 @SuppressWarnings("deprecation")
-public class LegacyResourceProviderAdapter extends ResourceProvider<Object> {
+public class LegacyResourceProviderAdapter extends ResourceProvider<Object> 
implements Closeable {
 
     private final org.apache.sling.api.resource.ResourceProvider rp;
 
@@ -152,6 +154,11 @@ public class LegacyResourceProviderAdapt
         }
     }
 
+    @Override
+    public void close() throws IOException {
+        logout(null);
+    }
+
     @SuppressWarnings({ "rawtypes", "unchecked" })
     @Override
     public Resource create(final @Nonnull ResolveContext<Object> ctx, final 
String path,


Reply via email to