X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fsal%2Fimplementation%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fimplementation%2Finternal%2FReadService.java;h=356c0e57c887f29f5d448ba523976f8fe077b5da;hp=869dc81f8db8993ddf097556c793ff5017a8a64b;hb=315a10ec8b79abec3f4d718359ebb4202bffcb11;hpb=fed417771af8b003686a0f1083f95e59d9db301b diff --git a/opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/ReadService.java b/opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/ReadService.java index 869dc81f8d..356c0e57c8 100644 --- a/opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/ReadService.java +++ b/opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/ReadService.java @@ -1,6 +1,5 @@ - /* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2013-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, @@ -12,6 +11,7 @@ package org.opendaylight.controller.sal.implementation.internal; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -42,7 +42,6 @@ import org.opendaylight.controller.sal.reader.NodeConnectorStatistics; import org.opendaylight.controller.sal.reader.NodeDescription; import org.opendaylight.controller.sal.reader.NodeTableStatistics; import org.opendaylight.controller.sal.utils.EtherTypes; -import org.opendaylight.controller.sal.utils.GlobalConstants; import org.opendaylight.controller.sal.utils.IPProtocols; import org.opendaylight.controller.sal.utils.NodeConnectorCreator; import org.opendaylight.controller.sal.utils.NodeCreator; @@ -59,8 +58,10 @@ import org.slf4j.LoggerFactory; public class ReadService implements IReadService, CommandProvider, IPluginOutReadService { protected static final Logger logger = LoggerFactory.getLogger(ReadService.class); - private ConcurrentHashMap pluginReader; - private Set readerListeners; + private ConcurrentHashMap> pluginReader = + new ConcurrentHashMap>(); + private Set readerListeners = + new CopyOnWriteArraySet(); /** * Function called by the dependency manager when all the required @@ -68,8 +69,6 @@ public class ReadService implements IReadService, CommandProvider, IPluginOutRea * */ void init() { - pluginReader = new ConcurrentHashMap(); - readerListeners = new CopyOnWriteArraySet(); } /** @@ -82,6 +81,7 @@ public class ReadService implements IReadService, CommandProvider, IPluginOutRea // In case of plugin disactivating make sure we clear the // dependencies this.pluginReader.clear(); + this.readerListeners.clear(); } /** @@ -105,58 +105,13 @@ public class ReadService implements IReadService, CommandProvider, IPluginOutRea // Set the reference to the plugin flow Reader service public void setService(Map props, IPluginInReadService s) { - if (this.pluginReader == null) { - logger.error("pluginReader store null"); - return; - } - - logger.trace("Got a service set request {}", s); - String type = null; - for (Object e : props.entrySet()) { - Map.Entry entry = (Map.Entry) e; - logger.trace("Prop key:({}) value:({})", entry.getKey(), - entry.getValue()); - } - - Object value = props.get(GlobalConstants.PROTOCOLPLUGINTYPE.toString()); - if (value instanceof String) { - type = (String) value; - } - if (type == null) { - logger.error("Received a pluginReader without any " - + "protocolPluginType provided"); - } else { - this.pluginReader.put(type, s); - logger.debug("Stored the pluginReader for type: {}", type); - } + ProtocolService.set(this.pluginReader, props, s, logger); } public void unsetService(Map props, IPluginInReadService s) { - if (this.pluginReader == null) { - logger.error("pluginReader store null"); - return; - } - - String type = null; - logger.debug("Received unsetpluginReader request"); - for (Object e : props.entrySet()) { - Map.Entry entry = (Map.Entry) e; - logger.trace("Prop key:({}) value:({})", entry.getKey(), - entry.getValue()); - } - - Object value = props.get(GlobalConstants.PROTOCOLPLUGINTYPE.toString()); - if (value instanceof String) { - type = (String) value; - } - if (type == null) { - logger.error("Received a pluginReader without any " - + "protocolPluginType provided"); - } else if (this.pluginReader.get(type).equals(s)) { - this.pluginReader.remove(type); - logger.debug("Removed the pluginReader for type: {}", type); - } + ProtocolService.unset(this.pluginReader, props, s, logger); } + public void setReaderListener(IReadServiceListener service) { logger.trace("Got a listener set request {}", service); this.readerListeners.add(service); @@ -170,9 +125,10 @@ public class ReadService implements IReadService, CommandProvider, IPluginOutRea @Override public FlowOnNode readFlow(Node node, Flow flow) { if (pluginReader != null) { - if (this.pluginReader.get(node.getType()) != null) { - return this.pluginReader.get(node.getType()) - .readFlow(node, flow, true); + ProtocolService service = + this.pluginReader.get(node.getType()); + if (service != null) { + return service.getService().readFlow(node, flow, true); } } logger.warn("Plugin {} unavailable", node.getType()); @@ -182,9 +138,10 @@ public class ReadService implements IReadService, CommandProvider, IPluginOutRea @Override public FlowOnNode nonCachedReadFlow(Node node, Flow flow) { if (pluginReader != null) { - if (this.pluginReader.get(node.getType()) != null) { - return this.pluginReader.get(node.getType()) - .readFlow(node, flow, false); + ProtocolService service = + this.pluginReader.get(node.getType()); + if (service != null) { + return service.getService().readFlow(node, flow, false); } } logger.warn("Plugin {} unavailable", node.getType()); @@ -194,33 +151,36 @@ public class ReadService implements IReadService, CommandProvider, IPluginOutRea @Override public List readAllFlows(Node node) { if (pluginReader != null) { - if (this.pluginReader.get(node.getType()) != null) { - return this.pluginReader.get(node.getType()) - .readAllFlow(node, true); + ProtocolService service = + this.pluginReader.get(node.getType()); + if (service != null) { + return service.getService().readAllFlow(node, true); } } logger.warn("Plugin {} unavailable", node.getType()); - return null; + return Collections.emptyList(); } @Override public List nonCachedReadAllFlows(Node node) { if (pluginReader != null) { - if (this.pluginReader.get(node.getType()) != null) { - return this.pluginReader.get(node.getType()) - .readAllFlow(node, false); + ProtocolService service = + this.pluginReader.get(node.getType()); + if (service != null) { + return service.getService().readAllFlow(node, false); } } logger.warn("Plugin {} unavailable", node.getType()); - return null; + return Collections.emptyList(); } @Override public NodeDescription readDescription(Node node) { if (pluginReader != null) { - if (this.pluginReader.get(node.getType()) != null) { - return this.pluginReader.get(node.getType()) - .readDescription(node, true); + ProtocolService service = + this.pluginReader.get(node.getType()); + if (service != null) { + return service.getService().readDescription(node, true); } } logger.warn("Plugin {} unavailable", node.getType()); @@ -230,9 +190,10 @@ public class ReadService implements IReadService, CommandProvider, IPluginOutRea @Override public NodeDescription nonCachedReadDescription(Node node) { if (pluginReader != null) { - if (this.pluginReader.get(node.getType()) != null) { - return this.pluginReader.get(node.getType()) - .readDescription(node, false); + ProtocolService service = + this.pluginReader.get(node.getType()); + if (service != null) { + return service.getService().readDescription(node, false); } } logger.warn("Plugin {} unavailable", node.getType()); @@ -243,9 +204,10 @@ public class ReadService implements IReadService, CommandProvider, IPluginOutRea public NodeConnectorStatistics readNodeConnector(NodeConnector connector) { Node node = connector.getNode(); if (pluginReader != null && node != null) { - if (this.pluginReader.get(node.getType()) != null) { - return this.pluginReader.get(node.getType()) - .readNodeConnector(connector, true); + ProtocolService service = + this.pluginReader.get(node.getType()); + if (service != null) { + return service.getService().readNodeConnector(connector, true); } } logger.warn("Plugin {} unavailable", node.getType()); @@ -257,9 +219,10 @@ public class ReadService implements IReadService, CommandProvider, IPluginOutRea NodeConnector connector) { Node node = connector.getNode(); if (pluginReader != null && node != null) { - if (this.pluginReader.get(node.getType()) != null) { - return this.pluginReader.get(node.getType()) - .readNodeConnector(connector, false); + ProtocolService service = + this.pluginReader.get(node.getType()); + if (service != null) { + return service.getService().readNodeConnector(connector, false); } } logger.warn("Plugin {} unavailable", node.getType()); @@ -269,25 +232,27 @@ public class ReadService implements IReadService, CommandProvider, IPluginOutRea @Override public List readNodeConnectors(Node node) { if (pluginReader != null) { - if (this.pluginReader.get(node.getType()) != null) { - return this.pluginReader.get(node.getType()) - .readAllNodeConnector(node, true); + ProtocolService service = + this.pluginReader.get(node.getType()); + if (service != null) { + return service.getService().readAllNodeConnector(node, true); } } logger.warn("Plugin {} unavailable", node.getType()); - return null; + return Collections.emptyList(); } @Override public List readNodeTable(Node node) { if (pluginReader != null) { - if (this.pluginReader.get(node.getType()) != null) { - return this.pluginReader.get(node.getType()) - .readAllNodeTable(node, true); + ProtocolService service = + this.pluginReader.get(node.getType()); + if (service != null) { + return service.getService().readAllNodeTable(node, true); } } logger.warn("Plugin {} unavailable", node.getType()); - return null; + return Collections.emptyList(); } @@ -295,9 +260,10 @@ public class ReadService implements IReadService, CommandProvider, IPluginOutRea public NodeTableStatistics nonCachedReadNodeTable(NodeTable table) { Node node = table.getNode(); if (pluginReader != null && node != null) { - if (this.pluginReader.get(node.getType()) != null) { - return this.pluginReader.get(node.getType()) - .readNodeTable(table, false); + ProtocolService service = + this.pluginReader.get(node.getType()); + if (service != null) { + return service.getService().readNodeTable(table, false); } } logger.warn("Plugin {} unavailable", node.getType()); @@ -308,9 +274,10 @@ public class ReadService implements IReadService, CommandProvider, IPluginOutRea public NodeTableStatistics readNodeTable(NodeTable table) { Node node = table.getNode(); if (pluginReader != null && node != null) { - if (this.pluginReader.get(node.getType()) != null) { - return this.pluginReader.get(node.getType()) - .readNodeTable(table, true); + ProtocolService service = + this.pluginReader.get(node.getType()); + if (service != null) { + return service.getService().readNodeTable(table, true); } } logger.warn("Plugin {} unavailable", node.getType()); @@ -320,22 +287,24 @@ public class ReadService implements IReadService, CommandProvider, IPluginOutRea @Override public List nonCachedReadNodeConnectors(Node node) { if (pluginReader != null) { - if (this.pluginReader.get(node.getType()) != null) { - return this.pluginReader.get(node.getType()) - .readAllNodeConnector(node, false); + ProtocolService service = + this.pluginReader.get(node.getType()); + if (service != null) { + return service.getService().readAllNodeConnector(node, false); } } logger.warn("Plugin {} unavailable", node.getType()); - return null; + return Collections.emptyList(); } @Override public long getTransmitRate(NodeConnector connector) { Node node = connector.getNode(); if (pluginReader != null && node != null) { - if (this.pluginReader.get(node.getType()) != null) { - return this.pluginReader.get(node.getType()) - .getTransmitRate(connector); + ProtocolService service = + this.pluginReader.get(node.getType()); + if (service != null) { + return service.getService().getTransmitRate(connector); } } logger.warn("Plugin {} unavailable", node.getType());