Migrate topology-manager to OSGi DS
[openflowplugin.git] / applications / topology-manager / src / main / java / org / opendaylight / openflowplugin / applications / topology / manager / OperationProcessor.java
index 3312779c8ef1c98926ac3cb1d5bd558ad3dde016..4d440c82cf5f8b966d8115bc5a769fa83db0ecbd 100644 (file)
@@ -9,17 +9,20 @@ package org.opendaylight.openflowplugin.applications.topology.manager;
 
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
-import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import javax.inject.Inject;
 import javax.inject.Singleton;
-import org.apache.aries.blueprint.annotation.service.Reference;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.openflowplugin.common.txchain.TransactionChainManager;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @Singleton
+@Component(service = OperationProcessor.class)
 public final class OperationProcessor implements AutoCloseable, Runnable {
     private static final Logger LOG = LoggerFactory.getLogger(OperationProcessor.class);
     private static final int MAX_TRANSACTION_OPERATIONS = 100;
@@ -32,6 +35,7 @@ public final class OperationProcessor implements AutoCloseable, Runnable {
     private volatile boolean finishing = false;
 
     @Inject
+    @Activate
     public OperationProcessor(@Reference final DataBroker dataBroker) {
         transactionChainManager = new TransactionChainManager(dataBroker, TOPOLOGY_MANAGER);
         transactionChainManager.activateTransactionManager();
@@ -40,6 +44,8 @@ public final class OperationProcessor implements AutoCloseable, Runnable {
         thread = new Thread(this);
         thread.setDaemon(true);
         thread.setName("ofp-topo-expo-" + FlowCapableTopologyProvider.TOPOLOGY_ID);
+        thread.start();
+        LOG.debug("OperationProcessor started");
     }
 
     void enqueueOperation(final TopologyOperation task) {
@@ -50,11 +56,6 @@ public final class OperationProcessor implements AutoCloseable, Runnable {
         }
     }
 
-    @PostConstruct
-    public void start() {
-        thread.start();
-    }
-
     @Override
     public void run() {
         while (!finishing) {
@@ -97,8 +98,9 @@ public final class OperationProcessor implements AutoCloseable, Runnable {
         }
     }
 
-    @Override
     @PreDestroy
+    @Deactivate
+    @Override
     public void close() {
         thread.interrupt();
         try {
@@ -108,7 +110,6 @@ public final class OperationProcessor implements AutoCloseable, Runnable {
         }
 
         transactionChainManager.close();
-
-        LOG.debug("OperationProcessor closed");
+        LOG.debug("OperationProcessor stopped");
     }
 }