Author: stefanegli
Date: Wed Nov 23 17:02:26 2016
New Revision: 1771008
URL: http://svn.apache.org/viewvc?rev=1771008&view=rev
Log:
OAK-5153: explode subtypes for observation listener node type filter recursively
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java?rev=1771008&r1=1771007&r2=1771008&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java
Wed Nov 23 17:02:26 2016
@@ -335,12 +335,7 @@ public class ObservationManagerImpl impl
if (validatedNodeTypeNames != null) {
explodedNodeTypes = newHashSet();
for (String nt : validatedNodeTypeNames) {
- NodeTypeIterator it = ntMgr.getNodeType(nt).getSubtypes();
- while(it.hasNext()) {
- String subnt = String.valueOf(it.next());
- explodedNodeTypes.add(subnt);
- }
- explodedNodeTypes.add(nt);
+ explodeSubtypes(nt, explodedNodeTypes);
}
}
@@ -352,6 +347,18 @@ public class ObservationManagerImpl impl
addEventListener(listener, tracker, filterBuilder.build());
}
+
+ private void explodeSubtypes(String nodeType, Set<String> set) throws
RepositoryException {
+ set.add(nodeType);
+ NodeTypeIterator it = ntMgr.getNodeType(nodeType).getSubtypes();
+ while(it.hasNext()) {
+ String subnt = String.valueOf(it.next());
+ if (!set.contains(subnt)) {
+ set.add(subnt);
+ explodeSubtypes(subnt, set);
+ }
+ }
+ }
private String pathWithoutGlob(String path) {
if (!path.contains("*")) {