BUG-64 : initial rewrite, MessageRegistry. 10/5710/1
authorDana Kutenicsova <dkutenic@cisco.com>
Fri, 21 Mar 2014 13:48:29 +0000 (14:48 +0100)
committerDana Kutenicsova <dkutenic@cisco.com>
Fri, 21 Mar 2014 13:49:10 +0000 (14:49 +0100)
Change-Id: I6aaeb69545f05204c7de3399ce95fa061960e0fa
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
47 files changed:
pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/PcinitiateMessageParser.java
pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02PCReplyMessageParser.java
pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02PCReportMessageParser.java
pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02PCUpdateRequestMessageParser.java
pcep/ietf-stateful02/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPMessageTest.java
pcep/ietf-stateful02/src/test/resources/Pcinit.bin [changed mode: 0755->0644]
pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CInitiated00PCInitiateMessageParser.java
pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07ErrorMessageParser.java
pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07PCReportMessageParser.java
pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07PCUpdateRequestMessageParser.java
pcep/ietf-stateful07/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPValidatorTest.java
pcep/ietf-stateful07/src/test/resources/PCEPCloseMessage1.bin
pcep/ietf-stateful07/src/test/resources/PCEPOpenMessage1.bin
pcep/ietf-stateful07/src/test/resources/PCEPRequestMessage1.bin
pcep/ietf-stateful07/src/test/resources/PCErr.3.bin
pcep/ietf-stateful07/src/test/resources/PCErr.5.bin
pcep/ietf-stateful07/src/test/resources/PCNtf.5.bin
pcep/ietf-stateful07/src/test/resources/PCRep.1.bin
pcep/ietf-stateful07/src/test/resources/PCRep.2.bin
pcep/ietf-stateful07/src/test/resources/PCRep.3.bin
pcep/ietf-stateful07/src/test/resources/PCRep.5.bin
pcep/ietf-stateful07/src/test/resources/PCReq.3.bin
pcep/ietf-stateful07/src/test/resources/PCRpt.1.bin [changed mode: 0755->0644]
pcep/ietf-stateful07/src/test/resources/PCRpt.2.bin
pcep/ietf-stateful07/src/test/resources/PCRpt.3.bin
pcep/ietf-stateful07/src/test/resources/PCRpt.5.bin
pcep/ietf-stateful07/src/test/resources/PCUpd.2.bin
pcep/ietf-stateful07/src/test/resources/PCUpd.5.bin
pcep/ietf-stateful07/src/test/resources/Pcinit.bin [changed mode: 0755->0644]
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPByteToMessageDecoder.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPDispatcherImpl.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPHandlerFactory.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPMessageToByteEncoder.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPCloseMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPErrorMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPKeepAliveMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPNotificationMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPOpenMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPReplyMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPRequestMessageParser.java
pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/MessageHandlerRegistry.java [deleted file]
pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/MessageRegistry.java [new file with mode: 0644]
pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/MessageUtil.java [new file with mode: 0644]
pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/PCEPExtensionConsumerContext.java
pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/PCEPMessageConstants.java [moved from pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPMessageConstants.java with 86% similarity]
pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimpleMessageRegistry.java [moved from pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimpleMessageHandlerRegistry.java with 65% similarity]
pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimplePCEPExtensionProviderContext.java

index 45184711fd1f000dc41ca836c81ef819464ff63e..36e2332c1507e99a3c3fea3ff5d5e0f49a38c208 100644 (file)
@@ -8,10 +8,12 @@
 package org.opendaylight.protocol.pcep.crabbe.initiated00;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated._00.rev140113.Pcinitiate;
@@ -42,12 +44,13 @@ public class PcinitiateMessageParser extends AbstractMessageParser {
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof Pcinitiate)) {
                        throw new IllegalArgumentException("Wrong instance of Message. Passed instance of " + message.getClass()
                                        + ". Needed PcinitiateMessage.");
                }
                final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated._00.rev140113.pcinitiate.message.PcinitiateMessage init = ((Pcinitiate) message).getPcinitiateMessage();
+               ByteBuf buffer = Unpooled.buffer();
                for (final Requests req : init.getRequests()) {
                        buffer.writeBytes(serializeObject(req.getEndpointsObj()));
                        buffer.writeBytes(serializeObject(req.getLspa()));
@@ -63,6 +66,7 @@ public class PcinitiateMessageParser extends AbstractMessageParser {
                                }
                        }
                }
+               MessageUtil.formatMessage(TYPE, buffer, out);
        }
 
        @Override
index a395f2d72a9e767894f9db92e5cc79b305c849f1..9bf9c1da0dcefe78f9575252e58b7e95e6756e0c 100644 (file)
@@ -8,10 +8,12 @@
 package org.opendaylight.protocol.pcep.ietf.stateful02;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.impl.message.PCEPReplyMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPErrors;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.Replies1;
@@ -47,7 +49,7 @@ public final class Stateful02PCReplyMessageParser extends PCEPReplyMessageParser
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof Pcrep)) {
                        throw new IllegalArgumentException("Wrong instance of Message. Passed instance of " + message.getClass()
                                        + ". Nedded PcrepMessage.");
@@ -56,6 +58,7 @@ public final class Stateful02PCReplyMessageParser extends PCEPReplyMessageParser
                if (repMsg.getReplies() == null || repMsg.getReplies().isEmpty()) {
                        throw new IllegalArgumentException("Replies cannot be null or empty.");
                }
+               ByteBuf buffer = Unpooled.buffer();
                for (final Replies reply : repMsg.getReplies()) {
                        if (reply.getRp() == null) {
                                throw new IllegalArgumentException("Reply must contain RP object.");
@@ -107,6 +110,7 @@ public final class Stateful02PCReplyMessageParser extends PCEPReplyMessageParser
                                }
                        }
                }
+               MessageUtil.formatMessage(TYPE, buffer, out);
        }
 
        @Override
index 993bed582292e1848e8670255424d2ae60c7c50c..d2637b88428f0f5a510e0f22ac5062039957a9d8 100644 (file)
@@ -8,10 +8,12 @@
 package org.opendaylight.protocol.pcep.ietf.stateful02;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.PCEPErrors;
