X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fdom%2Fbroker%2FBrokerImpl.java;h=dbf08758d66c7e3f0aef24e2601652d20079f1bf;hb=3f7ac86f0548d587e88ba43e03ec25cc83eed6cf;hp=17d8229675376242a5d3c843ee4f198e08eabde3;hpb=1e884647502a8d91f8a57bde8193c60b9bbcce0d;p=controller.git diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/BrokerImpl.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/BrokerImpl.java index 17d8229675..dbf08758d6 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/BrokerImpl.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/BrokerImpl.java @@ -12,6 +12,11 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ClassToInstanceMap; import com.google.common.collect.ImmutableClassToInstanceMap; import com.google.common.util.concurrent.CheckedFuture; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; import org.opendaylight.controller.md.sal.dom.api.DOMRpcAvailabilityListener; import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; import org.opendaylight.controller.md.sal.dom.api.DOMRpcIdentifier; @@ -32,14 +37,9 @@ import org.osgi.framework.BundleContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - +@Deprecated public class BrokerImpl implements Broker, DOMRpcProviderService, DOMRpcService, AutoCloseable { - private final static Logger log = LoggerFactory.getLogger(BrokerImpl.class); + private static final Logger LOG = LoggerFactory.getLogger(BrokerImpl.class); // Broker Generic Context private final Set sessions = Collections @@ -47,17 +47,23 @@ public class BrokerImpl implements Broker, DOMRpcProviderService, DOMRpcService, private final Set providerSessions = Collections .synchronizedSet(new HashSet()); - private AutoCloseable deactivator = null; + private AutoCloseable deactivator; - private DOMRpcRouter router = null; + private final DOMRpcService rpcService; + private final DOMRpcProviderService rpcProvider; private final ClassToInstanceMap services; - public BrokerImpl(final DOMRpcRouter router,final ClassToInstanceMap services) { - this.router = Preconditions.checkNotNull(router, "RPC Router must not be null"); - this.services = ImmutableClassToInstanceMap.copyOf(services); + public BrokerImpl(final DOMRpcRouter router,final ClassToInstanceMap services) { + this(router, router, services); } + public BrokerImpl(final DOMRpcService rpcService, final DOMRpcProviderService rpcProvider, + final ClassToInstanceMap services) { + this.rpcService = Preconditions.checkNotNull(rpcService, "DOMRpcService must not be null"); + this.rpcProvider = Preconditions.checkNotNull(rpcProvider, "DOMRpcProviderService must not be null"); + this.services = ImmutableClassToInstanceMap.copyOf(services); + } @Override public ConsumerSession registerConsumer(final Consumer consumer, @@ -65,18 +71,39 @@ public class BrokerImpl implements Broker, DOMRpcProviderService, DOMRpcService, return registerConsumer(consumer); } + @Override + public ConsumerSession registerConsumer(final Consumer consumer) { + checkPredicates(consumer); + LOG.trace("Registering consumer {}", consumer); + final ConsumerContextImpl session = newSessionFor(consumer); + consumer.onSessionInitiated(session); + sessions.add(session); + return session; + } + @Override public ProviderSession registerProvider(final Provider provider, final BundleContext ctx) { return registerProvider(provider); } + @Override + public ProviderSession registerProvider(final Provider provider) { + checkPredicates(provider); + final ProviderContextImpl session = newSessionFor(provider); + provider.onSessionInitiated(session); + providerSessions.add(session); + return session; + } + // Validation private void checkPredicates(final Provider prov) { Preconditions.checkNotNull(prov, "Provider should not be null."); - for (ProviderContextImpl session : providerSessions) { - if (prov.equals(session.getProvider())) { - throw new IllegalStateException("Provider already registered"); + synchronized (providerSessions) { + for (final ProviderContextImpl session : providerSessions) { + if (prov.equals(session.getProvider())) { + throw new IllegalStateException("Provider already registered"); + } } } @@ -84,21 +111,23 @@ public class BrokerImpl implements Broker, DOMRpcProviderService, DOMRpcService, private void checkPredicates(final Consumer cons) { Preconditions.checkNotNull(cons, "Consumer should not be null."); - for (ConsumerContextImpl session : sessions) { - if (cons.equals(session.getConsumer())) { - throw new IllegalStateException("Consumer already registered"); + synchronized (sessions) { + for (final ConsumerContextImpl session : sessions) { + if (cons.equals(session.getConsumer())) { + throw new IllegalStateException("Consumer already registered"); + } } } } // Private Factory methods private ConsumerContextImpl newSessionFor(final Consumer provider) { - ConsumerContextImpl ret = new ConsumerContextImpl(provider, this); + final ConsumerContextImpl ret = new ConsumerContextImpl(provider, this); return ret; } private ProviderContextImpl newSessionFor(final Provider provider) { - ProviderContextImpl ret = new ProviderContextImpl(provider, this); + final ProviderContextImpl ret = new ProviderContextImpl(provider, this); return ret; } @@ -117,6 +146,8 @@ public class BrokerImpl implements Broker, DOMRpcProviderService, DOMRpcService, } /** + * Gets deactivator. + * * @return the deactivator */ public AutoCloseable getDeactivator() { @@ -124,6 +155,8 @@ public class BrokerImpl implements Broker, DOMRpcProviderService, DOMRpcService, } /** + * Sets deactivator. + * * @param deactivator * the deactivator to set */ @@ -131,68 +164,35 @@ public class BrokerImpl implements Broker, DOMRpcProviderService, DOMRpcService, this.deactivator = deactivator; } - /** - * @return the router - */ - public DOMRpcRouter getRouter() { - return router; - } - - /** - * @param router - * the router to set - */ - public void setRouter(final DOMRpcRouter router) { - this.router = router; - } - protected Optional getGlobalService(final Class service) { return Optional.fromNullable(services.getInstance(service)); } - - @Override - public ConsumerSession registerConsumer(Consumer consumer) { - checkPredicates(consumer); - log.trace("Registering consumer {}", consumer); - final ConsumerContextImpl session = newSessionFor(consumer); - consumer.onSessionInitiated(session); - sessions.add(session); - return session; - } - - - @Override - public ProviderSession registerProvider(Provider provider) { - checkPredicates(provider); - final ProviderContextImpl session = newSessionFor(provider); - provider.onSessionInitiated(session); - providerSessions.add(session); - return session; - } - - @Nonnull @Override - public DOMRpcImplementationRegistration registerRpcImplementation(@Nonnull final T implementation, @Nonnull final DOMRpcIdentifier... rpcs) { - return router.registerRpcImplementation(implementation, rpcs); + public DOMRpcImplementationRegistration registerRpcImplementation( + @Nonnull final T implementation, @Nonnull final DOMRpcIdentifier... rpcs) { + return rpcProvider.registerRpcImplementation(implementation, rpcs); } @Nonnull @Override - public DOMRpcImplementationRegistration registerRpcImplementation(@Nonnull final T implementation, @Nonnull final Set rpcs) { - return router.registerRpcImplementation(implementation, rpcs); + public DOMRpcImplementationRegistration registerRpcImplementation( + @Nonnull final T implementation, @Nonnull final Set rpcs) { + return rpcProvider.registerRpcImplementation(implementation, rpcs); } @Nonnull @Override - public CheckedFuture invokeRpc(@Nonnull final SchemaPath type, @Nullable final NormalizedNode input) { - return router.invokeRpc(type, input); + public CheckedFuture invokeRpc(@Nonnull final SchemaPath type, + @Nullable final NormalizedNode input) { + return rpcService.invokeRpc(type, input); } @Nonnull @Override - public ListenerRegistration registerRpcListener(@Nonnull final T listener) { - return router.registerRpcListener(listener); + public ListenerRegistration registerRpcListener( + @Nonnull final T listener) { + return rpcService.registerRpcListener(listener); } }