BUG-612 : switched PCEP message parsing to ByteBuf. 53/7553/1
authorDana Kutenicsova <dkutenic@cisco.com>
Sat, 31 May 2014 21:45:48 +0000 (23:45 +0200)
committerDana Kutenicsova <dkutenic@cisco.com>
Sat, 31 May 2014 22:29:40 +0000 (00:29 +0200)
Change-Id: I4f68539bd8b70097f62506ad655f1d899ef4204f
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
pcep/ietf-stateful02/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPMessageTest.java
pcep/ietf-stateful07/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPValidatorTest.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPByteToMessageDecoder.java
pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPValidatorTest.java
pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/AbstractMessageParser.java
pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/MessageParser.java
pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/MessageRegistry.java
pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimpleMessageRegistry.java

index 4a9b45d40c30254d07fcbb99815fc31046fa433e..fa47424ffd29696e7b09c0d2132ff93b69c7df71 100644 (file)
@@ -143,7 +143,7 @@ public class PCEPMessageTest {
        public void testPcinitMsg() throws IOException, PCEPDeserializerException {
                try (InitiatedActivator a = new InitiatedActivator()) {
                        a.start(this.ctx);
-                       final byte[] result = ByteArray.fileToBytes("src/test/resources/Pcinit.bin");
+                       final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/Pcinit.bin"));
 
                        final PcinitiateMessageParser parser = new PcinitiateMessageParser(this.ctx.getObjectHandlerRegistry());
 
@@ -159,10 +159,10 @@ public class PCEPMessageTest {
                        builder.setRequests(reqs);
 
                        assertEquals(new PcinitiateBuilder().setPcinitiateMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       final ByteBuf buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+                       final ByteBuf buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcinitiateBuilder().setPcinitiateMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
                }
        }
 
@@ -170,7 +170,7 @@ public class PCEPMessageTest {
        public void testUpdMsg() throws IOException, PCEPDeserializerException {
                try (StatefulActivator a = new StatefulActivator()) {
                        a.start(this.ctx);
-                       byte[] result = ByteArray.fileToBytes("src/test/resources/PCUpd.2.bin");
+                       ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCUpd.2.bin"));
 
                        final Stateful02PCUpdateRequestMessageParser parser = new Stateful02PCUpdateRequestMessageParser(this.ctx.getObjectHandlerRegistry());
 
@@ -184,12 +184,12 @@ public class PCEPMessageTest {
                        builder.setUpdates(updates);
 
                        assertEquals(new PcupdBuilder().setPcupdMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       ByteBuf buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes()-4), Collections.<Message> emptyList()));
+                       ByteBuf buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcupdBuilder().setPcupdMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
 
-                       result = ByteArray.fileToBytes("src/test/resources/PCUpd.5.bin");
+                       result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCUpd.5.bin"));
 
                        final List<Updates> updates1 = Lists.newArrayList();
                        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.pcupd.message.pcupd.message.updates.PathBuilder pBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.pcupd.message.pcupd.message.updates.PathBuilder();
@@ -200,10 +200,10 @@ public class PCEPMessageTest {
                        builder.setUpdates(updates1);
 
                        assertEquals(new PcupdBuilder().setPcupdMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes()-4), Collections.<Message> emptyList()));
+                       buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcupdBuilder().setPcupdMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
                }
        }
 
@@ -211,7 +211,7 @@ public class PCEPMessageTest {
        public void testRptMsg() throws IOException, PCEPDeserializerException {
                try (StatefulActivator a = new StatefulActivator()) {
                        a.start(this.ctx);
-                       byte[] result = ByteArray.fileToBytes("src/test/resources/PCRpt.1.bin");
+                       ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRpt.1.bin"));
 
                        final Stateful02PCReportMessageParser parser = new Stateful02PCReportMessageParser(this.ctx.getObjectHandlerRegistry());
 
@@ -222,12 +222,12 @@ public class PCEPMessageTest {
                        builder.setReports(reports);
 
                        assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       ByteBuf buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes()-4), Collections.<Message> emptyList()));
+                       ByteBuf buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
 
-                       result = ByteArray.fileToBytes("src/test/resources/PCRpt.2.bin");
+                       result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRpt.2.bin"));
 
                        final List<Reports> reports1 = Lists.newArrayList();
                        reports1.add(new ReportsBuilder().setLsp(this.lsp).setPath(
@@ -236,12 +236,12 @@ public class PCEPMessageTest {
                        builder.setReports(reports1);
 
                        assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes()-4), Collections.<Message> emptyList()));
+                       buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
 
-                       result = ByteArray.fileToBytes("src/test/resources/PCRpt.3.bin");
+                       result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRpt.3.bin"));
 
                        final List<Reports> reports2 = Lists.newArrayList();
                        final PathBuilder pBuilder = new PathBuilder();
@@ -252,12 +252,12 @@ public class PCEPMessageTest {
                        builder.setReports(reports2);
 
                        assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes()-4), Collections.<Message> emptyList()));
+                       buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
 
-                       result = ByteArray.fileToBytes("src/test/resources/PCRpt.5.bin");
+                       result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRpt.5.bin"));
 
                        final List<Reports> reports3 = Lists.newArrayList();
                        final PathBuilder pBuilder1 = new PathBuilder();
@@ -269,10 +269,10 @@ public class PCEPMessageTest {
                        builder.setReports(reports3);
 
                        assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes()-4), Collections.<Message> emptyList()));