@@ -47,13 +49,14 @@ public final class Stateful02PCReportMessageParser extends AbstractMessageParser
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof Pcrpt)) {
                        throw new IllegalArgumentException("Wrong instance of Message. Passed instance of " + message.getClass()
                                        + ". Nedded PcrptMessage.");
                }
                final Pcrpt msg = (Pcrpt) message;
                final List<Reports> reports = msg.getPcrptMessage().getReports();
+               ByteBuf buffer = Unpooled.buffer();
                for (final Reports report : reports) {
                        buffer.writeBytes(serializeObject(report.getLsp()));
                        final Path p = report.getPath();
@@ -77,6 +80,7 @@ public final class Stateful02PCReportMessageParser extends AbstractMessageParser
                                }
                        }
                }
+               MessageUtil.formatMessage(TYPE, buffer, out);
        }
 
        @Override
index fb00c4f3741799039b40c259613a59b00e3f795c..4617ef5b0e32a7f1cef6fd12d0fb77ed4ac39af3 100644 (file)
@@ -8,10 +8,12 @@
 package org.opendaylight.protocol.pcep.ietf.stateful02;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.PCEPErrors;
@@ -47,13 +49,14 @@ public final class Stateful02PCUpdateRequestMessageParser extends AbstractMessag
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof Pcupd)) {
                        throw new IllegalArgumentException("Wrong instance of PCEPMessage. Passed instance of " + message.getClass()
                                        + ". Nedded PcupdMessage.");
                }
                final Pcupd msg = (Pcupd) message;
                final List<Updates> updates = msg.getPcupdMessage().getUpdates();
+               ByteBuf buffer = Unpooled.buffer();
                for (final Updates update : updates) {
                        buffer.writeBytes(serializeObject(update.getLsp()));
                        final Path p = update.getPath();
@@ -75,6 +78,7 @@ public final class Stateful02PCUpdateRequestMessageParser extends AbstractMessag
                                }
                        }
                }
+               MessageUtil.formatMessage(TYPE, buffer, out);
        }
 
        @Override
index a56c23710c51ce264c40b35f2be96f5e7a568440..e5e9829bd773e83168007de1eb78c30eb1ae5df2 100644 (file)
@@ -133,7 +133,7 @@ public class PCEPMessageTest {
                        builder.setRequests(reqs);
 
                        assertEquals(new PcinitiateBuilder().setPcinitiateMessage(builder.build()).build(),
-                                       parser.parseMessage(result, Collections.<Message> emptyList()));
+                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                        final ByteBuf buf = Unpooled.buffer(result.length);
                        parser.serializeMessage(new PcinitiateBuilder().setPcinitiateMessage(builder.build()).build(), buf);
                        assertArrayEquals(result, buf.array());
old mode 100755 (executable)
new mode 100644 (file)
index 4f931c4..bd60a11
Binary files a/pcep/ietf-stateful02/src/test/resources/Pcinit.bin and b/pcep/ietf-stateful02/src/test/resources/Pcinit.bin differ
index 4a2ec855a1f72ed001149594da22b3d49c7d804e..94042770cce3a574f3839a043ea501c6937ab930 100644 (file)
@@ -8,10 +8,12 @@
 package org.opendaylight.protocol.pcep.ietf.initiated00;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Pcinitiate;
@@ -47,12 +49,13 @@ public final class CInitiated00PCInitiateMessageParser extends AbstractMessagePa
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof PcinitiateMessage)) {
                        throw new IllegalArgumentException("Wrong instance of Message. Passed instance of " + message.getClass()
                                        + ". Needed PcinitiateMessage.");
                }
                final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.pcinitiate.message.PcinitiateMessage init = ((Pcinitiate) message).getPcinitiateMessage();
+               ByteBuf buffer = Unpooled.buffer();
                for (final Requests req : init.getRequests()) {
                        buffer.writeBytes(serializeObject(req.getSrp()));
                        buffer.writeBytes(serializeObject(req.getLsp()));
@@ -77,6 +80,7 @@ public final class CInitiated00PCInitiateMessageParser extends AbstractMessagePa
                                buffer.writeBytes(serializeObject(req.getIro()));
                        }
                }
+               MessageUtil.formatMessage(TYPE, buffer, out);
        }
 
        @Override
index 83a42f17000f808b7f14e7afa1bb6a644a9181da..5fe37f644caa56fd32fe7745fa76979a4a6eaab1 100644 (file)
@@ -8,11 +8,13 @@
 package org.opendaylight.protocol.pcep.ietf.stateful07;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.ArrayList;
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.impl.message.PCEPErrorMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.PCEPErrors;
@@ -50,7 +52,7 @@ public final class Stateful07ErrorMessageParser extends PCEPErrorMessageParser {
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof PcerrMessage)) {
                        throw new IllegalArgumentException("Wrong instance of Message. Passed instance " + message.getClass()
                                        + ". Nedded ErrorMessage.");
@@ -60,6 +62,7 @@ public final class Stateful07ErrorMessageParser extends PCEPErrorMessageParser {
                if (err.getErrors() == null || err.getErrors().isEmpty()) {
                        throw new IllegalArgumentException("Errors should not be empty.");
                }
+               ByteBuf buffer = Unpooled.buffer();
 
                if (err.getErrorType() instanceof RequestCase) {
                        final List<Rps> rps = ((RequestCase) err.getErrorType()).getRequest().getRps();
@@ -82,6 +85,7 @@ public final class Stateful07ErrorMessageParser extends PCEPErrorMessageParser {
                if (err.getErrorType() instanceof SessionCase) {
                        buffer.writeBytes(serializeObject(((SessionCase) err.getErrorType()).getSession().getOpen()));
                }
+               MessageUtil.formatMessage(TYPE, buffer, out);
        }
 
        @Override
index b00bc2a84f054ca44dae9ed174dd1dc8cde6e37c..bbf245c6d53e3e75793330357ecb50967ec4d642 100644 (file)
@@ -8,10 +8,12 @@
 package org.opendaylight.protocol.pcep.ietf.stateful07;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.PCEPErrors;
@@ -49,13 +51,14 @@ public final class Stateful07PCReportMessageParser extends AbstractMessageParser
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof Pcrpt)) {
                        throw new IllegalArgumentException("Wrong instance of Message. Passed instance of " + message.getClass()
                                        + ". Nedded PcrptMessage.");
                }
                final Pcrpt msg = (Pcrpt) message;
                final List<Reports> reports = msg.getPcrptMessage().getReports();
+               ByteBuf buffer = Unpooled.buffer();
                for (final Reports report : reports) {
                        if (report.getSrp() != null) {
                                buffer.writeBytes(serializeObject(report.getSrp()));
@@ -83,6 +86,7 @@ public final class Stateful07PCReportMessageParser extends AbstractMessageParser
                                }
                        }
                }
