X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-common-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fcommon%2Fimpl%2Frouting%2FAbstractDataReadRouter.java;h=5dfb55ebd939615a10c6b0b0ceb4c4a6758c0940;hp=200948cc0c78c2bff6959b7fbfb9d03a2aa1ea68;hb=c46e223995956f1f759c551163c212947c1e2fb7;hpb=9303b14b9dba1a940f0d0a6fe1604bfcd0f9e294 diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/routing/AbstractDataReadRouter.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/routing/AbstractDataReadRouter.java index 200948cc0c..5dfb55ebd9 100644 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/routing/AbstractDataReadRouter.java +++ b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/routing/AbstractDataReadRouter.java @@ -19,18 +19,19 @@ import com.google.common.base.Predicate; import com.google.common.collect.FluentIterable; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; +import com.google.common.collect.Multimaps; /** * Base abstract implementation of DataReadRouter, which performs * a read operation on multiple data readers and then merges result. - * + * * @param

* @param */ public abstract class AbstractDataReadRouter

, D> implements DataReader { - Multimap> configReaders = HashMultimap.create(); - Multimap> operationalReaders = HashMultimap.create(); + Multimap> configReaders = Multimaps.synchronizedSetMultimap(HashMultimap.>create()); + Multimap> operationalReaders = Multimaps.synchronizedSetMultimap(HashMultimap.>create()); @Override public D readConfigurationData(P path) { @@ -49,7 +50,7 @@ public abstract class AbstractDataReadRouter

, D> implements Da /** * Merges data readed by reader instances from specified path - * + * * @param path Path on which read was performed * @param data Data which was returned by read operation. * @return Merged result. @@ -58,11 +59,11 @@ public abstract class AbstractDataReadRouter

, D> implements Da /** * Returns a function which performs configuration read for supplied path - * + * * @param path * @return function which performs configuration read for supplied path */ - + private Function, D> configurationRead(final P path) { return new Function, D>() { @Override @@ -74,7 +75,7 @@ public abstract class AbstractDataReadRouter

, D> implements Da /** * Returns a function which performs operational read for supplied path - * + * * @param path * @return function which performs operational read for supplied path */ @@ -91,18 +92,18 @@ public abstract class AbstractDataReadRouter

, D> implements Da /** * Register's a reader for operational data. - * + * * @param path Path which is served by this reader * @param reader Reader instance which is responsible for reading particular subpath. - * @return + * @return */ - public Registration> registerOperationalReader(P path, DataReader reader) { + public Registration registerOperationalReader(P path, DataReader reader) { OperationalDataReaderRegistration ret = new OperationalDataReaderRegistration<>(path, reader); operationalReaders.put(path, ret); return ret; } - public Registration> registerConfigurationReader(P path, DataReader reader) { + public Registration registerConfigurationReader(P path, DataReader reader) { ConfigurationDataReaderRegistration ret = new ConfigurationDataReaderRegistration<>(path, reader); configReaders.put(path, ret); return ret; @@ -141,15 +142,15 @@ public abstract class AbstractDataReadRouter

, D> implements Da } private Predicate>> affects(final P path) { - + return new Predicate>>() { - + @Override public boolean apply(Entry> input) { final P key = input.getKey(); return key.contains(path) || ((P) path).contains(key); } - + }; }