Remove use of CheckedFuture in clustering-it-provider
[controller.git] / opendaylight / md-sal / sal-dom-broker / src / main / java / org / opendaylight / controller / sal / dom / broker / ConsumerContextImpl.java
index e96b242720e88bbabe918cbde127af6eb0b3d5e8..0e0088f62a0a8c9eedf2c6dab28988ddbaa8de93 100644 (file)
@@ -7,47 +7,32 @@
  */
 package org.opendaylight.controller.sal.dom.broker;
 
+import com.google.common.base.Optional;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.collect.MutableClassToInstanceMap;
 import java.util.Collection;
-import java.util.concurrent.Future;
-
-import javax.annotation.concurrent.GuardedBy;
-
+import java.util.concurrent.atomic.AtomicBoolean;
 import org.opendaylight.controller.sal.core.api.Broker.ConsumerSession;
 import org.opendaylight.controller.sal.core.api.BrokerService;
 import org.opendaylight.controller.sal.core.api.Consumer;
 import org.opendaylight.controller.sal.dom.broker.osgi.AbstractBrokerServiceProxy;
 import org.opendaylight.controller.sal.dom.broker.osgi.ProxyFactory;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-import org.opendaylight.yangtools.yang.data.api.CompositeNode;
-
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ClassToInstanceMap;
-import com.google.common.collect.MutableClassToInstanceMap;
 
+@Deprecated
 class ConsumerContextImpl implements ConsumerSession {
 
-    private final ClassToInstanceMap<BrokerService> instantiatedServices = MutableClassToInstanceMap
-            .create();
+    private final ClassToInstanceMap<BrokerService> instantiatedServices = MutableClassToInstanceMap.create();
     private final Consumer consumer;
 
-    private BrokerImpl broker = null;
-    @GuardedBy("this")
-    private boolean closed = false;
+    private final BrokerImpl broker;
+    private final AtomicBoolean closed = new AtomicBoolean(false);
 
-    public ConsumerContextImpl(final Consumer provider, final BrokerImpl brokerImpl) {
+    ConsumerContextImpl(final Consumer provider, final BrokerImpl brokerImpl) {
         broker = brokerImpl;
         consumer = provider;
     }
 
-    @Override
-    public Future<RpcResult<CompositeNode>> rpc(final QName rpc,
-            final CompositeNode input) {
-        checkNotClosed();
-        return broker.invokeRpcAsync(rpc, input);
-    }
-
     @Override
     public <T extends BrokerService> T getService(final Class<T> service) {
         checkNotClosed();
@@ -56,8 +41,8 @@ class ConsumerContextImpl implements ConsumerSession {
             return localProxy;
         }
         final Optional<T> serviceImpl = broker.getGlobalService(service);
-        if(serviceImpl.isPresent()) {
-            final T ret = ProxyFactory.createProxy(null,serviceImpl.get());
+        if (serviceImpl.isPresent()) {
+            final T ret = ProxyFactory.createProxy(null, serviceImpl.get());
             instantiatedServices.putInstance(service, ret);
             return ret;
         } else {
@@ -67,44 +52,43 @@ class ConsumerContextImpl implements ConsumerSession {
 
     @Override
     public void close() {
-        synchronized (this) {
-            if (closed) {
-                return;
+        if (closed.compareAndSet(false, true)) {
+            Collection<BrokerService> toStop = instantiatedServices.values();
+            for (BrokerService brokerService : toStop) {
+                if (brokerService instanceof AbstractBrokerServiceProxy<?>) {
+                    ((AbstractBrokerServiceProxy<?>) brokerService).close();
+                }
             }
-            this.closed = true;
+            broker.consumerSessionClosed(this);
         }
-
-        Collection<BrokerService> toStop = instantiatedServices.values();
-        for (BrokerService brokerService : toStop) {
-            if (brokerService instanceof AbstractBrokerServiceProxy<?>) {
-                ((AbstractBrokerServiceProxy<?>) brokerService).close();
-            }
-        }
-        broker.consumerSessionClosed(this);
-        broker = null;
     }
 
+
     @Override
-    public synchronized boolean isClosed() {
-        return closed;
+    public boolean isClosed() {
+        return closed.get();
     }
 
     /**
+     * Gets broker.
+     *
      * @return the broker
      */
-    protected final  BrokerImpl getBrokerChecked() {
+    protected final BrokerImpl getBrokerChecked() {
         checkNotClosed();
         return broker;
     }
 
     /**
+     * Gets consumer.
+     *
      * @return the _consumer
      */
     public Consumer getConsumer() {
         return consumer;
     }
 
-    protected final void checkNotClosed()  {
-        Preconditions.checkState(!closed, "Session is closed.");
+    protected final void checkNotClosed() {
+        Preconditions.checkState(!closed.get(), "Session is closed.");
     }
 }