+               MessageUtil.formatMessage(TYPE, buffer, out);
        }
 
        @Override
index 5b9992721ef518db61a1fb8568d874773e00a077..132f3ec83563c63a8b49513d324c80f6b23b79a1 100644 (file)
@@ -8,10 +8,12 @@
 package org.opendaylight.protocol.pcep.ietf.stateful07;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.PCEPErrors;
@@ -48,13 +50,14 @@ public final class Stateful07PCUpdateRequestMessageParser extends AbstractMessag
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof Pcupd)) {
                        throw new IllegalArgumentException("Wrong instance of PCEPMessage. Passed instance of " + message.getClass()
                                        + ". Nedded PcupdMessage.");
                }
                final Pcupd msg = (Pcupd) message;
                final List<Updates> updates = msg.getPcupdMessage().getUpdates();
+               ByteBuf buffer = Unpooled.buffer();
                for (final Updates update : updates) {
                        buffer.writeBytes(serializeObject(update.getSrp()));
                        buffer.writeBytes(serializeObject(update.getLsp()));
@@ -77,6 +80,7 @@ public final class Stateful07PCUpdateRequestMessageParser extends AbstractMessag
                                }
                        }
                }
+               MessageUtil.formatMessage(TYPE, buffer, out);
        }
 
        @Override
