You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2011/06/17 11:45:33 UTC

svn commit: r1136827 - /jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java

Author: angela
Date: Fri Jun 17 09:45:33 2011
New Revision: 1136827

URL: http://svn.apache.org/viewvc?rev=1136827&view=rev
Log:
JCR-2995 : create ChangePolling thread on demand

Modified:
    jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java

Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java?rev=1136827&r1=1136826&r2=1136827&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java Fri Jun 17 09:45:33 2011
@@ -131,7 +131,10 @@ public class WorkspaceManager
 
     private final ItemStateFactory isf;
     private final HierarchyManager hierarchyManager;
+
     private final CacheBehaviour cacheBehaviour;
+    private final boolean observationSupported;
+    private final int pollTimeout;
 
     private final IdFactory idFactory;
     private final NamespaceRegistryImpl nsRegistry;
@@ -148,8 +151,10 @@ public class WorkspaceManager
     /**
      * This is the event polling for changes. If <code>null</code>
      * then the underlying repository service does not support observation.
+     * It is also <code>null</code> if {@link CacheBehaviour#INVALIDATE} is
+     * configured and no event listeners have been registered.
      */
-    private final Thread changeFeed;
+    private Thread changeFeed;
 
     /**
      * Flag that indicates that the changeFeed thread should be disposed.
@@ -174,19 +179,21 @@ public class WorkspaceManager
 
     public WorkspaceManager(RepositoryService service, SessionInfo sessionInfo,
                             CacheBehaviour cacheBehaviour, int pollTimeout,
-                            boolean enableObservation)
+                            boolean observationSupported)
         throws RepositoryException {
 
         this.service = service;
         this.sessionInfo = sessionInfo;
         this.cacheBehaviour = cacheBehaviour;
+        this.observationSupported = observationSupported;
+        this.pollTimeout = pollTimeout;
+
         this.nameFactory = service.getNameFactory();
         this.pathFactory = service.getPathFactory();
 
         idFactory = service.getIdFactory();
         nsRegistry = new NamespaceRegistryImpl(this);
         ntRegistry = createNodeTypeRegistry(nsRegistry);
-        changeFeed = createChangeFeed(pollTimeout, enableObservation);
         definitionProvider = createDefinitionProvider(getEffectiveNodeTypeProvider());
 
         TransientItemStateFactory stateFactory = createItemStateFactory();
@@ -349,8 +356,11 @@ public class WorkspaceManager
      * @param listener the new listener.
      * @throws RepositoryException if the listener cannot be registered.
      */
-    public void addEventListener(InternalEventListener listener)
-            throws RepositoryException {
+    public void addEventListener(InternalEventListener listener) throws RepositoryException {
+        if (changeFeed == null) {
+            changeFeed = createChangeFeed(pollTimeout, observationSupported);
+        }
+
         synchronized (listeners) {
             listeners.add(listener);
             EventFilter[] filters = getEventFilters(listeners);