Bump versions to 0.21.8-SNAPSHOT
[bgpcep.git] / rsvp / impl / src / main / java / org / opendaylight / protocol / rsvp / parser / impl / subobject / ero / EROLabelSubobjectParser.java
index 2db8811407e054efa50e0235d453cf88033ad1b5..5a636989934145d432fa689cb7b05e85c6119d91 100644 (file)
@@ -25,8 +25,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.explicit.route.subobjects.list.SubobjectContainer;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.explicit.route.subobjects.list.SubobjectContainerBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.label.subobject.LabelType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class EROLabelSubobjectParser implements EROSubobjectParser, EROSubobjectSerializer {
+    private static final Logger LOG = LoggerFactory.getLogger(EROLabelSubobjectParser.class);
 
     public static final int TYPE = 3;
 
@@ -48,30 +51,35 @@ public class EROLabelSubobjectParser implements EROSubobjectParser, EROSubobject
 
     @Override
     public SubobjectContainer parseSubobject(final ByteBuf buffer, final boolean loose) throws RSVPParsingException {
-        Preconditions.checkArgument(buffer != null && buffer.isReadable(), "Array of bytes is mandatory. Can't be null or empty.");
+        Preconditions.checkArgument(buffer != null && buffer.isReadable(),
+            "Array of bytes is mandatory. Can't be null or empty.");
         if (buffer.readableBytes() < HEADER_LENGTH) {
-            throw new RSVPParsingException("Wrong length of array of bytes. Passed: " + buffer.readableBytes() + "; Expected: >"
-                + HEADER_LENGTH + ".");
+            throw new RSVPParsingException("Wrong length of array of bytes. Passed: " + buffer.readableBytes() + "; "
+                + "Expected: >" + HEADER_LENGTH + ".");
         }
         final BitArray reserved = BitArray.valueOf(buffer, FLAGS_SIZE);
         final short cType = buffer.readUnsignedByte();
 
         final LabelType labelType = this.registry.parseLabel(cType, buffer.slice());
         if (labelType == null) {
-            throw new RSVPParsingException("Unknown C-TYPE for ero label subobject. Passed: " + cType);
+            LOG.warn("Ignoring ERO label subobject with unknown C-TYPE: {}", cType);
+            return null;
         }
         final LabelBuilder builder = new LabelBuilder();
         builder.setUniDirectional(reserved.get(U_FLAG_OFFSET));
         builder.setLabelType(labelType);
-        return new SubobjectContainerBuilder().setLoose(loose).setSubobjectType(new LabelCaseBuilder().setLabel(builder.build()).build()).build();
+        return new SubobjectContainerBuilder().setLoose(loose).setSubobjectType(
+            new LabelCaseBuilder().setLabel(builder.build()).build()).build();
     }
 
     @Override
     public void serializeSubobject(final SubobjectContainer subobject, final ByteBuf buffer) {
-        Preconditions.checkArgument(subobject.getSubobjectType() instanceof LabelCase, "Unknown subobject instance. Passed %s. Needed LabelCase.", subobject.getSubobjectType().getClass());
+        Preconditions.checkArgument(subobject.getSubobjectType() instanceof LabelCase,
+            "Unknown subobject instance. Passed %s. Needed LabelCase.",
+            subobject.getSubobjectType().getClass());
         final Label label = ((LabelCase) subobject.getSubobjectType()).getLabel();
         final ByteBuf body = Unpooled.buffer();
-        this.registry.serializeLabel(label.isUniDirectional(), false, label.getLabelType(), body);
-        EROSubobjectUtil.formatSubobject(TYPE, subobject.isLoose(), body, buffer);
+        this.registry.serializeLabel(label.getUniDirectional(), false, label.getLabelType(), body);
+        EROSubobjectUtil.formatSubobject(TYPE, subobject.getLoose(), body, buffer);
     }
 }