X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=applications%2Fforwardingrules-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fapplications%2Ffrm%2Fimpl%2FFlowNodeConnectorInventoryTranslatorImpl.java;h=f3cb90004323937d7a20dee6d09d06832507d105;hb=7fd2240386d8ef5b04d897342f73122674cd6f35;hp=af44426ccb2325f016305322c36001487bb2a788;hpb=036dfe815f6fa8b503ccdbe73fe50504f571f93f;p=openflowplugin.git diff --git a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowNodeConnectorInventoryTranslatorImpl.java b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowNodeConnectorInventoryTranslatorImpl.java index af44426ccb..f3cb900043 100644 --- a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowNodeConnectorInventoryTranslatorImpl.java +++ b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowNodeConnectorInventoryTranslatorImpl.java @@ -1,40 +1,40 @@ -/** - * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. +/* + * Copyright (c) 2015, 2017 Ericsson India Global Services Pvt Ltd. 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.openflowplugin.applications.frm.impl; import com.google.common.base.Preconditions; -import com.google.common.collect.*; -import org.opendaylight.controller.md.sal.binding.api.*; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Iterables; +import com.google.common.collect.Multimap; +import com.google.common.collect.Multimaps; +import java.math.BigInteger; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.openflowplugin.applications.frm.FlowNodeConnectorInventoryTranslator; -import org.opendaylight.openflowplugin.applications.frm.ForwardingRulesManager; import org.opendaylight.openflowplugin.common.wait.SimpleTaskRetryLooper; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.math.BigInteger; -import java.util.concurrent.Callable; - -public class FlowNodeConnectorInventoryTranslatorImpl extends AbstractNodeConnectorCommitter implements FlowNodeConnectorInventoryTranslator { +public class FlowNodeConnectorInventoryTranslatorImpl extends AbstractNodeConnectorCommitter + implements FlowNodeConnectorInventoryTranslator { private static final Logger LOG = LoggerFactory.getLogger(FlowNodeConnectorInventoryTranslatorImpl.class); private ListenerRegistration dataTreeChangeListenerRegistration; - public static final String SEPARATOR = ":"; + private static final String SEPARATOR = ":"; private static final InstanceIdentifier II_TO_FLOW_CAPABLE_NODE_CONNECTOR = InstanceIdentifier.builder(Nodes.class) @@ -43,32 +43,30 @@ public class FlowNodeConnectorInventoryTranslatorImpl extends AbstractNodeConnec .augmentation(FlowCapableNodeConnector.class) .build(); - private Multimap dpnToPortMultiMap = Multimaps.synchronizedListMultimap(ArrayListMultimap.create()); + private final Multimap dpnToPortMultiMap = Multimaps + .synchronizedListMultimap(ArrayListMultimap.create()); - public FlowNodeConnectorInventoryTranslatorImpl(final ForwardingRulesManager manager, final DataBroker dataBroker){ - super(manager, FlowCapableNodeConnector.class); + @SuppressWarnings("IllegalCatch") + public FlowNodeConnectorInventoryTranslatorImpl(final DataBroker dataBroker) { Preconditions.checkNotNull(dataBroker, "DataBroker can not be null!"); final DataTreeIdentifier treeId = - new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, getWildCardPath()); + DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, getWildCardPath()); try { SimpleTaskRetryLooper looper = new SimpleTaskRetryLooper(ForwardingRulesManagerImpl.STARTUP_LOOP_TICK, ForwardingRulesManagerImpl.STARTUP_LOOP_MAX_RETRIES); - dataTreeChangeListenerRegistration = looper.loopUntilNoException(new Callable>() { - @Override - public ListenerRegistration call() throws Exception { - return dataBroker.registerDataTreeChangeListener(treeId, FlowNodeConnectorInventoryTranslatorImpl.this); - } - }); + dataTreeChangeListenerRegistration = looper.loopUntilNoException(() -> dataBroker + .registerDataTreeChangeListener(treeId, FlowNodeConnectorInventoryTranslatorImpl.this)); } catch (final Exception e) { LOG.warn(" FlowNodeConnectorInventoryTranslatorImpl listener registration fail!"); - LOG.debug("FlowNodeConnectorInventoryTranslatorImpl DataChange listener registration fail ..", e); - throw new IllegalStateException("FlowNodeConnectorInventoryTranslatorImpl startup fail! System needs restart.", e); + LOG.debug("FlowNodeConnectorInventoryTranslatorImpl DataTreeChangeListener registration fail ..", e); + throw new + IllegalStateException("FlowNodeConnectorInventoryTranslatorImpl startup fail! System needs restart.", e); } } @Override - protected InstanceIdentifier getWildCardPath(){ + protected InstanceIdentifier getWildCardPath() { return InstanceIdentifier.create(Nodes.class) .child(Node.class) .child(NodeConnector.class) @@ -78,65 +76,63 @@ public class FlowNodeConnectorInventoryTranslatorImpl extends AbstractNodeConnec @Override public void close() { if (dataTreeChangeListenerRegistration != null) { - try { - dataTreeChangeListenerRegistration.close(); - } catch (final Exception e) { - LOG.warn("Error by stop FRM FlowNodeConnectorInventoryTranslatorImpl: {}", e.getMessage()); - LOG.debug("Error by stop FRM FlowNodeConnectorInventoryTranslatorImpl..", e); - } + dataTreeChangeListenerRegistration.close(); dataTreeChangeListenerRegistration = null; } } + @Override - public void remove(InstanceIdentifier identifier, FlowCapableNodeConnector del, InstanceIdentifier nodeConnIdent) { - if(compareInstanceIdentifierTail(identifier,II_TO_FLOW_CAPABLE_NODE_CONNECTOR)){ + public void remove(InstanceIdentifier identifier, FlowCapableNodeConnector del, + InstanceIdentifier nodeConnIdent) { + if (compareInstanceIdentifierTail(identifier, II_TO_FLOW_CAPABLE_NODE_CONNECTOR)) { LOG.debug("Node Connector removed"); - String sNodeConnectorIdentifier = nodeConnIdent - .firstKeyOf(NodeConnector.class, NodeConnectorKey.class).getId().getValue(); - BigInteger nDpId = getDpIdFromPortName(sNodeConnectorIdentifier); - String portName = del.getName(); + String nodeConnectorIdentifier = nodeConnIdent.firstKeyOf(NodeConnector.class) + .getId().getValue(); + BigInteger dpId = getDpIdFromPortName(nodeConnectorIdentifier); - dpnToPortMultiMap.remove(nDpId, sNodeConnectorIdentifier); + dpnToPortMultiMap.remove(dpId, nodeConnectorIdentifier); } } @Override - public void update(InstanceIdentifier identifier, FlowCapableNodeConnector original, FlowCapableNodeConnector update, InstanceIdentifier nodeConnIdent) { - if(compareInstanceIdentifierTail(identifier,II_TO_FLOW_CAPABLE_NODE_CONNECTOR)){ + public void update(InstanceIdentifier identifier, FlowCapableNodeConnector original, + FlowCapableNodeConnector update, InstanceIdentifier nodeConnIdent) { + if (compareInstanceIdentifierTail(identifier, II_TO_FLOW_CAPABLE_NODE_CONNECTOR)) { LOG.debug("Node Connector updated"); - //donot need to do anything as we are not considering updates here + // Don't need to do anything as we are not considering updates here } } @Override - public void add(InstanceIdentifier identifier, FlowCapableNodeConnector add, InstanceIdentifier nodeConnIdent) { - if(compareInstanceIdentifierTail(identifier,II_TO_FLOW_CAPABLE_NODE_CONNECTOR)){ + public void add(InstanceIdentifier identifier, FlowCapableNodeConnector add, + InstanceIdentifier nodeConnIdent) { + if (compareInstanceIdentifierTail(identifier, II_TO_FLOW_CAPABLE_NODE_CONNECTOR)) { LOG.debug("Node Connector added"); - String sNodeConnectorIdentifier = nodeConnIdent - .firstKeyOf(NodeConnector.class, NodeConnectorKey.class).getId().getValue(); - BigInteger nDpId = getDpIdFromPortName(sNodeConnectorIdentifier); - - String portName = add.getName(); - if(!dpnToPortMultiMap.containsEntry(nDpId,sNodeConnectorIdentifier)) { - dpnToPortMultiMap.put(nDpId, sNodeConnectorIdentifier); - }else{ + String nodeConnectorIdentifier = nodeConnIdent + .firstKeyOf(NodeConnector.class).getId().getValue(); + BigInteger dpId = getDpIdFromPortName(nodeConnectorIdentifier); + + if (!dpnToPortMultiMap.containsEntry(dpId, nodeConnectorIdentifier)) { + dpnToPortMultiMap.put(dpId, nodeConnectorIdentifier); + } else { LOG.error("Duplicate Event.Node Connector already added"); } } } - private boolean compareInstanceIdentifierTail(InstanceIdentifier identifier1, + private static boolean compareInstanceIdentifierTail(InstanceIdentifier identifier1, InstanceIdentifier identifier2) { - return Iterables.getLast(identifier1.getPathArguments()).equals(Iterables.getLast(identifier2.getPathArguments())); + return Iterables.getLast(identifier1.getPathArguments()) + .equals(Iterables.getLast(identifier2.getPathArguments())); } @Override - public boolean isNodeConnectorUpdated(BigInteger dpId, String portName){ + public boolean isNodeConnectorUpdated(BigInteger dpId, String portName) { return dpnToPortMultiMap.containsEntry(dpId,portName) ; } - private BigInteger getDpIdFromPortName(String portName) { + private static BigInteger getDpIdFromPortName(String portName) { String dpId = portName.substring(portName.indexOf(SEPARATOR) + 1, portName.lastIndexOf(SEPARATOR)); return new BigInteger(dpId); }