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=ee9af6cb80d91ccc4083a61e3e6a01604769a757;hp=f83c61f8049205977e998c61295072fe84176624;hb=4f8e371e1b7f6a2aa31115407c3f37738030f4c5;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..ee9af6cb80 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 */ -public abstract class AbstractDataReadRouter

, 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 dataBits = FluentIterable // - .from(getReaders(configReaders, path)).transform(operationalRead(path)); + .from(getReaders(operationalReaders, path)).transform(operationalRead(path)); return merge(path,dataBits); } /** * 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. @@ -51,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 @@ -67,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 */ @@ -75,7 +83,7 @@ public abstract class AbstractDataReadRouter

, D> implements Da return new Function, D>() { @Override public D apply(DataReader input) { - return input.readConfigurationData(path); + return input.readOperationalData(path); } }; } @@ -84,10 +92,10 @@ 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) { OperationalDataReaderRegistration ret = new OperationalDataReaderRegistration<>(path, reader); @@ -134,19 +142,20 @@ public abstract class AbstractDataReadRouter

, D> implements Da } private Predicate>> affects(final P path) { - + return new Predicate>>() { - + @Override public boolean apply(Entry> 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> { private final P key;