import org.mockito.runners.MockitoJUnitRunner;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.CommonPort;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
// Call nodeConnectorAdded with local port
FlowCapableNodeConnector fcnc = TestUtils
.createFlowCapableNodeConnector()
- .setPortNumber(new CommonPort.PortNumber("LOCAL")).build();
+ .setPortNumber(new PortNumberUni("LOCAL")).build();
lldpSpeaker.nodeConnectorAdded(id, fcnc);
// Verify that nothing happened for local port
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.CommonPort;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
MacAddress mac, long port) {
return new FlowCapableNodeConnectorBuilder()
.setHardwareAddress(mac)
- .setPortNumber(new CommonPort.PortNumber(port))
+ .setPortNumber(new PortNumberUni(port))
.setState(new StateBuilder().setLinkDown(linkDown).build())
.setConfiguration(new PortConfig(false, false, false, adminDown));
}
package test.mock.util;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.CommonPort;
+import java.util.Random;
+
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.Port;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.PortBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.PortKey;
-import java.util.Random;
-
public class PortMockGenerator {
private static final Random rnd = new Random();
private static final PortBuilder portBuilder = new PortBuilder();
public static Port getRandomPort() {
portBuilder.setKey(new PortKey(TestUtils.nextLong(0, 4294967295L)));
portBuilder.setBarrier(rnd.nextBoolean());
- portBuilder.setPortNumber(new CommonPort.PortNumber(TestUtils.nextLong(0, 4294967295L)));
+ portBuilder.setPortNumber(new PortNumberUni(TestUtils.nextLong(0, 4294967295L)));
portBuilder.setConfiguration(new PortConfig(rnd.nextBoolean(), rnd.nextBoolean(), rnd.nextBoolean(), rnd.nextBoolean()));
return portBuilder.build();
}
+++ /dev/null
-/*
- * 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.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.CommonPort.PortNumber;
-
-
-public class PortNumberBuilder {
-
- public static PortNumber getDefaultInstance(java.lang.String defaultValue) {
- try {
- long uint32 = Long.parseLong(defaultValue);
- return new PortNumber(uint32);
- } catch(NumberFormatException e){
- return new PortNumber(defaultValue);
- }
- }
-
-}
--- /dev/null
+package org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925;
+
+
+/**
+ * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation.
+ * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32).
+ *
+ * The reason behind putting it under src/main/java is:
+ * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent
+ * loss of user code.
+ *
+ */
+public class PortNumberUniBuilder {
+
+ public static PortNumberUni getDefaultInstance(java.lang.String defaultValue) {
+ try {
+ long uint32 = Long.parseLong(defaultValue);
+ return new PortNumberUni(uint32);
+ } catch(NumberFormatException e){
+ return new PortNumberUni(defaultValue);
+ }
+ }
+
+}
}
}
+ typedef port-number-uni {
+ type union {
+ type uint32;
+ type string;
+ }
+ }
+
grouping common-port {
leaf port-number {
- type union {
- type uint32;
- type string;
- }
+ type port-number-uni;
}
leaf hardware-address {
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.id.action._case.SetVlanIdAction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.pcp.action._case.SetVlanPcpAction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.CommonPort;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.DlAddressAction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.DlAddressActionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.grouping.Extension;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
OutputActionBuilder outputAction = new OutputActionBuilder();
PortAction port = action.getAugmentation(PortAction.class);
if (port != null) {
- CommonPort.PortNumber protocolAgnosticPort = OpenflowPortsUtil.getProtocolAgnosticPort(
+ PortNumberUni protocolAgnosticPort =
+ OpenflowPortsUtil.getProtocolAgnosticPort(
ofVersion, port.getPort().getValue());
String portNumberAsString = OpenflowPortsUtil.portNumberToString(protocolAgnosticPort);
outputAction.setOutputNodeConnector(new Uri(portNumberAsString));
package org.opendaylight.openflowplugin.openflow.md.util;
-import com.google.common.collect.ImmutableBiMap;
-
import org.opendaylight.openflowjava.protocol.api.util.BinContent;
import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.CommonPort;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumberValues;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumberValuesV10;
+import com.google.common.collect.ImmutableBiMap;
+
/**
* Class which integrates the port constants defined and used by MDSAL and the ports defined in openflow java
*
return port;
}
- public static CommonPort.PortNumber getProtocolAgnosticPort(OpenflowVersion ofVersion, Long portNumber) {
+ public static PortNumberUni getProtocolAgnosticPort(OpenflowVersion ofVersion, Long portNumber) {
String reservedPortLogicalName = getPortLogicalName(ofVersion, portNumber);
- return (reservedPortLogicalName == null ? new CommonPort.PortNumber(portNumber) :
- new CommonPort.PortNumber(reservedPortLogicalName));
+ return (reservedPortLogicalName == null ? new PortNumberUni(portNumber) :
+ new PortNumberUni(reservedPortLogicalName));
}
- public static Long getProtocolPortNumber(OpenflowVersion ofVersion, CommonPort.PortNumber port) {
+ public static Long getProtocolPortNumber(OpenflowVersion ofVersion, PortNumberUni port) {
String portLogicalName = port.getString();
if (portLogicalName != null) {
* @param portNumber
* @return string containing number or logical name
*/
- public static String portNumberToString(CommonPort.PortNumber portNumber) {
+ public static String portNumberToString(PortNumberUni portNumber) {
String result = null;
if (portNumber.getUint32() != null) {
result = String.valueOf(portNumber.getUint32());
import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor;
import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;
import org.opendaylight.openflowplugin.api.openflow.md.core.session.IMessageDispatchService;
-import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil;
import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext;
-import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil;
import org.opendaylight.openflowplugin.api.statistics.MessageSpy;
+import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil;
+import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.RemoveFlowInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.CommonPort.PortNumber;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.PortBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.Port;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.PortKey;
false, false, false, false,
true, true, true, true,
false, false, false, false));
- port.setPortNumber(new PortNumber(42L));
+ port.setPortNumber(new PortNumberUni(42L));
port.setHardwareAddress(new MacAddress("01:23:45:67:89:ab"));
port.setBarrier(true);
port.setContainerName("TestContainer");
import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.CommonPort.PortNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.State;
PortBuilder portBld = new PortBuilder();
portBld.setAdvertisedFeatures(features);
portBld.setConfiguration(config);
- portBld.setPortNumber(new PortNumber(42L));
+ portBld.setPortNumber(new PortNumberUni(42L));
portBld.setHardwareAddress(new MacAddress(DEFAULT_MAC_ADDRESS));
PortModInput portOut = PortConvertor.toPortModInput(portBld.build(), EncodeConstants.OF13_VERSION_ID);
flowCapableNodeConnectorBuilder.setMaximumSpeed(null);
flowCapableNodeConnectorBuilder.setName("foo");
flowCapableNodeConnectorBuilder.setPeerFeatures(features);
- flowCapableNodeConnectorBuilder.setPortNumber(new PortNumber(42L));
+ flowCapableNodeConnectorBuilder.setPortNumber(new PortNumberUni(42L));
flowCapableNodeConnectorBuilder.setState(state);
flowCapableNodeConnectorBuilder.setSupported(features);
package org.opendaylight.openflowplugin.openflow.md.util;
+import java.util.HashMap;
+import java.util.Map;
+
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.CommonPort;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
-import java.util.HashMap;
-import java.util.Map;
-
/**
* @author: Kamal Rameshan (kramesha@cisco.com)
* @since : 6/2/14
}
/**
- * test for method {@link OpenflowPortsUtil#portNumberToString(CommonPort.PortNumber)}
+ * test for method {@link OpenflowPortsUtil#portNumberToString(PortNumber)}
*/
@Test
public void testPortNumberToString() {
- CommonPort.PortNumber portNumber;
+ PortNumberUni portNumber;
- portNumber = new CommonPort.PortNumber(42L);
+ portNumber = new PortNumberUni(42L);
Assert.assertEquals("42", OpenflowPortsUtil.portNumberToString(portNumber));
- portNumber = new CommonPort.PortNumber(OutputPortValues.FLOOD.toString());
+ portNumber = new PortNumberUni(OutputPortValues.FLOOD.toString());
Assert.assertEquals("FLOOD", OpenflowPortsUtil.portNumberToString(portNumber));
try {
- portNumber = new CommonPort.PortNumber((String) null);
+ portNumber = new PortNumberUni((String) null);
Assert.fail("NPE was expected - due to value type");
} catch (Exception e) {
// expected