BUG-50 : adjusted ERO object.
[bgpcep.git] / pcep / impl / src / main / java / org / opendaylight / protocol / pcep / impl / subobject / EROUnnumberedInterfaceSubobjectParser.java
index b597bfb7b4ccdc1124f47c3890799fac26346d3b..7116b7030949a27efa80f842b223ae59f4d03edb 100644 (file)
@@ -11,8 +11,8 @@ import org.opendaylight.protocol.pcep.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.EROSubobjectParser;
 import org.opendaylight.protocol.pcep.spi.EROSubobjectSerializer;
 import org.opendaylight.protocol.util.ByteArray;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.Subobjects;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.SubobjectsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.Subobjects;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.SubobjectsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.UnnumberedSubobject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.basic.explicit.route.subobjects.subobject.type.UnnumberedBuilder;
 
@@ -25,21 +25,23 @@ public class EROUnnumberedInterfaceSubobjectParser implements EROSubobjectParser
 
        public static final int TYPE = 4;
 
-       public static final int ROUTER_ID_NUMBER_LENGTH = 4;
-       public static final int INTERFACE_ID_NUMBER_LENGTH = 4;
+       private static final int ROUTER_ID_NUMBER_LENGTH = 4;
+       private static final int INTERFACE_ID_NUMBER_LENGTH = 4;
 
-       public static final int ROUTER_ID_NUMBER_OFFSET = 2; // added reserved field of size 2
-       public static final int INTERFACE_ID_NUMBER_OFFSET = ROUTER_ID_NUMBER_OFFSET + ROUTER_ID_NUMBER_LENGTH;
+       private static final int ROUTER_ID_NUMBER_OFFSET = 2;
+       private static final int INTERFACE_ID_NUMBER_OFFSET = ROUTER_ID_NUMBER_OFFSET + ROUTER_ID_NUMBER_LENGTH;
 
-       public static final int CONTENT_LENGTH = INTERFACE_ID_NUMBER_OFFSET + INTERFACE_ID_NUMBER_LENGTH;
+       private static final int CONTENT_LENGTH = INTERFACE_ID_NUMBER_OFFSET + INTERFACE_ID_NUMBER_LENGTH;
 
        @Override
        public Subobjects parseSubobject(final byte[] buffer, final boolean loose) throws PCEPDeserializerException {
-               if (buffer == null || buffer.length == 0)
+               if (buffer == null || buffer.length == 0) {
                        throw new IllegalArgumentException("Array of bytes is mandatory. Can't be null or empty.");
-               if (buffer.length != CONTENT_LENGTH)
+               }
+               if (buffer.length != CONTENT_LENGTH) {
                        throw new PCEPDeserializerException("Wrong length of array of bytes. Passed: " + buffer.length + "; Expected: "
                                        + CONTENT_LENGTH + ".");
+               }
                final SubobjectsBuilder builder = new SubobjectsBuilder();
                builder.setLoose(loose);
                final UnnumberedBuilder ubuilder = new UnnumberedBuilder();
@@ -52,18 +54,17 @@ public class EROUnnumberedInterfaceSubobjectParser implements EROSubobjectParser
 
        @Override
        public byte[] serializeSubobject(final Subobjects subobject) {
-               if (!(subobject.getSubobjectType() instanceof UnnumberedSubobject))
+               if (!(subobject.getSubobjectType() instanceof UnnumberedSubobject)) {
                        throw new IllegalArgumentException("Unknown ExplicitRouteSubobject instance. Passed " + subobject.getSubobjectType().getClass()
                                        + ". Needed UnnumberedSubobject.");
-
+               }
                byte[] retBytes;
                retBytes = new byte[CONTENT_LENGTH];
                final UnnumberedSubobject specObj = (UnnumberedSubobject) subobject.getSubobjectType();
-
-               ByteArray.copyWhole(ByteArray.longToBytes(specObj.getRouterId()), retBytes, ROUTER_ID_NUMBER_OFFSET);
+               ByteArray.copyWhole(ByteArray.subByte(ByteArray.longToBytes(specObj.getRouterId()), 4, ROUTER_ID_NUMBER_LENGTH), retBytes,
+                               ROUTER_ID_NUMBER_OFFSET);
                System.arraycopy(ByteArray.longToBytes(specObj.getInterfaceId()), Long.SIZE / Byte.SIZE - INTERFACE_ID_NUMBER_LENGTH, retBytes,
                                INTERFACE_ID_NUMBER_OFFSET, INTERFACE_ID_NUMBER_LENGTH);
-
                return retBytes;
        }