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();
+ }
}
}