Merge "Fix junit dependencies in poms. Reuse existing from parent, add missing ones."
[bgpcep.git] / pcep / impl / src / main / java / org / opendaylight / protocol / pcep / impl / object / PCEPGlobalConstraintsObjectParser.java
index a381f7e63664f5dce319f82059eda08f9dfac9d6..c33e6f07b7312564dc149e0cbac19be59278f74a 100644 (file)
@@ -9,39 +9,38 @@ package org.opendaylight.protocol.pcep.impl.object;
 
 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.PCEPDocumentedException;
-import org.opendaylight.protocol.pcep.spi.AbstractObjectParser;
-import org.opendaylight.protocol.pcep.spi.SubobjectHandlerRegistry;
 import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
-import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.GcObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ObjectHeader;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.svec.GcBuilder;
 
+import com.google.common.primitives.UnsignedBytes;
+
 /**
  * Parser for {@link GcObject}
  */
-public class PCEPGlobalConstraintsObjectParser extends AbstractObjectParser<GcBuilder> {
+public class PCEPGlobalConstraintsObjectParser extends AbstractObjectWithTlvsParser<GcBuilder> {
 
        public static final int CLASS = 24;
 
        public static final int TYPE = 1;
 
-       private final static int MAX_HOP_F_LENGTH = 1;
-       private final static int MAX_UTIL_F_LENGTH = 1;
-       private final static int MIN_UTIL_F_LENGTH = 1;
-       private final static int OVER_BOOKING_FACTOR_F_LENGTH = 1;
+       private static final int MAX_HOP_F_LENGTH = 1;
+       private static final int MAX_UTIL_F_LENGTH = 1;
+       private static final int MIN_UTIL_F_LENGTH = 1;
+       private static final int OVER_BOOKING_FACTOR_F_LENGTH = 1;
 
-       private final static int MAX_HOP_F_OFFSET = 0;
-       private final static int MAX_UTIL_F_OFFSET = MAX_HOP_F_OFFSET + MAX_HOP_F_LENGTH;
-       private final static int MIN_UTIL_F_OFFSET = MAX_UTIL_F_OFFSET + MAX_UTIL_F_LENGTH;
-       private final static int OVER_BOOKING_FACTOR_F_OFFSET = MIN_UTIL_F_OFFSET + MIN_UTIL_F_LENGTH;
+       private static final int MAX_HOP_F_OFFSET = 0;
+       private static final int MAX_UTIL_F_OFFSET = MAX_HOP_F_OFFSET + MAX_HOP_F_LENGTH;
+       private static final int MIN_UTIL_F_OFFSET = MAX_UTIL_F_OFFSET + MAX_UTIL_F_LENGTH;
+       private static final int OVER_BOOKING_FACTOR_F_OFFSET = MIN_UTIL_F_OFFSET + MIN_UTIL_F_LENGTH;
 
-       private final static int TLVS_OFFSET = OVER_BOOKING_FACTOR_F_OFFSET + OVER_BOOKING_FACTOR_F_LENGTH;
+       private static final int TLVS_OFFSET = OVER_BOOKING_FACTOR_F_OFFSET + OVER_BOOKING_FACTOR_F_LENGTH;
 
-       public PCEPGlobalConstraintsObjectParser(final SubobjectHandlerRegistry subobjReg, final TlvHandlerRegistry tlvReg) {
-               super(subobjReg, tlvReg);
+       public PCEPGlobalConstraintsObjectParser(final TlvHandlerRegistry tlvReg) {
+               super(tlvReg);
        }
 
        @Override
@@ -49,19 +48,15 @@ public class PCEPGlobalConstraintsObjectParser extends AbstractObjectParser<GcBu
                if (bytes == null || bytes.length == 0) {
                        throw new IllegalArgumentException("Array of bytes is mandatory. Can't be null or empty.");
                }
-
                final GcBuilder builder = new GcBuilder();
 
-               parseTlvs(builder, ByteArray.cutBytes(bytes, TLVS_OFFSET));
-
                builder.setIgnore(header.isIgnore());
                builder.setProcessingRule(header.isProcessingRule());
 
-               builder.setMaxHop((short) (bytes[MAX_HOP_F_OFFSET] & 0xFF));
-               builder.setMinUtilization((short) (bytes[MIN_UTIL_F_OFFSET] & 0xFF));
-               builder.setMaxUtilization((short) (bytes[MAX_UTIL_F_OFFSET] & 0xFF));
-               builder.setOverBookingFactor((short) (bytes[OVER_BOOKING_FACTOR_F_OFFSET] & 0xFF));
-
+               builder.setMaxHop((short) UnsignedBytes.toInt(bytes[MAX_HOP_F_OFFSET]));
+               builder.setMinUtilization((short) UnsignedBytes.toInt(bytes[MIN_UTIL_F_OFFSET]));
+               builder.setMaxUtilization((short) UnsignedBytes.toInt(bytes[MAX_UTIL_F_OFFSET]));
+               builder.setOverBookingFactor((short) UnsignedBytes.toInt(bytes[OVER_BOOKING_FACTOR_F_OFFSET]));
                return builder.build();
        }
 
@@ -75,19 +70,12 @@ public class PCEPGlobalConstraintsObjectParser extends AbstractObjectParser<GcBu
                if (!(object instanceof GcObject)) {
                        throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass() + ". Needed GcObject.");
                }
-
                final GcObject specObj = (GcObject) object;
-
-               // final byte[] tlvs = PCEPTlvParser.put(specObj.getTlvs());
                final byte[] retBytes = new byte[TLVS_OFFSET + 0];
-
-               retBytes[MAX_HOP_F_OFFSET] = specObj.getMaxHop().byteValue();
-               retBytes[MAX_UTIL_F_OFFSET] = specObj.getMaxUtilization().byteValue();
-               retBytes[MIN_UTIL_F_OFFSET] = specObj.getMinUtilization().byteValue();
-               retBytes[OVER_BOOKING_FACTOR_F_OFFSET] = specObj.getOverBookingFactor().byteValue();
-
-               // ByteArray.copyWhole(tlvs, retBytes, TLVS_OFFSET);
-
+               retBytes[MAX_HOP_F_OFFSET] = UnsignedBytes.checkedCast(specObj.getMaxHop());
+               retBytes[MAX_UTIL_F_OFFSET] = UnsignedBytes.checkedCast(specObj.getMaxUtilization());
+               retBytes[MIN_UTIL_F_OFFSET] = UnsignedBytes.checkedCast(specObj.getMinUtilization());
+               retBytes[OVER_BOOKING_FACTOR_F_OFFSET] = UnsignedBytes.checkedCast(specObj.getOverBookingFactor());
                return retBytes;
        }