import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.opendaylight.controller.sal.core.Node;
import org.opendaylight.controller.sal.core.NodeConnector;
+import org.opendaylight.controller.sal.utils.HexEncode;
/**
* The class describes switch related information including L2 address, ports,
private static final long serialVersionUID = 1L;
private byte[] dataLayerAddress;
private Set<NodeConnector> nodeConnectors;
- private List<NodeConnector> spanPorts;
+ private final List<NodeConnector> spanPorts;
private Node node;
/*
this.node = node;
this.nodeConnectors = new HashSet<NodeConnector>();
this.spanPorts = new ArrayList<NodeConnector>(2);
- this.dataLayerAddress = deriveMacAddress();
+ this.dataLayerAddress = null;
}
/**
this.node = node;
}
- private byte[] deriveMacAddress() {
- long dpid = (Long) this.node.getID();
- byte[] mac = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-
- for (short i = 0; i < 6; i++) {
- mac[5 - i] = (byte) dpid;
- dpid >>= 8;
- }
-
- return mac;
- }
-
public void addSpanPorts(List<NodeConnector> portList) {
for (NodeConnector port : portList) {
spanPorts.add(port);
@Override
public int hashCode() {
- return HashCodeBuilder.reflectionHashCode(this);
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + Arrays.hashCode(dataLayerAddress);
+ result = prime * result + ((node == null) ? 0 : node.hashCode());
+ result = prime * result
+ + ((nodeConnectors == null) ? 0 : nodeConnectors.hashCode());
+ result = prime * result
+ + ((spanPorts == null) ? 0 : spanPorts.hashCode());
+ return result;
}
@Override
public boolean equals(Object obj) {
- return EqualsBuilder.reflectionEquals(this, obj);
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ Switch other = (Switch) obj;
+ if (!Arrays.equals(dataLayerAddress, other.dataLayerAddress)) {
+ return false;
+ }
+ if (node == null) {
+ if (other.node != null) {
+ return false;
+ }
+ } else if (!node.equals(other.node)) {
+ return false;
+ }
+ if (nodeConnectors == null) {
+ if (other.nodeConnectors != null) {
+ return false;
+ }
+ } else if (!nodeConnectors.equals(other.nodeConnectors)) {
+ return false;
+ }
+ if (spanPorts == null) {
+ if (other.spanPorts != null) {
+ return false;
+ }
+ } else if (!spanPorts.equals(other.spanPorts)) {
+ return false;
+ }
+ return true;
}
@Override
public String toString() {
- return "Switch[" + ReflectionToStringBuilder.toString(this) + "]";
+ return "Switch [dataLayerAddress=" + HexEncode.bytesToHexStringFormat(dataLayerAddress)
+ + ", nodeConnectors=" + nodeConnectors + ", spanPorts="
+ + spanPorts + ", node=" + node + "]";
}
}