index 4dd3464e780b7c8fb58adf0976482d22ab5e2764..31ec987b00f5f376592b73ce573e065b437734b1 100644 (file)
@@ -341,7 +341,7 @@ public class PCEPValidatorTest {
                        builder.setOpen(b.build());
 
                        assertEquals(new OpenBuilder().setOpenMessage(builder.build()).build(),
-                                       parser.parseMessage(result, Collections.<Message> emptyList()));
+                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                        final ByteBuf buf = Unpooled.buffer(result.length);
                        parser.serializeMessage(new OpenBuilder().setOpenMessage(builder.build()).build(), buf);
                        assertArrayEquals(result, buf.array());
@@ -350,14 +350,14 @@ public class PCEPValidatorTest {
 
        @Test
        public void testKeepAliveMsg() throws IOException, PCEPDeserializerException {
-               final byte[] result = new byte[] {};
+               final byte[] result = 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(result, Collections.<Message> emptyList()));
+               assertEquals(builder.build(), parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                final ByteBuf buf = Unpooled.buffer(result.length);
                parser.serializeMessage(builder.build(), buf);
-               assertArrayEquals(result, buf.array());
+               assertArrayEquals(result, buf.readBytes(buf.readableBytes()).array());
        }
 
        @Test
@@ -368,7 +368,7 @@ public class PCEPValidatorTest {
                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(result, Collections.<Message> emptyList()));
+               assertEquals(builder.build(), parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                final ByteBuf buf = Unpooled.buffer(result.length);
                parser.serializeMessage(builder.build(), buf);
                assertArrayEquals(result, buf.array());
@@ -389,7 +389,7 @@ public class PCEPValidatorTest {
                builder.setRequests(reqs1);
 
                assertEquals(new PcreqBuilder().setPcreqMessage(builder.build()).build(),
-                               parser.parseMessage(result, Collections.<Message> emptyList()));
+                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                ByteBuf buf = Unpooled.buffer(result.length);
                parser.serializeMessage(new PcreqBuilder().setPcreqMessage(builder.build()).build(), buf);
 
@@ -411,7 +411,7 @@ public class PCEPValidatorTest {
                                this.svec).build()));
 
                assertEquals(new PcreqBuilder().setPcreqMessage(builder.build()).build(),
-                               parser.parseMessage(result, Collections.<Message> emptyList()));
+                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                buf = Unpooled.buffer(result.length);
                parser.serializeMessage(new PcreqBuilder().setPcreqMessage(builder.build()).build(), buf);
                assertArrayEquals(result, buf.array());
@@ -433,7 +433,7 @@ public class PCEPValidatorTest {
                builder.setReplies(replies1);
 
                assertEquals(new PcrepBuilder().setPcrepMessage(builder.build()).build(),
-                               parser.parseMessage(result, Collections.<Message> emptyList()));
+                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                ByteBuf buf = Unpooled.buffer(result.length);
                parser.serializeMessage(new PcrepBuilder().setPcrepMessage(builder.build()).build(), buf);
                assertArrayEquals(result, buf.array());
@@ -451,7 +451,7 @@ public class PCEPValidatorTest {
                builder.setReplies(replies2);
 
                assertEquals(new PcrepBuilder().setPcrepMessage(builder.build()).build(),
-                               parser.parseMessage(result, Collections.<Message> emptyList()));
+                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                buf = Unpooled.buffer(result.length);
                parser.serializeMessage(new PcrepBuilder().setPcrepMessage(builder.build()).build(), buf);
                assertArrayEquals(result, buf.array());
@@ -467,7 +467,7 @@ public class PCEPValidatorTest {
                builder.setReplies(replies3);
 
                assertEquals(new PcrepBuilder().setPcrepMessage(builder.build()).build(),
-                               parser.parseMessage(result, Collections.<Message> emptyList()));
+                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                buf = Unpooled.buffer(result.length);
                parser.serializeMessage(new PcrepBuilder().setPcrepMessage(builder.build()).build(), buf);
                assertArrayEquals(result, buf.array());
@@ -490,7 +490,7 @@ public class PCEPValidatorTest {
                builder.setReplies(replies4);
 
                assertEquals(new PcrepBuilder().setPcrepMessage(builder.build()).build(),
-                               parser.parseMessage(result, Collections.<Message> emptyList()));
+                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                buf = Unpooled.buffer(result.length);
                parser.serializeMessage(new PcrepBuilder().setPcrepMessage(builder.build()).build(), buf);
                assertArrayEquals(result, buf.array());
@@ -514,7 +514,7 @@ public class PCEPValidatorTest {
                        builder.setUpdates(updates);
 
                        assertEquals(new PcupdBuilder().setPcupdMessage(builder.build()).build(),
-                                       parser.parseMessage(result, Collections.<Message> emptyList()));
+                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                        ByteBuf buf = Unpooled.buffer(result.length);
                        parser.serializeMessage(new PcupdBuilder().setPcupdMessage(builder.build()).build(), buf);
                        assertArrayEquals(result, buf.array());
@@ -530,7 +530,7 @@ public class PCEPValidatorTest {
                        builder.setUpdates(updates1);
 
                        assertEquals(new PcupdBuilder().setPcupdMessage(builder.build()).build(),
-                                       parser.parseMessage(result, Collections.<Message> emptyList()));
+                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                        buf = Unpooled.buffer(result.length);
                        parser.serializeMessage(new PcupdBuilder().setPcupdMessage(builder.build()).build(), buf);
                        assertArrayEquals(result, buf.array());
@@ -552,7 +552,7 @@ public class PCEPValidatorTest {
                        builder.setReports(reports);
 
                        assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(),
-                                       parser.parseMessage(result, Collections.<Message> emptyList()));
+                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                        ByteBuf buf = Unpooled.buffer(result.length);
                        parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
                        assertArrayEquals(result, buf.array());
@@ -566,7 +566,7 @@ public class PCEPValidatorTest {
                        builder.setReports(reports1);
 
                        assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(),
-                                       parser.parseMessage(result, Collections.<Message> emptyList()));
+                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                        buf = Unpooled.buffer(result.length);
                        parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
                        assertArrayEquals(result, buf.array());
@@ -583,7 +583,7 @@ public class PCEPValidatorTest {
                        builder.setReports(reports2);
 
                        assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(),
-                                       parser.parseMessage(result, Collections.<Message> emptyList()));
+                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                        buf = Unpooled.buffer(result.length);
                        parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
                        assertArrayEquals(result, buf.array());
@@ -601,7 +601,7 @@ public class PCEPValidatorTest {
                        builder.setReports(reports3);
 
                        assertEquals(new PcrptBuilder().setPcrptMessage(builder.build()).build(),
-                                       parser.parseMessage(result, Collections.<Message> emptyList()));
+                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                        buf = Unpooled.buffer(result.length);
                        parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buf);
                        assertArrayEquals(result, buf.array());
@@ -630,7 +630,7 @@ public class PCEPValidatorTest {
                        builder.setRequests(reqs);
 
                        assertEquals(new PcinitiateBuilder().setPcinitiateMessage(builder.build()).build(),
-                                       parser.parseMessage(result, Collections.<Message> emptyList()));
+                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                        final ByteBuf buf = Unpooled.buffer(result.length);
                        parser.serializeMessage(new PcinitiateBuilder().setPcinitiateMessage(builder.build()).build(), buf);
                        assertArrayEquals(result, buf.array());
@@ -674,7 +674,7 @@ public class PCEPValidatorTest {
                builder.setNotifications(nots);
 
                assertEquals(new PcntfBuilder().setPcntfMessage(builder.build()).build(),
-                               parser.parseMessage(result, Collections.<Message> emptyList()));
+                               parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                final ByteBuf buf = Unpooled.buffer(result.length);
                parser.serializeMessage(new PcntfBuilder().setPcntfMessage(builder.build()).build(), buf);
                assertArrayEquals(result, buf.array());
@@ -699,7 +699,7 @@ public class PCEPValidatorTest {
                        builder.setErrorType(new SessionCaseBuilder().setSession(new SessionBuilder().setOpen(this.open).build()).build());
 
                        assertEquals(new PcerrBuilder().setPcerrMessage(builder.build()).build(),
-                                       parser.parseMessage(result, Collections.<Message> emptyList()));
+                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                        ByteBuf buf = Unpooled.buffer(result.length);
                        parser.serializeMessage(new PcerrBuilder().setPcerrMessage(builder.build()).build(), buf);
                        assertArrayEquals(result, buf.array());
@@ -717,7 +717,7 @@ public class PCEPValidatorTest {
                        builder.setErrorType(new RequestCaseBuilder().setRequest(new RequestBuilder().setRps(rps).build()).build());
 
                        assertEquals(new PcerrBuilder().setPcerrMessage(builder.build()).build(),
-                                       parser.parseMessage(result, Collections.<Message> emptyList()));
+                                       parser.parseMessage(ByteArray.cutBytes(result, 4), Collections.<Message> emptyList()));
                        buf = Unpooled.buffer(result.length);
                        parser.serializeMessage(new PcerrBuilder().setPcerrMessage(builder.build()).build(), buf);
                        assertArrayEquals(result, buf.array());
index 29dab1a54dd6109d95c9753026bfdf9e6dfb027d..e7f5a7d568c895c02dcdc3cee8c2c17698ab5cda 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCEPCloseMessage1.bin and b/pcep/ietf-stateful07/src/test/resources/PCEPCloseMessage1.bin differ
index 388f09874fcf75203cea354a1d1ff1a19e87eb7b..53b3abca19be0ada54d9c62d6144056b7cc7ead3 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCEPOpenMessage1.bin and b/pcep/ietf-stateful07/src/test/resources/PCEPOpenMessage1.bin differ
index 0f62209f80a366037f638e9263157f8332009fad..73765df00ac79fd7baa32694a1ba24d4a1468acf 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCEPRequestMessage1.bin and b/pcep/ietf-stateful07/src/test/resources/PCEPRequestMessage1.bin differ
index 7b95d6b9f68bc77e605c1bbb56c33fda603c4621..ce75a3bffa1f21ef4595ef3ceb3b7503807a0fa9 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCErr.3.bin and b/pcep/ietf-stateful07/src/test/resources/PCErr.3.bin differ
index 2b64829c55e6abf1cec10bacbf7f3fb6c30ef418..c1ecd9af3a7c95723443b30400913fdb07074c9c 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCErr.5.bin and b/pcep/ietf-stateful07/src/test/resources/PCErr.5.bin differ
index 77aa81d30d9c126fac9c0942cf3abd9e99b40afe..166578cd55d3e20dfd229921156fb92b4fed6f3e 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCNtf.5.bin and b/pcep/ietf-stateful07/src/test/resources/PCNtf.5.bin differ
index c1e2d5e676074dfa9c96b565bbdbc84d0445a47b..6e0e998b898594461dc0e3b2c4a537577a3d846b 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCRep.1.bin and b/pcep/ietf-stateful07/src/test/resources/PCRep.1.bin differ
index 848b6b1b6121f1b8e294b4e771b0f4b9bc48c777..1f5027ad7b59c867e67c1d4814b47d5b9dcec143 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCRep.2.bin and b/pcep/ietf-stateful07/src/test/resources/PCRep.2.bin differ
index dbf28ee4d5ab83d16e44d3b058c294ee432135b0..08d8b7a8d600f15b0ad340547475f725170b8677 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCRep.3.bin and b/pcep/ietf-stateful07/src/test/resources/PCRep.3.bin differ
index 42d6e04fa41cee0121a383d68f7f5fcc05147b3e..6f9eb3ec503dabef90d1f5e28323231aa4f0c2a7 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCRep.5.bin and b/pcep/ietf-stateful07/src/test/resources/PCRep.5.bin differ
index 91a5ae8210668ed055a045c7e84ae83ae7dbef77..2da667e36467958437adfc8c85692007549698f9 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCReq.3.bin and b/pcep/ietf-stateful07/src/test/resources/PCReq.3.bin differ
old mode 100755 (executable)
new mode 100644 (file)
index 28495dd..b1862e8
Binary files a/pcep/ietf-stateful07/src/test/resources/PCRpt.1.bin and b/pcep/ietf-stateful07/src/test/resources/PCRpt.1.bin differ
index 8057aa3bc4efca45f497fd1f80d8c21527e72cf3..8fa3461231acd535fe33664dcf87088bff003175 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCRpt.2.bin and b/pcep/ietf-stateful07/src/test/resources/PCRpt.2.bin differ
index 94a644384558a708ec51c883057379fedc5d8592..ffcec33988a2dfef30e119c686620d35c3a486a7 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCRpt.3.bin and b/pcep/ietf-stateful07/src/test/resources/PCRpt.3.bin differ
index 4ba5c9f437b12a96525282fc0f46c6ab2bb1d275..4385a672352750f1642683ff3d461d58cc43318d 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCRpt.5.bin and b/pcep/ietf-stateful07/src/test/resources/PCRpt.5.bin differ
index dc5a3adcbfacb98853f57c427ebed31f2f28344c..6a7b5925539c68a892f1bbd6aece2f3c47491cf6 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCUpd.2.bin and b/pcep/ietf-stateful07/src/test/resources/PCUpd.2.bin differ
index 1b92799235fb8451018b048a4bcc0a51807be0fe..0e8404e6f5481d68db5a2a92e0e14ac8791e8872 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCUpd.5.bin and b/pcep/ietf-stateful07/src/test/resources/PCUpd.5.bin differ
old mode 100755 (executable)
new mode 100644 (file)
index 373d516..81f785c
Binary files a/pcep/ietf-stateful07/src/test/resources/Pcinit.bin and b/pcep/ietf-stateful07/src/test/resources/Pcinit.bin differ
index 6a8f930a775eb7e46d82da13888f6154fc7bd19b..288452f86f59a12a4401890eea9e139a84cad590 100644 (file)
@@ -15,8 +15,9 @@ import io.netty.handler.codec.ByteToMessageDecoder;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.opendaylight.protocol.pcep.spi.MessageHandlerRegistry;
+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;
@@ -35,9 +36,9 @@ public final class PCEPByteToMessageDecoder extends ByteToMessageDecoder {
 
        private static final int LENGTH_SIZE = 2;
 
-       private final MessageHandlerRegistry registry;
+       private final MessageRegistry registry;
 
-       public PCEPByteToMessageDecoder(final MessageHandlerRegistry registry) {
+       public PCEPByteToMessageDecoder(final MessageRegistry registry) {
                this.registry = Preconditions.checkNotNull(registry);
        }
 
@@ -81,9 +82,6 @@ public final class PCEPByteToMessageDecoder extends ByteToMessageDecoder {
                        throw new PCEPDeserializerException("Body size " + msgBody.length + " does not match header size "
                                        + (msgLength - PCEPMessageConstants.COMMON_HEADER_LENGTH));
                }
-
-               final Message msg = this.registry.getMessageParser(type).parseMessage(msgBody, errors);
-               LOG.debug("Message was parsed. {}", msg);
-               return msg;
+               return this.registry.parseMessage(type, msgBody, errors);
        }
 }
index e87235bea5a4320461d838ea7713f4b035a37f05..fec0f2168fc87614b403b48d13e07d553a26370e 100644 (file)
@@ -19,7 +19,7 @@ import org.opendaylight.protocol.framework.SessionListenerFactory;
 import org.opendaylight.protocol.framework.SessionNegotiatorFactory;
 import org.opendaylight.protocol.pcep.PCEPDispatcher;
 import org.opendaylight.protocol.pcep.PCEPSessionListener;
-import org.opendaylight.protocol.pcep.spi.MessageHandlerRegistry;
+import org.opendaylight.protocol.pcep.spi.MessageRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
 
 import com.google.common.base.Preconditions;
@@ -35,7 +35,7 @@ public class PCEPDispatcherImpl extends AbstractDispatcher<PCEPSessionImpl, PCEP
        /**
         * Creates an instance of PCEPDispatcherImpl, gets the default selector and opens it.
         */
-       public PCEPDispatcherImpl(final MessageHandlerRegistry registry,
+       public PCEPDispatcherImpl(final MessageRegistry registry,
                        final SessionNegotiatorFactory<Message, PCEPSessionImpl, PCEPSessionListener> negotiatorFactory, EventLoopGroup bossGroup,
                        EventLoopGroup workerGroup) {
                super(bossGroup, workerGroup);
index 43d5f80a230a5dd793f7ed76d90bfea0d6385a65..a336cd77216691fb6541d68fe77a42d3e443be33 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.protocol.pcep.impl;
 import io.netty.channel.ChannelHandler;
 import io.netty.channel.ChannelOutboundHandler;
 
-import org.opendaylight.protocol.pcep.spi.MessageHandlerRegistry;
+import org.opendaylight.protocol.pcep.spi.MessageRegistry;
 
 import com.google.common.base.Preconditions;
 
@@ -18,10 +18,10 @@ import com.google.common.base.Preconditions;
  * PCEP specific factory for protocol inbound/outbound handlers.
  */
 public final class PCEPHandlerFactory {
-       private final MessageHandlerRegistry registry;
+       private final MessageRegistry registry;
        private final ChannelOutboundHandler encoder;
 
-       public PCEPHandlerFactory(final MessageHandlerRegistry registry) {
+       public PCEPHandlerFactory(final MessageRegistry registry) {
                this.registry = Preconditions.checkNotNull(registry);
                this.encoder = new PCEPMessageToByteEncoder(registry);
        }
index 56f8a60643e6f86181034674925345dbb1a1f7bb..83ebdf737e7406ed34e13d9407fb3de1009c71f5 100644 (file)
@@ -8,52 +8,35 @@
 package org.opendaylight.protocol.pcep.impl;
 
 import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
 import io.netty.channel.ChannelHandler.Sharable;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.handler.codec.MessageToByteEncoder;
 
-import org.opendaylight.protocol.pcep.spi.MessageHandlerRegistry;
-import org.opendaylight.protocol.pcep.spi.MessageSerializer;
+import org.opendaylight.protocol.pcep.spi.MessageRegistry;
 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;
 
 /**
  *
  */
 @Sharable
 public final class PCEPMessageToByteEncoder extends MessageToByteEncoder<Message> {
+
        private static final Logger LOG = LoggerFactory.getLogger(PCEPMessageToByteEncoder.class);
-       private static final int VERSION_SF_LENGTH = 3;
-       private final MessageHandlerRegistry registry;
 
-       public PCEPMessageToByteEncoder(final MessageHandlerRegistry registry) {
+       private final MessageRegistry registry;
+
+       public PCEPMessageToByteEncoder(final MessageRegistry registry) {
                this.registry = Preconditions.checkNotNull(registry);
        }
 
        @Override
        protected void encode(final ChannelHandlerContext ctx, final Message msg, final ByteBuf out) throws Exception {
                Preconditions.checkNotNull(msg);
-               LOG.debug("Sent to encode : {}", msg);
-
-               final ByteBuf body = Unpooled.buffer();
-               final MessageSerializer serializer = this.registry.getMessageSerializer(msg);
-               LOG.trace("Choosen serializer {}", serializer);
-               serializer.serializeMessage(msg, body);
-
-               final int msgLength = body.readableBytes() + PCEPMessageConstants.COMMON_HEADER_LENGTH;
-               final byte[] header = new byte[] {
-                               UnsignedBytes.checkedCast(PCEPMessageConstants.PCEP_VERSION << (Byte.SIZE - VERSION_SF_LENGTH)),
-                               UnsignedBytes.checkedCast(serializer.getMessageType()),
-                               UnsignedBytes.checkedCast(msgLength / 256),
-                               UnsignedBytes.checkedCast(msgLength % 256)
-               };
-               Preconditions.checkState(header.length == PCEPMessageConstants.COMMON_HEADER_LENGTH);
-               out.writeBytes(header);
-               out.writeBytes(body);
+               this.registry.serializeMessage(msg, out);
+               LOG.debug("Encoded : {}", msg);
        }
 }
index a700f467f0d01950d938dbf866ce5e5f2704fd4a..baad9f484dc1f437f7eed77532a740681945effb 100644 (file)
@@ -8,10 +8,12 @@
 package org.opendaylight.protocol.pcep.impl.message;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Close;
@@ -35,7 +37,7 @@ public class PCEPCloseMessageParser extends AbstractMessageParser {
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof CloseMessage)) {
                        throw new IllegalArgumentException("Wrong instance of Message. Passed instance of " + message.getClass()
                                        + ". Nedded CloseMessage.");
@@ -45,7 +47,9 @@ public class PCEPCloseMessageParser extends AbstractMessageParser {
                if (close.getCClose() == null) {
                        throw new IllegalArgumentException("Close Object must be present in Close Message.");
                }
+               ByteBuf buffer = Unpooled.buffer();
                buffer.writeBytes(serializeObject(close.getCClose()));
+               MessageUtil.formatMessage(TYPE, buffer, out);
        }
 
        @Override
index a69d128cb131940134ba94b79b1124807bec5337..5d007843192fd34fa7974d2c6b9c06828e47fb30 100644 (file)
@@ -8,11 +8,13 @@
 package org.opendaylight.protocol.pcep.impl.message;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.ArrayList;
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.PCEPErrors;
@@ -48,7 +50,7 @@ public class PCEPErrorMessageParser extends AbstractMessageParser {
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof PcerrMessage)) {
                        throw new IllegalArgumentException("Wrong instance of Message. Passed instance " + message.getClass()
                                        + ". Nedded ErrorMessage.");
@@ -58,6 +60,7 @@ public class PCEPErrorMessageParser extends AbstractMessageParser {
                if (err.getErrors() == null || err.getErrors().isEmpty()) {
                        throw new IllegalArgumentException("Errors should not be empty.");
                }
+               ByteBuf buffer = Unpooled.buffer();
                if (err.getErrorType() instanceof RequestCase) {
                        final List<Rps> rps = ((RequestCase) err.getErrorType()).getRequest().getRps();
                        for (final Rps r : rps) {
@@ -71,6 +74,7 @@ public class PCEPErrorMessageParser extends AbstractMessageParser {
                if (err.getErrorType() instanceof SessionCase) {
                        buffer.writeBytes(serializeObject(((SessionCase) err.getErrorType()).getSession().getOpen()));
                }
+               MessageUtil.formatMessage(TYPE, buffer, out);
        }
 
        @Override
index 81aaded51f247bc404d4898134a30eb6f0069bfe..c92dbd1a1211f678338444b622fe89f7ca36a8e3 100644 (file)
@@ -8,10 +8,12 @@
 package org.opendaylight.protocol.pcep.impl.message;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.KeepaliveBuilder;
@@ -32,12 +34,12 @@ public class PCEPKeepAliveMessageParser extends AbstractMessageParser {
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof KeepaliveMessage)) {
                        throw new IllegalArgumentException("Wrong instance of Message. Passed instance of " + message.getClass()
                                        + ". Need KeepaliveMessage.");
                }
-               buffer.writeBytes(new byte[0]);
+               MessageUtil.formatMessage(TYPE, Unpooled.EMPTY_BUFFER, out);
        }
 
        @Override
index ed8a40d4969897b498a094c1d6e10dc5535bca2e..a6df44007767b590a8ac2cbd92fdca2685a2a4d5 100644 (file)
@@ -8,10 +8,12 @@
 package org.opendaylight.protocol.pcep.impl.message;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.PCEPErrors;
@@ -41,13 +43,14 @@ public class PCEPNotificationMessageParser extends AbstractMessageParser {
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof PcntfMessage)) {
                        throw new IllegalArgumentException("Wrong instance of Message. Passed instance of " + message.getClass()
                                        + ". Needed PcntfMessage.");
                }
                final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcntf.message.PcntfMessage msg = ((PcntfMessage) message).getPcntfMessage();
 
+               ByteBuf buffer = Unpooled.buffer();
                for (final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcntf.message.pcntf.message.Notifications n : msg.getNotifications()) {
                        if (n.getRps() != null && !n.getRps().isEmpty()) {
                                for (final Rps rps : n.getRps()) {
@@ -62,6 +65,7 @@ public class PCEPNotificationMessageParser extends AbstractMessageParser {
                                }
                        }
                }
+               MessageUtil.formatMessage(TYPE, buffer, out);
        }
 
        @Override
index 81e157ed6922593af2124420bed8af5174e1afa1..0d07188bc148f828cab8bae11f28f5cc79d5b3f9 100644 (file)
@@ -8,10 +8,12 @@
 package org.opendaylight.protocol.pcep.impl.message;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.OpenBuilder;
@@ -33,7 +35,7 @@ public class PCEPOpenMessageParser extends AbstractMessageParser {
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof OpenMessage)) {
                        throw new IllegalArgumentException("Wrong instance of Message. Passed instance " + message.getClass() + ". Needed OpenMessage.");
                }
@@ -42,8 +44,9 @@ public class PCEPOpenMessageParser extends AbstractMessageParser {
                if (open.getOpen() == null) {
                        throw new IllegalArgumentException("Open Object must be present in Open Message.");
                }
-
+               ByteBuf buffer = Unpooled.buffer();
                buffer.writeBytes(serializeObject(open.getOpen()));
+               MessageUtil.formatMessage(TYPE, buffer, out);
        }
 
        @Override
index 590b5ec00ffdede221fec2729a1c6cdc603ebb9a..6535a2c402e819539342ba5f4c5157e8bcb40bae 100644 (file)
@@ -8,10 +8,12 @@
 package org.opendaylight.protocol.pcep.impl.message;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.PCEPErrors;
@@ -55,7 +57,7 @@ public class PCEPReplyMessageParser extends AbstractMessageParser {
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof Pcrep)) {
                        throw new IllegalArgumentException("Wrong instance of Message. Passed instance of " + message.getClass()
                                        + ". Nedded PcrepMessage.");
@@ -64,6 +66,7 @@ public class PCEPReplyMessageParser extends AbstractMessageParser {
                if (repMsg.getReplies() == null || repMsg.getReplies().isEmpty()) {
                        throw new IllegalArgumentException("Replies cannot be null or empty.");
                }
+               ByteBuf buffer = Unpooled.buffer();
                for (final Replies reply : repMsg.getReplies()) {
                        if (reply.getRp() == null) {
                                throw new IllegalArgumentException("Reply must contain RP object.");
@@ -112,6 +115,7 @@ public class PCEPReplyMessageParser extends AbstractMessageParser {
                                }
                        }
                }
+               MessageUtil.formatMessage(TYPE, buffer, out);
        }
 
        @Override
index 015ab58680e196ccaa711e37592b3951ccb185ee..d9cbe342989d303995ba7cd529aa97ed688cea85 100644 (file)
@@ -8,10 +8,12 @@
 package org.opendaylight.protocol.pcep.impl.message;
 
 import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.PCEPErrors;
@@ -63,7 +65,7 @@ public class PCEPRequestMessageParser extends AbstractMessageParser {
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
+       public void serializeMessage(final Message message, final ByteBuf out) {
                if (!(message instanceof Pcreq)) {
                        throw new IllegalArgumentException("Wrong instance of PCEPMessage. Passed instance of " + message.getClass()
                                        + ". Needed PcrepMessage.");
@@ -72,6 +74,7 @@ public class PCEPRequestMessageParser extends AbstractMessageParser {
                if (msg.getRequests() == null || msg.getRequests().isEmpty()) {
                        throw new IllegalArgumentException("Requests cannot be null or empty.");
                }
+               ByteBuf buffer = Unpooled.buffer();
                for (final Requests req : msg.getRequests()) {
                        buffer.writeBytes(serializeObject(req.getRp()));
                        if (req.getPathKeyExpansion() != null) {
@@ -103,6 +106,7 @@ public class PCEPRequestMessageParser extends AbstractMessageParser {
                                }
                        }
                }
+               MessageUtil.formatMessage(TYPE, buffer, out);
        }
 
        protected void serializeP2P(final ByteBuf buffer, final P2p p2p) {
@@ -323,7 +327,7 @@ public class PCEPRequestMessageParser extends AbstractMessageParser {
                                && builder.getBandwidth() != null
                                && builder.getReportedRoute().getBandwidth().getBandwidth() != new BandwidthBuilder().setBandwidth(
                                                new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.concepts.rev131125.Bandwidth(new byte[] { 0 })).build()
-                               && builder.getReportedRoute().getRro() == null) {
+                                               && builder.getReportedRoute().getRro() == null) {
                        errors.add(createErrorMsg(PCEPErrors.RRO_MISSING, rp));
                        return null;
                }
diff --git a/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/MessageHandlerRegistry.java b/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/MessageHandlerRegistry.java
deleted file mode 100644 (file)
index 4bda8a4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.protocol.pcep.spi;
-
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
-
-public interface MessageHandlerRegistry {
-       MessageParser getMessageParser(int messageType);
-       MessageSerializer getMessageSerializer(Message message);
-}
diff --git a/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/MessageRegistry.java b/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/MessageRegistry.java
new file mode 100644 (file)
index 0000000..fbda2e5
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+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 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 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;
+
+       /**
+        * 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);
+}
diff --git a/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/MessageUtil.java b/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/MessageUtil.java
new file mode 100644 (file)
index 0000000..53c1a57
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.protocol.pcep.spi;
+
+import io.netty.buffer.ByteBuf;
+
+import com.google.common.base.Preconditions;
+import com.google.common.primitives.UnsignedBytes;
+
+public class MessageUtil {
+
+       private static final int VERSION_SF_LENGTH = 3;
+
+       private MessageUtil() {
+       }
+
+       public static void formatMessage(final int messageType, final ByteBuf body, ByteBuf out) {
+               final int msgLength = body.readableBytes();
+               final byte[] header = new byte[] {
+                               UnsignedBytes.checkedCast(PCEPMessageConstants.PCEP_VERSION << (Byte.SIZE - VERSION_SF_LENGTH)),
+                               UnsignedBytes.checkedCast(messageType),
+                               UnsignedBytes.checkedCast((msgLength + PCEPMessageConstants.COMMON_HEADER_LENGTH) / 256),
+                               UnsignedBytes.checkedCast((msgLength + PCEPMessageConstants.COMMON_HEADER_LENGTH) % 256)
+               };
+               Preconditions.checkState(header.length == PCEPMessageConstants.COMMON_HEADER_LENGTH);
+               out.writeBytes(header);
+               out.writeBytes(body);
+       }
+}
index 0b73fa424fd3429dfa8e28e93c34c6a709c12ab1..404738a7da62c9b9f832ac4bc5b407aa3dd70a51 100644 (file)
@@ -11,7 +11,7 @@ public interface PCEPExtensionConsumerContext {
 
        LabelRegistry getLabelHandlerRegistry();
 
-       MessageHandlerRegistry getMessageHandlerRegistry();
+       MessageRegistry getMessageHandlerRegistry();
 
        ObjectRegistry getObjectHandlerRegistry();
 
similarity index 86%
rename from pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPMessageConstants.java
rename to pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/PCEPMessageConstants.java
index 13d956699759b2906de2b0cdfb7932294d6f40f1..31fcaab686d717e46bb429d1d293b1d70557e3d7 100644 (file)
@@ -5,12 +5,12 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.protocol.pcep.impl;
+package org.opendaylight.protocol.pcep.spi;
 
 /**
  *
  */
-final class PCEPMessageConstants {
+public final class PCEPMessageConstants {
        /**
         * Length of the common message header, in bytes.
         */
similarity index 65%
rename from pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimpleMessageHandlerRegistry.java
rename to pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimpleMessageRegistry.java
index 79661bae81f7ff76767d051f2690f49894c24df7..c0596ba55a407bad3bae4a5620e2260349d42496 100644 (file)
@@ -7,17 +7,22 @@
  */
 package org.opendaylight.protocol.pcep.spi.pojo;
 
+import io.netty.buffer.ByteBuf;
+
+import java.util.List;
+
 import org.opendaylight.protocol.concepts.HandlerRegistry;
-import org.opendaylight.protocol.pcep.spi.MessageHandlerRegistry;
 import org.opendaylight.protocol.pcep.spi.MessageParser;
+import org.opendaylight.protocol.pcep.spi.MessageRegistry;
 import org.opendaylight.protocol.pcep.spi.MessageSerializer;
+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 com.google.common.base.Preconditions;
 
-public final class SimpleMessageHandlerRegistry implements MessageHandlerRegistry {
+public final class SimpleMessageRegistry implements MessageRegistry {
 
        private final HandlerRegistry<DataContainer, MessageParser, MessageSerializer> handlers = new HandlerRegistry<>();
 
@@ -31,13 +36,21 @@ public final class SimpleMessageHandlerRegistry implements MessageHandlerRegistr
        }
 
        @Override
-       public MessageParser getMessageParser(final int messageType) {
+       public Message parseMessage(int messageType, byte[] buffer, List<Message> errors) throws PCEPDeserializerException {
                Preconditions.checkArgument(messageType >= 0 && messageType <= Values.UNSIGNED_BYTE_MAX_VALUE);
-               return this.handlers.getParser(messageType);
+               final MessageParser parser = this.handlers.getParser(messageType);
+               if (parser == null) {
+                       return null;
+               }
+               return parser.parseMessage(buffer, errors);
        }
 
        @Override
-       public MessageSerializer getMessageSerializer(final Message message) {
-               return this.handlers.getSerializer(message.getImplementedInterface());
+       public void serializeMessage(Message message, ByteBuf buffer) {
+               final MessageSerializer serializer = this.handlers.getSerializer(message.getImplementedInterface());
+               if (serializer == null) {
+                       return;
+               }
+               serializer.serializeMessage(message, buffer);
        }
 }
index efa80cde3d2fe0191dc7866ffdf14006aabf1e51..bd71b2066be065a81f130513394955f72fc5f1df 100644 (file)
@@ -15,7 +15,7 @@ import org.opendaylight.protocol.pcep.spi.EROSubobjectSerializer;
 import org.opendaylight.protocol.pcep.spi.LabelRegistry;
 import org.opendaylight.protocol.pcep.spi.LabelParser;
 import org.opendaylight.protocol.pcep.spi.LabelSerializer;
-import org.opendaylight.protocol.pcep.spi.MessageHandlerRegistry;
+import org.opendaylight.protocol.pcep.spi.MessageRegistry;
 import org.opendaylight.protocol.pcep.spi.MessageParser;
 import org.opendaylight.protocol.pcep.spi.MessageSerializer;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
@@ -43,7 +43,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev
 @ThreadSafe
 public class SimplePCEPExtensionProviderContext implements PCEPExtensionProviderContext {
        private final SimpleLabelRegistry labelReg = new SimpleLabelRegistry();
-       private final SimpleMessageHandlerRegistry msgReg = new SimpleMessageHandlerRegistry();
+       private final SimpleMessageRegistry msgReg = new SimpleMessageRegistry();
        private final SimpleObjectRegistry objReg = new SimpleObjectRegistry();
        private final SimpleEROSubobjectRegistry eroSubReg = new SimpleEROSubobjectRegistry();
        private final SimpleRROSubobjectRegistry rroSubReg = new SimpleRROSubobjectRegistry();
@@ -56,7 +56,7 @@ public class SimplePCEPExtensionProviderContext implements PCEPExtensionProvider
        }
 
        @Override
-       public final MessageHandlerRegistry getMessageHandlerRegistry() {
+       public final MessageRegistry getMessageHandlerRegistry() {
                return this.msgReg;
        }