Redefine AbstractMessageParser object parsing
[bgpcep.git] / pcep / base-parser / src / main / java / org / opendaylight / protocol / pcep / parser / message / PCEPOpenMessageParser.java
index ea7ebcae04e6701f39b12b91e41d25014a342230..58eda092a6e10ea972e1c36271f2e4998bde11ff 100644 (file)
@@ -7,10 +7,12 @@
  */
 package org.opendaylight.protocol.pcep.parser.message;
 
-import com.google.common.base.Preconditions;
+import static com.google.common.base.Preconditions.checkArgument;
+
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import java.util.List;
+import java.util.Queue;
 import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
 import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
@@ -35,11 +37,11 @@ public class PCEPOpenMessageParser extends AbstractMessageParser {
 
     @Override
     public void serializeMessage(final Message message, final ByteBuf out) {
-        Preconditions.checkArgument(message instanceof OpenMessage,
+        checkArgument(message instanceof OpenMessage,
                 "Wrong instance of Message. Passed instance of %s. Need OpenMessage.", message.getClass());
         final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.open.message
             .OpenMessage open = ((OpenMessage) message).getOpenMessage();
-        Preconditions.checkArgument(open.getOpen() != null, "Open Object must be present in Open Message.");
+        checkArgument(open.getOpen() != null, "Open Object must be present in Open Message.");
         final ByteBuf buffer = Unpooled.buffer();
         serializeObject(open.getOpen(), buffer);
         MessageUtil.formatMessage(TYPE, buffer, out);
@@ -47,22 +49,17 @@ public class PCEPOpenMessageParser extends AbstractMessageParser {
 
     @Override
     protected org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev181109.Open validate(
-            final List<Object> objects, final List<Message> errors) throws PCEPDeserializerException {
-        Preconditions.checkArgument(objects != null, "Passed list can't be null.");
+            final Queue<Object> objects, final List<Message> errors) throws PCEPDeserializerException {
+        checkArgument(objects != null, "Passed list can't be null.");
 
-        if (objects.isEmpty() || !(objects.get(0) instanceof Open)) {
+        final Object open = objects.poll();
+        if (!(open instanceof Open)) {
             throw new PCEPDeserializerException("Open message doesn't contain OPEN object.");
         }
-
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.open.message
-            .OpenMessage msg = new OpenMessageBuilder().setOpen((Open) objects.get(0)).build();
-
-        objects.remove(0);
-
         if (!objects.isEmpty()) {
             throw new PCEPDeserializerException("Unprocessed Objects: " + objects);
         }
 
-        return new OpenBuilder().setOpenMessage(msg).build();
+        return new OpenBuilder().setOpenMessage(new OpenMessageBuilder().setOpen((Open) open).build()).build();
     }
 }