Author: mduerig
Date: Wed Mar 26 14:15:52 2014
New Revision: 1581856
URL: http://svn.apache.org/r1581856
Log:
OAK-1606: Omit warnings about accessing commit related info when external
events are excluded
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=1581856&r1=1581855&r2=1581856&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 Mar 26 14:15:52 2014
@@ -167,18 +167,8 @@ public class ObservationManagerImpl impl
*/
public void addEventListener(EventListener listener, FilterProvider
filterProvider) {
// FIXME Add support for FilterProvider in ListenerTracker
- ListenerTracker tracker = new ListenerTracker(
- listener, 0, null, true, null, null, false) {
- @Override
- protected void warn(String message) {
- LOG.warn(DEPRECATED, message, initStackTrace);
- }
-
- @Override
- protected void beforeEventDelivery() {
- sessionDelegate.refreshAtNextAccess();
- }
- };
+ ListenerTracker tracker = new WarningListenerTracker(
+ true, listener, 0, null, true, null, null, false);
addEventListener(listener, tracker, filterProvider);
}
@@ -188,29 +178,21 @@ public class ObservationManagerImpl impl
throws RepositoryException {
FilterBuilder filterBuilder = new FilterBuilder();
+ boolean includeExternal = !(listener instanceof ExcludeExternal);
filterBuilder
.basePath(namePathMapper.getOakPath(absPath))
.includeSessionLocal(!noLocal)
- .includeClusterExternal(!(listener instanceof ExcludeExternal))
+ .includeClusterExternal(includeExternal)
.condition(filterBuilder.all(
- filterBuilder.deleteSubtree(),
- filterBuilder.moveSubtree(),
- filterBuilder.path(isDeep ? STAR_STAR : STAR),
- filterBuilder.eventType(eventTypes),
- filterBuilder.uuid(Selectors.PARENT, uuids),
- filterBuilder.nodeType(Selectors.PARENT,
validateNodeTypeNames(nodeTypeName))));
-
- ListenerTracker tracker = new ListenerTracker(
- listener, eventTypes, absPath, isDeep, uuids, nodeTypeName,
noLocal) {
- @Override
- protected void warn(String message) {
- LOG.warn(DEPRECATED, message, initStackTrace);
- }
- @Override
- protected void beforeEventDelivery() {
- sessionDelegate.refreshAtNextAccess();
- }
- };
+ filterBuilder.deleteSubtree(),
+ filterBuilder.moveSubtree(),
+ filterBuilder.path(isDeep ? STAR_STAR : STAR),
+ filterBuilder.eventType(eventTypes),
+ filterBuilder.uuid(Selectors.PARENT, uuids),
+ filterBuilder.nodeType(Selectors.PARENT,
validateNodeTypeNames(nodeTypeName))));
+
+ ListenerTracker tracker = new WarningListenerTracker(
+ includeExternal, listener, eventTypes, absPath, isDeep, uuids,
nodeTypeName, noLocal);
addEventListener(listener, tracker, filterBuilder.build());
}
@@ -247,22 +229,14 @@ public class ObservationManagerImpl impl
filterBuilder.eventType(eventTypes),
filterBuilder.uuid(Selectors.PARENT, uuids),
filterBuilder.nodeType(Selectors.PARENT,
- validateNodeTypeNames(nodeTypeName))));
+ validateNodeTypeNames(nodeTypeName))
+ ));
filterProviders.add(filterBuilder.build());
}
// FIXME support multiple path in ListenerTracker
- ListenerTracker tracker = new ListenerTracker(
- listener, eventTypes, absPath, isDeep, uuids, nodeTypeName,
noLocal) {
- @Override
- protected void warn(String message) {
- LOG.warn(DEPRECATED, message, initStackTrace);
- }
- @Override
- protected void beforeEventDelivery() {
- sessionDelegate.refreshAtNextAccess();
- }
- };
+ ListenerTracker tracker = new WarningListenerTracker(
+ !noExternal, listener, eventTypes, absPath, isDeep, uuids,
nodeTypeName, noLocal);
addEventListener(listener, tracker, filterProviders);
}
@@ -342,4 +316,27 @@ public class ObservationManagerImpl impl
}
}
+ private class WarningListenerTracker extends ListenerTracker {
+ private final boolean enableWarning;
+
+ public WarningListenerTracker(
+ boolean enableWarning, EventListener listener, int eventTypes,
String absPath,
+ boolean isDeep, String[] uuids, String[] nodeTypeName, boolean
noLocal) {
+ super(listener, eventTypes, absPath, isDeep, uuids, nodeTypeName,
noLocal);
+ this.enableWarning = enableWarning;
+ }
+
+ @Override
+ protected void warn(String message) {
+ if (enableWarning) {
+ LOG.warn(DEPRECATED, message, initStackTrace);
+ }
+ }
+
+ @Override
+ protected void beforeEventDelivery() {
+ sessionDelegate.refreshAtNextAccess();
+ }
+ }
+
}