Author: tommaso
Date: Tue Apr  7 14:18:09 2015
New Revision: 1671853

URL: http://svn.apache.org/r1671853
Log:
OAK-2718 - NodeStateSolrServersObserverService should use a BackroundObserver

Modified:
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/NodeStateSolrServersObserverService.java

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/NodeStateSolrServersObserverService.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/NodeStateSolrServersObserverService.java?rev=1671853&r1=1671852&r2=1671853&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/NodeStateSolrServersObserverService.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/NodeStateSolrServersObserverService.java
 Tue Apr  7 14:18:09 2015
@@ -16,27 +16,58 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.solr.osgi;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
+import java.util.ArrayList;
+import java.util.List;
 
+import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard;
 import 
org.apache.jackrabbit.oak.plugins.index.solr.configuration.nodestate.NodeStateSolrServersObserver;
-import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
+import org.apache.jackrabbit.oak.spi.commit.BackgroundObserver;
 import org.apache.jackrabbit.oak.spi.commit.Observer;
-import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
+import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardExecutor;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
 
 /**
  * An OSGi service for {@link 
org.apache.jackrabbit.oak.plugins.index.solr.configuration.nodestate.NodeStateSolrServersObserver}
  */
 @Component(immediate = true)
-@Service(value = Observer.class)
-public class NodeStateSolrServersObserverService implements Observer {
+public class NodeStateSolrServersObserverService {
 
     private final NodeStateSolrServersObserver nodeStateSolrServersObserver = 
new NodeStateSolrServersObserver();
 
-    @Override
-    public void contentChanged(@Nonnull NodeState root, @Nullable CommitInfo 
info) {
-        nodeStateSolrServersObserver.contentChanged(root, info);
+    private WhiteboardExecutor executor;
+
+    private BackgroundObserver backgroundObserver;
+
+    private List<ServiceRegistration> regs = new 
ArrayList<ServiceRegistration>();
+
+    @Activate
+    protected void activate(BundleContext bundleContext) throws Exception {
+
+        Whiteboard whiteboard = new OsgiWhiteboard(bundleContext);
+        executor = new WhiteboardExecutor();
+        executor.start(whiteboard);
+
+        backgroundObserver = new 
BackgroundObserver(nodeStateSolrServersObserver, executor, 5);
+        regs.add(bundleContext.registerService(Observer.class.getName(), 
backgroundObserver, null));
+    }
+
+    @Deactivate
+    protected void deactivate() throws Exception {
+        for (ServiceRegistration reg : regs) {
+            reg.unregister();
+        }
+
+        if (backgroundObserver != null) {
+            backgroundObserver.close();
+        }
+
+        if (executor != null) {
+            executor.stop();
+        }
     }
 }


Reply via email to