X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fdom%2Fbroker%2FConsumerContextImpl.java;h=0e0088f62a0a8c9eedf2c6dab28988ddbaa8de93;hp=e96b242720e88bbabe918cbde127af6eb0b3d5e8;hb=3f7ac86f0548d587e88ba43e03ec25cc83eed6cf;hpb=cbe83ca3074fa0182d4f079f528bb710a997ced7 diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/ConsumerContextImpl.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/ConsumerContextImpl.java index e96b242720..0e0088f62a 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/ConsumerContextImpl.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/ConsumerContextImpl.java @@ -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 instantiatedServices = MutableClassToInstanceMap - .create(); + private final ClassToInstanceMap 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> rpc(final QName rpc, - final CompositeNode input) { - checkNotClosed(); - return broker.invokeRpcAsync(rpc, input); - } - @Override public T getService(final Class service) { checkNotClosed(); @@ -56,8 +41,8 @@ class ConsumerContextImpl implements ConsumerSession { return localProxy; } final Optional 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 toStop = instantiatedServices.values(); + for (BrokerService brokerService : toStop) { + if (brokerService instanceof AbstractBrokerServiceProxy) { + ((AbstractBrokerServiceProxy) brokerService).close(); + } } - this.closed = true; + broker.consumerSessionClosed(this); } - - Collection 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."); } }