From ca152f8991ea7b3a304eadc0cccab73632e15370 Mon Sep 17 00:00:00 2001 From: Milos Fabian Date: Thu, 7 Aug 2014 12:44:27 +0200 Subject: [PATCH] Bug-731 Fixed few minor Sonar warnings Change-Id: Id1ac7061e395f4feca8d29304785d03ef14007ad Signed-off-by: Milos Fabian --- .../protocol/bgp/parser/BGPError.java | 145 +++++++++--------- .../open/GracefulCapabilityHandler.java | 6 +- .../bgp/rib/impl/BGPPeerAcceptorModule.java | 5 +- .../protocol/bgp/rib/impl/AdjRIBOutEntry.java | 4 +- .../protocol/bgp/rib/impl/spi/AdjRIBsOut.java | 2 +- .../bgp/rib/mock/EventBusRegistration.java | 6 +- .../provider/LinkstateTopologyBuilder.java | 12 +- .../spi/AbstractObjectWithTlvsParser.java | 5 +- .../protocol/util/PCEPHexDumpParser.java | 6 +- 9 files changed, 97 insertions(+), 94 deletions(-) diff --git a/bgp/parser-api/src/main/java/org/opendaylight/protocol/bgp/parser/BGPError.java b/bgp/parser-api/src/main/java/org/opendaylight/protocol/bgp/parser/BGPError.java index 8e2ed85b70..489ac8b505 100644 --- a/bgp/parser-api/src/main/java/org/opendaylight/protocol/bgp/parser/BGPError.java +++ b/bgp/parser-api/src/main/java/org/opendaylight/protocol/bgp/parser/BGPError.java @@ -7,6 +7,10 @@ */ package org.opendaylight.protocol.bgp.parser; +import com.google.common.collect.Maps; +import java.util.Map; + + /** * Possible errors from implemented RFCs and drafts. Each error consists of error code and error subcode (code/subcode * in comments). @@ -103,91 +107,94 @@ public enum BGPError { */ CEASE((short) 6, (short) 0); - private final short code; + private static final Map VALUE_MAP; + + static { + VALUE_MAP = Maps.newHashMap(); + for (final BGPError enumItem : BGPError.values()) { + VALUE_MAP.put(enumItem.getErrorIdentifier(), enumItem); + } + } - private final short subcode; + private final BGPErrorIdentifier errorId; BGPError(final short code, final short subcode) { - this.code = code; - this.subcode = subcode; + this.errorId = new BGPErrorIdentifier(code, subcode); } public short getCode() { - return this.code; + return this.errorId.getCode(); } public short getSubcode() { - return this.subcode; + return this.errorId.getSubCode(); } - public static BGPError forValue(final int e, final int s) { - if (e == 1) { - if (s == 1) { - return BGPError.CONNECTION_NOT_SYNC; - } - if (s == 2) { - return BGPError.BAD_MSG_LENGTH; - } - if (s == 3) { - return BGPError.BAD_MSG_TYPE; - } - } else if (e == 2) { - if (s == 0) { - return BGPError.UNSPECIFIC_OPEN_ERROR; - } - if (s == 1) { - return BGPError.VERSION_NOT_SUPPORTED; - } - if (s == 2) { - return BGPError.BAD_PEER_AS; - } - if (s == 3) { - return BGPError.BAD_BGP_ID; - } - if (s == 4) { - return BGPError.OPT_PARAM_NOT_SUPPORTED; - } - if (s == 6) { - return BGPError.HOLD_TIME_NOT_ACC; - } - } else if (e == 3) { - if (s == 1) { - return BGPError.MALFORMED_ATTR_LIST; - } - if (s == 2) { - return BGPError.WELL_KNOWN_ATTR_NOT_RECOGNIZED; - } - if (s == 3) { - return BGPError.WELL_KNOWN_ATTR_MISSING; - } - if (s == 4) { - return BGPError.ATTR_FLAGS_MISSING; - } - if (s == 5) { - return BGPError.ATTR_LENGTH_ERROR; - } - if (s == 6) { - return BGPError.ORIGIN_ATTR_NOT_VALID; + private BGPErrorIdentifier getErrorIdentifier() { + return this.errorId; + } + + /** + * Caret for combination of Error-type and Error-value + */ + private static final class BGPErrorIdentifier { + private final short code; + private final short subcode; + + BGPErrorIdentifier(final short code, final short subcode) { + this.code = code; + this.subcode = subcode; + } + + public short getCode() { + return this.code; + } + + public short getSubCode() { + return this.subcode; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + this.code; + result = prime * result + this.subcode; + return result; + } + + @Override + public boolean equals(final java.lang.Object obj) { + if (this == obj) { + return true; } - if (s == 8) { - return BGPError.NEXT_HOP_NOT_VALID; + if (obj == null) { + return false; } - if (s == 9) { - return BGPError.OPT_ATTR_ERROR; + if (this.getClass() != obj.getClass()) { + return false; } - if (s == 10) { - return BGPError.NETWORK_NOT_VALID; + final BGPErrorIdentifier other = (BGPErrorIdentifier) obj; + if (this.code != other.code) { + return false; } - if (s == 11) { - return BGPError.AS_PATH_MALFORMED; + if (this.subcode != other.subcode) { + return false; } - } else if (e == 4) { - return BGPError.HOLD_TIMER_EXPIRED; - } else if (e == 5) { - return BGPError.FSM_ERROR; - } else if (e == 6) { - return BGPError.CEASE; + return true; + } + + @Override + public String toString() { + return "type " + this.code + " value " + this.subcode; + } + } + + public static BGPError forValue(final int code, final int subcode) { + final BGPError e = VALUE_MAP.get(new BGPErrorIdentifier((short) code, (short) subcode)); + if (e != null) { + return e; } - throw new IllegalArgumentException("BGP Error code " + e + " and subcode " + s + " not recognized."); + throw new IllegalArgumentException("BGP Error code " + code + " and subcode " + subcode + " not recognized."); } } diff --git a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/open/GracefulCapabilityHandler.java b/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/open/GracefulCapabilityHandler.java index 8c980c1c03..cda8c5fac3 100644 --- a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/open/GracefulCapabilityHandler.java +++ b/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/open/GracefulCapabilityHandler.java @@ -73,10 +73,8 @@ public final class GracefulCapabilityHandler implements CapabilityParser, Capabi int flagBits = 0; final RestartFlags flags = grace.getRestartFlags(); - if (flags != null) { - if (flags.isRestartState()) { - flagBits |= RESTART_FLAG_STATE; - } + if (flags != null && flags.isRestartState()) { + flagBits |= RESTART_FLAG_STATE; } int timeval = 0; final Integer time = grace.getRestartTime(); diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerAcceptorModule.java b/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerAcceptorModule.java index 51a9a9c4de..60fb42cd1d 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerAcceptorModule.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerAcceptorModule.java @@ -16,6 +16,9 @@ import org.opendaylight.protocol.bgp.rib.impl.BGPServerSessionValidator; * BGP peer acceptor that handles incoming bgp connections. */ public class BGPPeerAcceptorModule extends org.opendaylight.controller.config.yang.bgp.rib.impl.AbstractBGPPeerAcceptorModule { + + private static final int PRIVILEGED_PORTS = 1024; + public BGPPeerAcceptorModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { super(identifier, dependencyResolver); } @@ -27,7 +30,7 @@ public class BGPPeerAcceptorModule extends org.opendaylight.controller.config.ya @Override public void customValidation() { // check if unix root user - if (!PlatformDependent.isWindows() && !PlatformDependent.isRoot() && getBindingPort().getValue() < 1024) { + if (!PlatformDependent.isWindows() && !PlatformDependent.isRoot() && getBindingPort().getValue() < PRIVILEGED_PORTS) { throw new AccessControlException("Unable to bind port " + getBindingPort().getValue() + " while running as non-root user."); } // Try to parse address diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AdjRIBOutEntry.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AdjRIBOutEntry.java index 018a7da5bb..2a5544d51e 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AdjRIBOutEntry.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AdjRIBOutEntry.java @@ -8,9 +8,7 @@ package org.opendaylight.protocol.bgp.rib.impl; import com.google.common.base.Preconditions; - import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; - import org.opendaylight.protocol.bgp.rib.spi.RouteEncoder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.Route; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.route.Attributes; @@ -71,7 +69,7 @@ final class AdjRIBOutEntry { return ribOut; } - static final boolean isNone(final Object o) { + static boolean isNone(final Object o) { return o == NLRIENTRY_NONE_VALUE; } } \ No newline at end of file diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/AdjRIBsOut.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/AdjRIBsOut.java index 4bd794361d..dc4a526a62 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/AdjRIBsOut.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/AdjRIBsOut.java @@ -11,5 +11,5 @@ import org.opendaylight.protocol.bgp.rib.spi.RouteEncoder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.Route; public interface AdjRIBsOut { - public void put(final RouteEncoder ribOut, final Object key, final Route newValue); + void put(final RouteEncoder ribOut, final Object key, final Route newValue); } diff --git a/bgp/rib-mock/src/main/java/org/opendaylight/protocol/bgp/rib/mock/EventBusRegistration.java b/bgp/rib-mock/src/main/java/org/opendaylight/protocol/bgp/rib/mock/EventBusRegistration.java index 746ae03b04..e6ef2091fd 100644 --- a/bgp/rib-mock/src/main/java/org/opendaylight/protocol/bgp/rib/mock/EventBusRegistration.java +++ b/bgp/rib-mock/src/main/java/org/opendaylight/protocol/bgp/rib/mock/EventBusRegistration.java @@ -10,10 +10,8 @@ package org.opendaylight.protocol.bgp.rib.mock; import com.google.common.collect.Sets; import com.google.common.eventbus.EventBus; import com.google.common.eventbus.Subscribe; - import java.util.List; import java.util.Set; - import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl; import org.opendaylight.protocol.bgp.rib.spi.BGPSession; import org.opendaylight.protocol.bgp.rib.spi.BGPSessionListener; @@ -80,6 +78,8 @@ final class EventBusRegistration extends AbstractListenerRegistration implements ObjectParser, O // FIXME: No TLVs by default, fallback to augments } - abstract protected void addVendorInformationTlvs(final T builder, final List tlvs); + protected abstract void addVendorInformationTlvs(final T builder, final List tlvs); protected final void serializeVendorInformationTlvs(final List tlvs, final ByteBuf buffer) { if (tlvs != null && !tlvs.isEmpty()) { diff --git a/util/src/main/java/org/opendaylight/protocol/util/PCEPHexDumpParser.java b/util/src/main/java/org/opendaylight/protocol/util/PCEPHexDumpParser.java index 24560af310..dd20b7ae6e 100644 --- a/util/src/main/java/org/opendaylight/protocol/util/PCEPHexDumpParser.java +++ b/util/src/main/java/org/opendaylight/protocol/util/PCEPHexDumpParser.java @@ -61,14 +61,16 @@ public final class PCEPHexDumpParser { final int lengthIdx = idx + LENGTH.length(); final int messageIdx = content.indexOf('.', lengthIdx); final int length = Integer.parseInt(content.substring(lengthIdx, messageIdx)); - final int messageEndIdx = messageIdx + (length * 2) + 1; // dot + // dot + final int messageEndIdx = messageIdx + (length * 2) + 1; // Assert that message is longer than minimum 4(header.length == 4) // If length in PCEP message would be 0, loop would never end Preconditions.checkArgument(length >= MINIMAL_LENGTH, "Invalid message at index " + idx + ", length atribute is lower than " + MINIMAL_LENGTH); - final String hexMessage = content.substring(messageIdx + 1, messageEndIdx); // dot + // dot + final String hexMessage = content.substring(messageIdx + 1, messageEndIdx); byte[] message = null; try { message = Hex.decodeHex(hexMessage.toCharArray()); -- 2.36.6