+                       buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
                }
        }
 }
index 3335c4cd19d6554e350e8b535eef4578ec597b13..37a086da2e1a3d5578f67b204a1ff3a45c248e94 100644 (file)
@@ -213,7 +213,7 @@ public class PCEPValidatorTest {
        public void testOpenMsg() throws IOException, PCEPDeserializerException {
                try (StatefulActivator a = new StatefulActivator()) {
                        a.start(this.ctx);
-                       final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPOpenMessage1.bin");
+                       final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCEPOpenMessage1.bin"));
                        final PCEPOpenMessageParser parser = new PCEPOpenMessageParser(this.ctx.getObjectHandlerRegistry());
                        final OpenMessageBuilder builder = new OpenMessageBuilder();
 
@@ -230,10 +230,10 @@ public class PCEPValidatorTest {
                        builder.setOpen(b.build());
 
                        assertEquals(new OpenBuilder().setOpenMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       final ByteBuf buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+                       final ByteBuf buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new OpenBuilder().setOpenMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
                }
        }
 
@@ -241,7 +241,7 @@ public class PCEPValidatorTest {
        public void testUpdMsg() throws IOException, PCEPDeserializerException {
                try (CrabbeInitiatedActivator a = new CrabbeInitiatedActivator()) {
                        a.start(this.ctx);
-                       byte[] result = ByteArray.fileToBytes("src/test/resources/PCUpd.2.bin");
+                       ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCUpd.2.bin"));
 
                        final Stateful07PCUpdateRequestMessageParser parser = new Stateful07PCUpdateRequestMessageParser(this.ctx.getObjectHandlerRegistry());
 
@@ -255,12 +255,12 @@ public class PCEPValidatorTest {
                        builder.setUpdates(updates);
 
                        assertEquals(new PcupdBuilder().setPcupdMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       ByteBuf buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+                       ByteBuf buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcupdBuilder().setPcupdMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
 
-                       result = ByteArray.fileToBytes("src/test/resources/PCUpd.5.bin");
+                       result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCUpd.5.bin"));
 
                        final List<Updates> updates1 = Lists.newArrayList();
                        final PathBuilder pBuilder1 = new PathBuilder();
@@ -271,10 +271,10 @@ public class PCEPValidatorTest {
                        builder.setUpdates(updates1);
 
                        assertEquals(new PcupdBuilder().setPcupdMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+                       buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcupdBuilder().setPcupdMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
                }
        }
 
@@ -282,7 +282,7 @@ public class PCEPValidatorTest {
        public void testRptMsg() throws IOException, PCEPDeserializerException {
                try (CrabbeInitiatedActivator a = new CrabbeInitiatedActivator()) {
                        a.start(this.ctx);
-                       byte[] result = ByteArray.fileToBytes("src/test/resources/PCRpt.1.bin");
+                       ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRpt.1.bin"));
 
                        final Stateful07PCReportMessageParser parser = new Stateful07PCReportMessageParser(this.ctx.getObjectHandlerRegistry());
 
@@ -293,12 +293,12 @@ public class PCEPValidatorTest {
                        builder.setReports(reports);
 
                        assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       ByteBuf buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+                       ByteBuf buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
 
-                       result = ByteArray.fileToBytes("src/test/resources/PCRpt.2.bin");
+                       result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRpt.2.bin"));
 
                        final List<Reports> reports1 = Lists.newArrayList();
                        reports1.add(new ReportsBuilder().setLsp(this.lsp).setPath(
@@ -307,12 +307,12 @@ public class PCEPValidatorTest {
                        builder.setReports(reports1);
 
                        assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+                       buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
 
-                       result = ByteArray.fileToBytes("src/test/resources/PCRpt.3.bin");
+                       result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRpt.3.bin"));
 
                        final List<Reports> reports2 = Lists.newArrayList();
                        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.reports.PathBuilder pBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.reports.PathBuilder();
@@ -324,12 +324,12 @@ public class PCEPValidatorTest {
                        builder.setReports(reports2);
 
                        assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+                       buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
 
-                       result = ByteArray.fileToBytes("src/test/resources/PCRpt.5.bin");
+                       result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRpt.5.bin"));
 
                        final List<Reports> reports3 = Lists.newArrayList();
                        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.reports.PathBuilder pBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.reports.PathBuilder();
@@ -342,10 +342,10 @@ public class PCEPValidatorTest {
                        builder.setReports(reports3);
 
                        assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+                       buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
                }
        }
 
@@ -353,7 +353,7 @@ public class PCEPValidatorTest {
        public void testPcinitMsg() throws IOException, PCEPDeserializerException {
                try (CrabbeInitiatedActivator a = new CrabbeInitiatedActivator()) {
                        a.start(this.ctx);
-                       final byte[] result = ByteArray.fileToBytes("src/test/resources/Pcinit.bin");
+                       final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/Pcinit.bin"));
 
                        final CInitiated00PCInitiateMessageParser parser = new CInitiated00PCInitiateMessageParser(this.ctx.getObjectHandlerRegistry());
 
@@ -371,10 +371,10 @@ public class PCEPValidatorTest {
                        builder.setRequests(reqs);
 
                        assertEquals(new PcinitiateBuilder().setPcinitiateMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       final ByteBuf buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+                       final ByteBuf buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcinitiateBuilder().setPcinitiateMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
                }
        }
 
@@ -382,7 +382,7 @@ public class PCEPValidatorTest {
        public void testErrorMsg() throws IOException, PCEPDeserializerException {
                try (StatefulActivator a = new StatefulActivator()) {
                        a.start(this.ctx);
-                       byte[] result = ByteArray.fileToBytes("src/test/resources/PCErr.3.bin");
+                       final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCErr.3.bin"));
 
                        final ErrorObject error1 = new ErrorObjectBuilder().setIgnore(false).setProcessingRule(false).setType((short) 3).setValue(
                                        (short) 1).build();
@@ -397,10 +397,10 @@ public class PCEPValidatorTest {
                        builder.setErrorType(new SessionCaseBuilder().setSession(new SessionBuilder().setOpen(this.open).build()).build());
 
                        assertEquals(new PcerrBuilder().setPcerrMessage(builder.build()).build(),
-                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-                       ByteBuf buf = Unpooled.buffer(result.length);
+                                       parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+                       final ByteBuf buf = Unpooled.buffer(result.readableBytes());
                        parser.serializeMessage(new PcerrBuilder().setPcerrMessage(builder.build()).build(), buf);
-                       assertArrayEquals(result, buf.array());
+                       assertArrayEquals(result.array(), buf.array());
                }
        }
 }
index 288452f86f59a12a4401890eea9e139a84cad590..d5af890e58b2e317545aab01e599b12f7f4e4f39 100644 (file)
@@ -18,13 +18,11 @@ import java.util.List;
 import org.opendaylight.protocol.pcep.spi.MessageRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.PCEPMessageConstants;
-import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Preconditions;
-import com.google.common.primitives.UnsignedBytes;
 
 /**
  * A PCEP message parser which also does validation.
@@ -32,10 +30,6 @@ import com.google.common.primitives.UnsignedBytes;
 public final class PCEPByteToMessageDecoder extends ByteToMessageDecoder {
        private static final Logger LOG = LoggerFactory.getLogger(PCEPByteToMessageDecoder.class);
 
-       private static final int TYPE_SIZE = 1;
-
-       private static final int LENGTH_SIZE = 2;
-
        private final MessageRegistry registry;
 
        public PCEPByteToMessageDecoder(final MessageRegistry registry) {
@@ -44,20 +38,18 @@ public final class PCEPByteToMessageDecoder extends ByteToMessageDecoder {
 
        @Override
        protected void decode(final ChannelHandlerContext ctx, final ByteBuf in, final List<Object> out) throws Exception {
-               if (in.readableBytes() == 0) {
+               if (!in.isReadable()) {
                        LOG.debug("No more content in incoming buffer.");
                        return;
                }
 
                in.markReaderIndex();
                LOG.trace("Received to decode: {}", ByteBufUtil.hexDump(in));
-               final byte[] bytes = new byte[in.readableBytes()];
-               in.readBytes(bytes);
 
                final List<Message> errors = new ArrayList<>();
 
                try {
-                       out.add(parse(bytes, errors));
+                       out.add(parse(in.slice(), errors));
                } catch (final PCEPDeserializerException e) {
                        LOG.debug("Failed to decode protocol message", e);
                        this.exceptionCaught(ctx, e);
@@ -73,13 +65,14 @@ public final class PCEPByteToMessageDecoder extends ByteToMessageDecoder {
                }
        }
 
-       private Message parse(final byte[] bytes, final List<Message> errors) throws PCEPDeserializerException {
-               final int type = UnsignedBytes.toInt(bytes[1]);
-               final int msgLength = ByteArray.bytesToInt(ByteArray.subByte(bytes, TYPE_SIZE + 1, LENGTH_SIZE));
-
-               final byte[] msgBody = ByteArray.cutBytes(bytes, TYPE_SIZE + 1 + LENGTH_SIZE);
-               if (msgBody.length != msgLength - PCEPMessageConstants.COMMON_HEADER_LENGTH) {
-                       throw new PCEPDeserializerException("Body size " + msgBody.length + " does not match header size "
+       private Message parse(final ByteBuf buffer, final List<Message> errors) throws PCEPDeserializerException {
+               buffer.readerIndex(buffer.readerIndex() + 1);
+               final int type = buffer.readUnsignedByte();
+               final int msgLength = buffer.readUnsignedShort();
+               final int actualLength = buffer.readableBytes();
+               final ByteBuf msgBody = buffer.slice();
+               if (actualLength != msgLength - PCEPMessageConstants.COMMON_HEADER_LENGTH) {
+                       throw new PCEPDeserializerException("Body size " + actualLength + " does not match header size "
                                        + (msgLength - PCEPMessageConstants.COMMON_HEADER_LENGTH));
                }
                return this.registry.parseMessage(type, msgBody, errors);
index d3ad8df3eb19883ee915fe196f43650173f9e38d..4b7017c60d8b8d81cc09d33517a3310180294dcc 100644 (file)
@@ -223,7 +223,7 @@ public class PCEPValidatorTest {
 
        @Test
        public void testOpenMsg() throws IOException, PCEPDeserializerException {
-               final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPOpenMessage1.bin");
+               final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCEPOpenMessage1.bin"));
                final PCEPOpenMessageParser parser = new PCEPOpenMessageParser(this.ctx.getObjectHandlerRegistry());
                final OpenMessageBuilder builder = new OpenMessageBuilder();
 
@@ -238,41 +238,41 @@ public class PCEPValidatorTest {
                builder.setOpen(b.build());
 
                assertEquals(new OpenBuilder().setOpenMessage(builder.build()).build(),
-                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-               final ByteBuf buf = Unpooled.buffer(result.length);
+                               parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+               final ByteBuf buf = Unpooled.buffer(result.readableBytes());
                parser.serializeMessage(new OpenBuilder().setOpenMessage(builder.build()).build(), buf);
-               assertArrayEquals(result, buf.array());
+               assertArrayEquals(result.array(), buf.array());
        }
 
        @Test
        public void testKeepAliveMsg() throws IOException, PCEPDeserializerException {
-               final byte[] result = new byte[] {32, 2, 0, 4};
+               final ByteBuf result = Unpooled.wrappedBuffer(new byte[] {32, 2, 0, 4});
                final PCEPKeepAliveMessageParser parser = new PCEPKeepAliveMessageParser(this.objectRegistry);
                final KeepaliveBuilder builder = new KeepaliveBuilder().setKeepaliveMessage(new KeepaliveMessageBuilder().build());
 
-               assertEquals(builder.build(), parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-               final ByteBuf buf = Unpooled.buffer(result.length);
+               assertEquals(builder.build(), parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+               final ByteBuf buf = Unpooled.buffer(result.readableBytes());
                parser.serializeMessage(builder.build(), buf);
-               assertArrayEquals(result, buf.readBytes(buf.readableBytes()).array());
+               assertArrayEquals(result.array(), buf.array());
        }
 
        @Test
        public void testCloseMsg() throws IOException, PCEPDeserializerException {
-               final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPCloseMessage1.bin");
+               final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCEPCloseMessage1.bin"));
 
                final PCEPCloseMessageParser parser = new PCEPCloseMessageParser(this.objectRegistry);
                final CloseBuilder builder = new CloseBuilder().setCCloseMessage(new CCloseMessageBuilder().setCClose(
                                new CCloseBuilder().setIgnore(false).setProcessingRule(false).setReason((short) 5).build()).build());
 
-               assertEquals(builder.build(), parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-               final ByteBuf buf = Unpooled.buffer(result.length);
+               assertEquals(builder.build(), parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+               final ByteBuf buf = Unpooled.buffer(result.readableBytes());
                parser.serializeMessage(builder.build(), buf);
-               assertArrayEquals(result, buf.array());
+               assertArrayEquals(result.array(), buf.array());
        }
 
        @Test
        public void testRequestMsg() throws IOException, PCEPDeserializerException {
-               byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPRequestMessage1.bin");
+               ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCEPRequestMessage1.bin"));
 
                final PCEPRequestMessageParser parser = new PCEPRequestMessageParser(this.objectRegistry);
 
@@ -285,13 +285,13 @@ public class PCEPValidatorTest {
                builder.setRequests(reqs1);
 
                assertEquals(new PcreqBuilder().setPcreqMessage(builder.build()).build(),
-                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-               ByteBuf buf = Unpooled.buffer(result.length);
+                               parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+               ByteBuf buf = Unpooled.buffer(result.readableBytes());
                parser.serializeMessage(new PcreqBuilder().setPcreqMessage(builder.build()).build(), buf);
 
-               assertArrayEquals(result, buf.array());
+               assertArrayEquals(result.array(), buf.array());
 
-               result = ByteArray.fileToBytes("src/test/resources/PCReq.3.bin");
+               result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCReq.3.bin"));
 
                final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.Requests> reqs2 = Lists.newArrayList();
                final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.RequestsBuilder rBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.RequestsBuilder();
@@ -307,16 +307,16 @@ public class PCEPValidatorTest {
                                this.svec).build()));
 
                assertEquals(new PcreqBuilder().setPcreqMessage(builder.build()).build(),
-                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-               buf = Unpooled.buffer(result.length);
+                               parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+               buf = Unpooled.buffer(result.readableBytes());
                parser.serializeMessage(new PcreqBuilder().setPcreqMessage(builder.build()).build(), buf);
-               assertArrayEquals(result, buf.array());
+               assertArrayEquals(result.array(), buf.array());
        }
 
        @Test
        public void testReplyMsg() throws IOException, PCEPDeserializerException {
                // only RP
-               byte[] result = ByteArray.fileToBytes("src/test/resources/PCRep.1.bin");
+               ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRep.1.bin"));
 
                final PCEPReplyMessageParser parser = new PCEPReplyMessageParser(this.objectRegistry);
 
@@ -329,13 +329,13 @@ public class PCEPValidatorTest {
                builder.setReplies(replies1);
 
                assertEquals(new PcrepBuilder().setPcrepMessage(builder.build()).build(),
-                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-               ByteBuf buf = Unpooled.buffer(result.length);
+                               parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+               ByteBuf buf = Unpooled.buffer(result.readableBytes());
                parser.serializeMessage(new PcrepBuilder().setPcrepMessage(builder.build()).build(), buf);
-               assertArrayEquals(result, buf.array());
+               assertArrayEquals(result.array(), buf.array());
 
                // simple Failure
-               result = ByteArray.fileToBytes("src/test/resources/PCRep.2.bin");
+               result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRep.2.bin"));
                final List<Replies> replies2 = Lists.newArrayList();
                rBuilder = new RepliesBuilder();
                rBuilder.setRp(this.rpTrue);
@@ -347,13 +347,13 @@ public class PCEPValidatorTest {
                builder.setReplies(replies2);
 
                assertEquals(new PcrepBuilder().setPcrepMessage(builder.build()).build(),
-                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-               buf = Unpooled.buffer(result.length);
+                               parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+               buf = Unpooled.buffer(result.readableBytes());
                parser.serializeMessage(new PcrepBuilder().setPcrepMessage(builder.build()).build(), buf);
-               assertArrayEquals(result, buf.array());
+               assertArrayEquals(result.array(), buf.array());
 
                // Failure with attributes
-               result = ByteArray.fileToBytes("src/test/resources/PCRep.3.bin");
+               result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRep.3.bin"));
                final List<Replies> replies3 = Lists.newArrayList();
                rBuilder = new RepliesBuilder();
                rBuilder.setRp(this.rpTrue);
@@ -363,13 +363,13 @@ public class PCEPValidatorTest {
                builder.setReplies(replies3);
 
                assertEquals(new PcrepBuilder().setPcrepMessage(builder.build()).build(),
-                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-               buf = Unpooled.buffer(result.length);
+                               parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+               buf = Unpooled.buffer(result.readableBytes());
                parser.serializeMessage(new PcrepBuilder().setPcrepMessage(builder.build()).build(), buf);
-               assertArrayEquals(result, buf.array());
+               assertArrayEquals(result.array(), buf.array());
 
                // Success
-               result = ByteArray.fileToBytes("src/test/resources/PCRep.5.bin");
+               result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCRep.5.bin"));
                final List<Replies> replies4 = Lists.newArrayList();
                rBuilder = new RepliesBuilder();
                rBuilder.setRp(this.rpTrue);
@@ -386,10 +386,10 @@ public class PCEPValidatorTest {
                builder.setReplies(replies4);
 
                assertEquals(new PcrepBuilder().setPcrepMessage(builder.build()).build(),
-                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-               buf = Unpooled.buffer(result.length);
+                               parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+               buf = Unpooled.buffer(result.readableBytes());
                parser.serializeMessage(new PcrepBuilder().setPcrepMessage(builder.build()).build(), buf);
-               assertArrayEquals(result, buf.array());
+               assertArrayEquals(result.array(), buf.array());
        }
 
        @Test
@@ -403,7 +403,7 @@ public class PCEPValidatorTest {
                final List<Rps> rps = Lists.newArrayList();
                rps.add(new RpsBuilder().setRp(this.rpFalse).build());
 
-               final byte[] result = ByteArray.fileToBytes("src/test/resources/PCNtf.5.bin");
+               final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCNtf.5.bin"));
 
                final PCEPNotificationMessageParser parser = new PCEPNotificationMessageParser(this.objectRegistry);
                final PcntfMessageBuilder builder = new PcntfMessageBuilder();
@@ -429,15 +429,15 @@ public class PCEPValidatorTest {
                builder.setNotifications(nots);
 
                assertEquals(new PcntfBuilder().setPcntfMessage(builder.build()).build(),
-                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-               final ByteBuf buf = Unpooled.buffer(result.length);
+                               parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+               final ByteBuf buf = Unpooled.buffer(result.readableBytes());
                parser.serializeMessage(new PcntfBuilder().setPcntfMessage(builder.build()).build(), buf);
-               assertArrayEquals(result, buf.array());
+               assertArrayEquals(result.array(), buf.array());
        }
 
        @Test
        public void testErrorMsg() throws IOException, PCEPDeserializerException {
-               byte[] result = ByteArray.fileToBytes("src/test/resources/PCErr.5.bin");
+               final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCErr.5.bin"));
 
                final ErrorObject error1 = new ErrorObjectBuilder().setIgnore(false).setProcessingRule(false).setType((short) 3).setValue(
                                (short) 1).build();
@@ -458,9 +458,9 @@ public class PCEPValidatorTest {
                builder.setErrorType(new RequestCaseBuilder().setRequest(new RequestBuilder().setRps(rps).build()).build());
 
                assertEquals(new PcerrBuilder().setPcerrMessage(builder.build()).build(),
-                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
-               ByteBuf buf = Unpooled.buffer(result.length);
+                               parser.parseMessage(result.slice(4, result.readableBytes() -4), Collections.<Message> emptyList()));
+               final ByteBuf buf = Unpooled.buffer(result.readableBytes());
                parser.serializeMessage(new PcerrBuilder().setPcerrMessage(builder.build()).build(), buf);
-               assertArrayEquals(result, buf.array());
+               assertArrayEquals(result.array(), buf.array());
        }
 }
index 60914d7d759940d85fbc7d2a2b134e4224884f72..f46c2ab3aa5372e7ec842137773656211c774266 100644 (file)
@@ -7,6 +7,9 @@
  */
 package org.opendaylight.protocol.pcep.spi;
 
+import io.netty.buffer.ByteBuf;
+
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.BitSet;
 import java.util.List;
@@ -32,10 +35,6 @@ public abstract class AbstractMessageParser implements MessageParser, MessageSer
 
        private static final int COMMON_OBJECT_HEADER_LENGTH = 4;
 
-       private static final int OC_F_LENGTH = 1;
-       private static final int OT_FLAGS_MF_LENGTH = 1;
-       private static final int OBJ_LENGTH_F_LENGTH = 2;
-
        private static final int OT_SF_LENGTH = 4;
        private static final int FLAGS_SF_LENGTH = 4;
        /*
@@ -62,48 +61,38 @@ public abstract class AbstractMessageParser implements MessageParser, MessageSer
                return this.registry.serializeObject(object);
        }
 
-       private List<Object> parseObjects(final byte[] bytes) throws PCEPDeserializerException {
-               int offset = 0;
-               final List<Object> objs = Lists.newArrayList();
-               while (bytes.length - offset > 0) {
-                       if (bytes.length - offset < COMMON_OBJECT_HEADER_LENGTH) {
-                               throw new PCEPDeserializerException("Too few bytes in passed array. Passed: " + (bytes.length - offset) + " Expected: >= "
+       private List<Object> parseObjects(final ByteBuf bytes) throws PCEPDeserializerException {
+               final List<Object> objs = new ArrayList<>();
+               while (bytes.isReadable()) {
+                       if (bytes.readableBytes() < COMMON_OBJECT_HEADER_LENGTH) {
+                               throw new PCEPDeserializerException("Too few bytes in passed array. Passed: " + bytes.readableBytes() + " Expected: >= "
                                                + COMMON_OBJECT_HEADER_LENGTH + ".");
                        }
+                       final int objClass = bytes.readUnsignedByte();
 
-                       final int objClass = UnsignedBytes.toInt(bytes[offset]);
-
-                       offset += OC_F_LENGTH;
-
-                       final int objType = UnsignedBytes.toInt(ByteArray.copyBitsRange(bytes[offset], OT_SF_OFFSET, OT_SF_LENGTH));
-
-                       final byte[] flagsBytes = { ByteArray.copyBitsRange(bytes[offset], FLAGS_SF_OFFSET, FLAGS_SF_LENGTH) };
-
+                       byte flagsByte = bytes.readByte();
+                       final int objType = UnsignedBytes.toInt(ByteArray.copyBitsRange(flagsByte, OT_SF_OFFSET, OT_SF_LENGTH));
+                       final byte[] flagsBytes = { ByteArray.copyBitsRange(flagsByte, FLAGS_SF_OFFSET, FLAGS_SF_LENGTH) };
                        final BitSet flags = ByteArray.bytesToBitSet(flagsBytes);
 
-                       offset += OT_FLAGS_MF_LENGTH;
-
-                       final int objLength = ByteArray.bytesToInt(ByteArray.subByte(bytes, offset, OBJ_LENGTH_F_LENGTH));
+                       final int objLength = bytes.readUnsignedShort();
 
-                       if (bytes.length - offset < objLength - COMMON_OBJECT_HEADER_LENGTH) {
-                               throw new PCEPDeserializerException("Too few bytes in passed array. Passed: " + (bytes.length - offset) + " Expected: >= "
+                       if (bytes.readableBytes() < objLength - COMMON_OBJECT_HEADER_LENGTH) {
+                               throw new PCEPDeserializerException("Too few bytes in passed array. Passed: " + bytes.readableBytes() + " Expected: >= "
                                                + objLength + ".");
                        }
-
-                       offset += OBJ_LENGTH_F_LENGTH;
-
                        // copy bytes for deeper parsing
-                       final byte[] bytesToPass = ByteArray.subByte(bytes, offset, objLength - COMMON_OBJECT_HEADER_LENGTH);
-
-                       offset += objLength - COMMON_OBJECT_HEADER_LENGTH;
+                       final ByteBuf bytesToPass = bytes.slice(bytes.readerIndex(), objLength - COMMON_OBJECT_HEADER_LENGTH);
 
                        final ObjectHeader header = new ObjectHeaderImpl(flags.get(P_FLAG_OFFSET), flags.get(I_FLAG_OFFSET));
 
                        // parseObject is required to return null for P=0 errored objects
-                       final Object o = this.registry.parseObject(objClass, objType, header, bytesToPass);
+                       // FIXME: change this to ByteBuf
+                       final Object o = this.registry.parseObject(objClass, objType, header, ByteArray.readAllBytes(bytesToPass));
                        if (o != null) {
                                objs.add(o);
                        }
+                       bytes.readerIndex(bytes.readerIndex() + objLength- COMMON_OBJECT_HEADER_LENGTH);
                }
 
                return objs;
@@ -132,7 +121,7 @@ public abstract class AbstractMessageParser implements MessageParser, MessageSer
        protected abstract Message validate(final List<Object> objects, final List<Message> errors) throws PCEPDeserializerException;
 
        @Override
-       public final Message parseMessage(final byte[] buffer, final List<Message> errors) throws PCEPDeserializerException {
+       public final Message parseMessage(final ByteBuf buffer, final List<Message> errors) throws PCEPDeserializerException {
                Preconditions.checkNotNull(buffer, "Buffer may not be null");
 
                // Parse objects first
index 55df25efff93247906bf8235012c109bc61fb1ca..ea1c5a63c963dc376e2c044ef2ab4c74b8b107ee 100644 (file)
@@ -7,10 +7,12 @@
  */
 package org.opendaylight.protocol.pcep.spi;
 
+import io.netty.buffer.ByteBuf;
+
 import java.util.List;
 
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
 
 public interface MessageParser {
-       Message parseMessage(byte[] buffer, List<Message> errors) throws PCEPDeserializerException;
+       Message parseMessage(final ByteBuf buffer, final List<Message> errors) throws PCEPDeserializerException;
 }
index fbda2e594612c1fb948fcc4849a221896d5eb1e8..0767d5d9a24db6766df0bddad5368d5c16bdc183 100644 (file)
@@ -17,17 +17,17 @@ public interface MessageRegistry {
        /**
         * Finds parser for given message type in the registry. Delegates parsing to found parser.
         * @param type message type, key in parser registry
-        * @param buffer message raw binary value to be parsed
+        * @param buffer message wrapped in ByteBuf
         * @param errors list of error messages, that is filled during parsing
         * @return null if the parser for this message could not be found
         * @throws PCEPDeserializerException if the parsing did not succeed
         */
-       Message parseMessage(int messageType, byte[] buffer, List<Message> errors) throws PCEPDeserializerException;
+       Message parseMessage(final int messageType, final ByteBuf buffer, final List<Message> errors) throws PCEPDeserializerException;
 
        /**
         * Find serializer for given message. Delegates parsing to found serializer.
         * @param message to be parsed
         * @param buffer byte buffer that will be filled with serialized message
         */
-       void serializeMessage(Message message, ByteBuf buffer);
+       void serializeMessage(final Message message, final ByteBuf buffer);
 }
index c0596ba55a407bad3bae4a5620e2260349d42496..90ab4ab941d3ee4fd050f11cfcce1525e98626bc 100644 (file)
@@ -19,11 +19,15 @@ import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.protocol.util.Values;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
 import org.opendaylight.yangtools.yang.binding.DataContainer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Preconditions;
 
 public final class SimpleMessageRegistry implements MessageRegistry {
 
+       private static final Logger LOG = LoggerFactory.getLogger(SimpleMessageRegistry.class);
+
        private final HandlerRegistry<DataContainer, MessageParser, MessageSerializer> handlers = new HandlerRegistry<>();
 
        public AutoCloseable registerMessageParser(final int messageType, final MessageParser parser) {
@@ -36,10 +40,11 @@ public final class SimpleMessageRegistry implements MessageRegistry {
        }
 
        @Override
-       public Message parseMessage(int messageType, byte[] buffer, List<Message> errors) throws PCEPDeserializerException {
+       public Message parseMessage(final int messageType, final ByteBuf buffer, final List<Message> errors) throws PCEPDeserializerException {
                Preconditions.checkArgument(messageType >= 0 && messageType <= Values.UNSIGNED_BYTE_MAX_VALUE);
                final MessageParser parser = this.handlers.getParser(messageType);
                if (parser == null) {
+                       LOG.warn("PCEP parser for message type {} is not registered.", messageType);
                        return null;
                }
                return parser.parseMessage(buffer, errors);
@@ -49,6 +54,7 @@ public final class SimpleMessageRegistry implements MessageRegistry {
        public void serializeMessage(Message message, ByteBuf buffer) {
                final MessageSerializer serializer = this.handlers.getSerializer(message.getImplementedInterface());
                if (serializer == null) {
+                       LOG.warn("PCEP serializer for message type {} is not registered.", message.getClass());
                        return;
                }
                serializer.serializeMessage(message, buffer);