From: Robert Varga Date: Wed, 4 Jun 2014 16:48:46 +0000 (+0200) Subject: BUG-1089: migrate InventoryReader X-Git-Tag: release/helium~697 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=66578794c1d1a5a6bd0b6245ece9c665a047868f BUG-1089: migrate InventoryReader Migrates InventoryReader from xtend to pure Java. Change-Id: I285c3dcbae8f407ec75de03d2df3092f9fcab30f Signed-off-by: Robert Varga --- diff --git a/opendaylight/md-sal/compatibility/inventory-topology-compatibility/src/main/java/org/opendaylight/controller/md/compatibility/inventory/InventoryReader.java b/opendaylight/md-sal/compatibility/inventory-topology-compatibility/src/main/java/org/opendaylight/controller/md/compatibility/inventory/InventoryReader.java new file mode 100644 index 0000000000..b37b50159f --- /dev/null +++ b/opendaylight/md-sal/compatibility/inventory-topology-compatibility/src/main/java/org/opendaylight/controller/md/compatibility/inventory/InventoryReader.java @@ -0,0 +1,97 @@ +/** + * 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.compatibility.inventory; + +import java.util.ArrayList; +import java.util.Set; + +import org.opendaylight.controller.sal.binding.api.data.RuntimeDataProvider; +import org.opendaylight.controller.sal.compatibility.InventoryMapping; +import org.opendaylight.controller.switchmanager.ISwitchManager; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder; +import org.opendaylight.yangtools.yang.binding.DataObject; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class InventoryReader implements RuntimeDataProvider { + private static final Logger LOG = LoggerFactory.getLogger(InventoryReader.class); + private ISwitchManager switchManager; + + public ISwitchManager getSwitchManager() { + return switchManager; + } + + public void setSwitchManager(final ISwitchManager switchManager) { + this.switchManager = switchManager; + } + + @Override + public DataObject readConfigurationData(final InstanceIdentifier path) { + // Topology and Inventory are operational only + return null; + } + + @SuppressWarnings("unchecked") + @Override + public DataObject readOperationalData(final InstanceIdentifier path) { + final Class type = path.getTargetType(); + if (Nodes.class.equals(type)) { + return readNodes(((InstanceIdentifier) path)); + } + if (Node.class.equals(type)) { + return readNode(((InstanceIdentifier) path)); + } + if (NodeConnector.class.equals(type)) { + return readNodeConnector(((InstanceIdentifier) path)); + } + + LOG.debug("Unsupported type {}", type); + return null; + } + + private NodeConnector readNodeConnector(final InstanceIdentifier identifier) { + return constructNodeConnector(InventoryMapping.toAdNodeConnector(identifier)); + } + + private Node readNode(final InstanceIdentifier identifier) { + return constructNode(InventoryMapping.toAdNode(identifier)); + } + + private Node constructNode(final org.opendaylight.controller.sal.core.Node node) { + final Set connectors = getSwitchManager().getNodeConnectors(node); + final ArrayList tpList = new ArrayList(connectors.size()); + for (final org.opendaylight.controller.sal.core.NodeConnector connector : connectors) { + tpList.add(constructNodeConnector(connector)); + } + + return new NodeBuilder() + .setKey(InventoryMapping.toNodeKey(node)) + .setNodeConnector(tpList) + .build(); + } + + private Nodes readNodes(final InstanceIdentifier identifier) { + final Set nodes = getSwitchManager().getNodes(); + final ArrayList nodeList = new ArrayList(nodes.size()); + for (final org.opendaylight.controller.sal.core.Node node : nodes) { + nodeList.add(constructNode(node)); + } + + return new NodesBuilder().setNode(nodeList).build(); + } + + private static NodeConnector constructNodeConnector(final org.opendaylight.controller.sal.core.NodeConnector connector) { + return new NodeConnectorBuilder().setKey(InventoryMapping.toNodeConnectorKey(connector)).build(); + } +} diff --git a/opendaylight/md-sal/compatibility/inventory-topology-compatibility/src/main/java/org/opendaylight/controller/md/compatibility/inventory/InventoryReader.xtend b/opendaylight/md-sal/compatibility/inventory-topology-compatibility/src/main/java/org/opendaylight/controller/md/compatibility/inventory/InventoryReader.xtend deleted file mode 100644 index 9b71369593..0000000000 --- a/opendaylight/md-sal/compatibility/inventory-topology-compatibility/src/main/java/org/opendaylight/controller/md/compatibility/inventory/InventoryReader.xtend +++ /dev/null @@ -1,90 +0,0 @@ -/* - * 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.compatibility.inventory - -import org.opendaylight.controller.switchmanager.ISwitchManager -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier -import org.opendaylight.yangtools.yang.binding.DataObject -import org.opendaylight.controller.sal.binding.api.data.RuntimeDataProvider -import java.util.ArrayList -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector -import static extension org.opendaylight.controller.sal.compatibility.InventoryMapping.*; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodesBuilder -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder - -class InventoryReader implements RuntimeDataProvider { - - @Property - var ISwitchManager switchManager; - - override readConfigurationData(InstanceIdentifier path) { - - // Topology and Inventory are operational only - return null; - } - - override readOperationalData(InstanceIdentifier path) { - val type = path.targetType; - var DataObject data = null; - switch (type) { - case Nodes: - data = readNodes(path as InstanceIdentifier) - case Node: - data = readNode(path as InstanceIdentifier) - case NodeConnector: - data = readNodeConnector(path as InstanceIdentifier) - } - return data; - } - - def DataObject readNodeConnector(InstanceIdentifier identifier) { - val nodeConnector = identifier.toAdNodeConnector(); - return constructNodeConnector(nodeConnector) - } - - def DataObject readNode(InstanceIdentifier identifier) { - val node = identifier.toAdNode(); - return constructNode(node); - } - - - def Node constructNode(org.opendaylight.controller.sal.core.Node node) { - val connectors = switchManager.getNodeConnectors(node) - - val tpList = new ArrayList(connectors.size) - for (connector : connectors) { - tpList.add(constructNodeConnector(connector)); - } - - val it = new NodeBuilder() - key = node.toNodeKey(); - nodeConnector = tpList - return build(); - } - - def NodeConnector constructNodeConnector(org.opendaylight.controller.sal.core.NodeConnector connector) { - val it = new NodeConnectorBuilder() - key = connector.toNodeConnectorKey() - return build(); - } - - def readNodes(InstanceIdentifier identifier) { - val nodes = switchManager.nodes - val nodeList = new ArrayList(nodes.size) - for (node : nodes) { - nodeList.add(constructNode(node)) - } - val it = new NodesBuilder(); - node = nodeList - return build() - - } -}