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=f83c61f8049205977e998c61295072fe84176624;hb=c46e223995956f1f759c551163c212947c1e2fb7;hpb=c19766901dce1994ef2432f356b32d539b6c43cc 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 f83c61f804..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 @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ package org.opendaylight.controller.md.sal.common.impl.routing; import java.util.Map.Entry; @@ -12,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 , D> implements DataReader {
+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) {
@@ -35,14 +43,14 @@ public abstract class AbstractDataReadRouter , D> implements Da
@Override
public D readOperationalData(P path) {
FluentIterable , 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> implements Da
/**
* Returns a function which performs operational read for supplied path
- *
+ *
* @param path
* @return function which performs operational read for supplied path
*/
@@ -75,7 +83,7 @@ public abstract class AbstractDataReadRouter , D> implements Da
return new Function input) {
- return input.readConfigurationData(path);
+ return input.readOperationalData(path);
}
};
}
@@ -84,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 reader) {
+ public Registration registerOperationalReader(P path, DataReader reader) {
OperationalDataReaderRegistration ret = new OperationalDataReaderRegistration<>(path, reader);
operationalReaders.put(path, ret);
return ret;
}
- public Registration reader) {
+ public Registration registerConfigurationReader(P path, DataReader reader) {
ConfigurationDataReaderRegistration ret = new ConfigurationDataReaderRegistration<>(path, reader);
configReaders.put(path, ret);
return ret;
@@ -134,19 +142,20 @@ public abstract class AbstractDataReadRouter , D> implements Da
}
private Predicate super Entry >> affects(final P path) {
-
+
return new Predicate > input) {
- final Path key = input.getKey();
- return key.contains(path) || ((Path) path).contains(key);
+ final P key = input.getKey();
+ return key.contains(path) || ((P) path).contains(key);
}
-
+
};
}
- private class ConfigurationDataReaderRegistration , D> extends DataReaderRegistration {
+ @SuppressWarnings("hiding")
+ private class ConfigurationDataReaderRegistration , D> extends DataReaderRegistration {
public ConfigurationDataReaderRegistration(P key, DataReader instance) {
super(key, instance);
@@ -158,7 +167,8 @@ public abstract class AbstractDataReadRouter , D> implements Da
}
}
- private class OperationalDataReaderRegistration , D> extends DataReaderRegistration {
+ @SuppressWarnings("hiding")
+ private class OperationalDataReaderRegistration , D> extends DataReaderRegistration {
public OperationalDataReaderRegistration(P key, DataReader instance) {
super(key, instance);
@@ -170,7 +180,7 @@ public abstract class AbstractDataReadRouter , D> implements Da
}
}
- private abstract static class DataReaderRegistration , D> extends
+ private abstract static class DataReaderRegistration , D> extends
AbstractObjectRegistration