Author: stefanegli
Date: Mon Oct 17 11:36:15 2016
New Revision: 1765246

URL: http://svn.apache.org/viewvc?rev=1765246&view=rev
Log:
SLING-6164 : Introduce support for an optional property names hint to 
ResourceChangeListener

Modified:
    
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/observation/ResourceChangeListener.java
    
sling/trunk/bundles/api/src/main/java/org/apache/sling/spi/resource/provider/ObserverConfiguration.java
    
sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/AbstractListenerTest.java
    
sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrResourceListenerScalabilityTest.java
    
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/BasicObserverConfiguration.java

Modified: 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/observation/ResourceChangeListener.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/observation/ResourceChangeListener.java?rev=1765246&r1=1765245&r2=1765246&view=diff
==============================================================================
--- 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/observation/ResourceChangeListener.java
 (original)
+++ 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/observation/ResourceChangeListener.java
 Mon Oct 17 11:36:15 2016
@@ -93,6 +93,16 @@ public interface ResourceChangeListener
      * {@link ResourceChange.ChangeType}.
      */
     String CHANGES = "resource.change.types";
+    
+    /**
+     * An optional hint indicating to the underlying that for
+     * changes regarding properties (added/removed/changed) the listener
+     * is only interested in those property names listed inhere.
+     * If the underlying supports this, events for property names that
+     * are not enlisted here will not be delivered, however events
+     * concerning nodes are not affected by this hint.
+     */
+    String PROPERTY_NAMES_HINT = "resource.property.names.hint";
 
     /**
      * Report resource changes based on the filter properties of this listener.

Modified: 
sling/trunk/bundles/api/src/main/java/org/apache/sling/spi/resource/provider/ObserverConfiguration.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/spi/resource/provider/ObserverConfiguration.java?rev=1765246&r1=1765245&r2=1765246&view=diff
==============================================================================
--- 
sling/trunk/bundles/api/src/main/java/org/apache/sling/spi/resource/provider/ObserverConfiguration.java
 (original)
+++ 
sling/trunk/bundles/api/src/main/java/org/apache/sling/spi/resource/provider/ObserverConfiguration.java
 Mon Oct 17 11:36:15 2016
@@ -61,6 +61,15 @@ public interface ObserverConfiguration {
     @Nonnull Set<ResourceChange.ChangeType> getChangeTypes();
 
     /**
+     * Set containing the set of property names which
+     * serves as an optional hint for the underlying to 
+     * only report property changes enlisted, ie the
+     * underlying might ignore this.
+     * @return set containing the set of property names
+     */
+    @Nonnull Set<String> getPropertyNamesHint();
+    
+    /**
      * Checks whether a path matches one of the paths of this configuration
      * but is not in the excluded paths set.
      * @param path The path to check

Modified: 
sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/AbstractListenerTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/AbstractListenerTest.java?rev=1765246&r1=1765245&r2=1765246&view=diff
==============================================================================
--- 
sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/AbstractListenerTest.java
 (original)
+++ 
sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/AbstractListenerTest.java
 Mon Oct 17 11:36:15 2016
@@ -164,6 +164,11 @@ public abstract class AbstractListenerTe
                 public boolean matches(String path) {
                     return true;
                 }
+
+                @Override
+                public Set<String> getPropertyNamesHint() {
+                    return new HashSet<String>();
+                }
             };
             return Collections.singletonList(config);
         }

Modified: 
sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrResourceListenerScalabilityTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrResourceListenerScalabilityTest.java?rev=1765246&r1=1765245&r2=1765246&view=diff
==============================================================================
--- 
sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrResourceListenerScalabilityTest.java
 (original)
+++ 
sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrResourceListenerScalabilityTest.java
 Mon Oct 17 11:36:15 2016
@@ -21,6 +21,7 @@ import static org.mockito.Mockito.when;
 
 import java.util.Collections;
 import java.util.EnumSet;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -138,6 +139,11 @@ public class JcrResourceListenerScalabil
                         public boolean matches(String path) {
                             return true;
                         }
+
+                        @Override
+                        public Set<String> getPropertyNamesHint() {
+                            return new HashSet<String>();
+                        }
                     };
                     return Collections.singletonList(config);
                 }

Modified: 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/BasicObserverConfiguration.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/BasicObserverConfiguration.java?rev=1765246&r1=1765245&r2=1765246&view=diff
==============================================================================
--- 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/BasicObserverConfiguration.java
 (original)
+++ 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/BasicObserverConfiguration.java
 Mon Oct 17 11:36:15 2016
@@ -33,6 +33,8 @@ public class BasicObserverConfiguration
     private final PathSet paths;
 
     private final PathSet excludedPaths;
+    
+    private final Set<String> propertyNamesHint = new HashSet<String>();
 
     private final Set<ChangeType> changeTypes;
 
@@ -81,4 +83,9 @@ public class BasicObserverConfiguration
         }
         return false;
     }
+
+    @Override
+    public Set<String> getPropertyNamesHint() {
+        return propertyNamesHint;
+    }
 }


Reply via email to