Removed duplicated code from stateful02. Extended existing parsers. 01/5201/1
authorDana Kutenicsova <dkutenic@cisco.com>
Sat, 8 Feb 2014 12:23:19 +0000 (13:23 +0100)
committerDana Kutenicsova <dkutenic@cisco.com>
Sat, 8 Feb 2014 12:23:19 +0000 (13:23 +0100)
Change-Id: Ib5f0a5776fdc47d147f592871fff03358bccf9df
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
16 files changed:
pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/LSPCleanupTlvParser.java
pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/PCEPOpenObjectParser.java
pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/PCEStatefulCapabilityTlvParser.java
pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspDbVersionTlvParser.java
pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspObjectParser.java
pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspSymbolicNameTlvParser.java
pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspaObjectParser.java
pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02NodeIdentifierTlvParser.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/Stateful02PCRequestMessageParser.java
pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02PCUpdateRequestMessageParser.java
pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02StatefulCapabilityTlvParser.java
pcep/ietf-stateful02/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPObjectParserTest.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

index eb966aa100e956ecd1a3eaf9415d5df848b2e32c..067a9b7c1d4b5425e42f91f8346608b25f9a0833 100644 (file)
@@ -15,7 +15,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.cra
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated._00.rev140113.lsp.cleanup.tlv.LspCleanupBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
 
-public class LSPCleanupTlvParser implements TlvParser, TlvSerializer {
+public final class LSPCleanupTlvParser implements TlvParser, TlvSerializer {
 
        public static final int TYPE = 26;
 
index 8db804880eae70e9cda493ec59f9db837d10f9be..89f13ae8dceb818a9854bc9c11c856f3cfd9be62 100644 (file)
  */
 package org.opendaylight.protocol.pcep.crabbe.initiated00;
 
-import org.opendaylight.protocol.pcep.spi.AbstractObjectWithTlvsParser;
-import org.opendaylight.protocol.pcep.spi.ObjectUtil;
-import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
-import org.opendaylight.protocol.pcep.spi.PCEPErrors;
+import org.opendaylight.protocol.pcep.ietf.stateful02.Stateful02OpenObjectParser;
 import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
-import org.opendaylight.protocol.pcep.spi.UnknownObject;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated._00.rev140113.Tlvs1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated._00.rev140113.Tlvs1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated._00.rev140113.lsp.cleanup.tlv.LspCleanup;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.Tlvs2;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.Tlvs2Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.node.identifier.tlv.NodeIdentifier;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.stateful.capability.tlv.Stateful;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ObjectHeader;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ProtocolVersion;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.of.list.tlv.OfList;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.Open;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.OpenBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.Tlvs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.primitives.UnsignedBytes;
 
 /**
  * Parser for {@link Open}
  */
-public class PCEPOpenObjectParser extends AbstractObjectWithTlvsParser<TlvsBuilder> {
-       private static final Logger LOG = LoggerFactory.getLogger(PCEPOpenObjectParser.class);
-
-       public static final int CLASS = 1;
-
-       public static final int TYPE = 1;
-
-       /*
-        * lengths of fields in bytes
-        */
-       private static final int VER_FLAGS_MF_LENGTH = 1;
-       private static final int KEEPALIVE_F_LENGTH = 1;
-       private static final int DEAD_TIMER_LENGTH = 1;
-       private static final int SID_F_LENGTH = 1;
-
-       /*
-        * lengths of subfields inside multi-field in bits
-        */
-       private static final int VERSION_SF_LENGTH = 3;
-
-       /*
-        * offsets of field in bytes
-        */
-       private static final int VER_FLAGS_MF_OFFSET = 0;
-       private static final int KEEPALIVE_F_OFFSET = VER_FLAGS_MF_OFFSET + VER_FLAGS_MF_LENGTH;
-       private static final int DEAD_TIMER_OFFSET = KEEPALIVE_F_OFFSET + KEEPALIVE_F_LENGTH;
-       private static final int SID_F_OFFSET = DEAD_TIMER_OFFSET + DEAD_TIMER_LENGTH;
-       private static final int TLVS_OFFSET = SID_F_OFFSET + SID_F_LENGTH;
-
-       /*
-        * offsets of subfields inside multi-field in bits
-        */
-       private static final int VERSION_SF_OFFSET = 0;
-
-       private static final int PCEP_VERSION = 1;
+public final class PCEPOpenObjectParser extends Stateful02OpenObjectParser {
 
        public PCEPOpenObjectParser(final TlvHandlerRegistry tlvReg) {
                super(tlvReg);
        }
 
-       @Override
-       public Object parseObject(final ObjectHeader header, final byte[] bytes) throws PCEPDeserializerException {
-               if (bytes == null || bytes.length == 0) {
-                       throw new IllegalArgumentException("Array of bytes is mandatory. Can't be null or empty.");
-               }
-               final int versionValue = ByteArray.copyBitsRange(bytes[VER_FLAGS_MF_OFFSET], VERSION_SF_OFFSET, VERSION_SF_LENGTH);
-
-               final OpenBuilder builder = new OpenBuilder();
-               builder.setVersion(new ProtocolVersion((short) versionValue));
-               builder.setProcessingRule(header.isProcessingRule());
-               builder.setIgnore(header.isIgnore());
-               builder.setDeadTimer((short) UnsignedBytes.toInt(bytes[DEAD_TIMER_OFFSET]));
-               builder.setKeepalive((short) UnsignedBytes.toInt(bytes[KEEPALIVE_F_OFFSET]));
-               builder.setSessionId((short) UnsignedBytes.toInt(bytes[SID_F_OFFSET]));
-
-               final TlvsBuilder tbuilder = new TlvsBuilder();
-               parseTlvs(tbuilder, ByteArray.cutBytes(bytes, TLVS_OFFSET));
-               builder.setTlvs(tbuilder.build());
-
-               final Open obj = builder.build();
-               if (versionValue != PCEP_VERSION) {
-                       // TODO: Should we move this check into the negotiator
-                       LOG.debug("Unsupported PCEP version {}", versionValue);
-                       return new UnknownObject(PCEPErrors.PCEP_VERSION_NOT_SUPPORTED, obj);
-               }
-
-               return obj;
-       }
-
        @Override
        public void addTlv(final TlvsBuilder tbuilder, final Tlv tlv) {
+               super.addTlv(tbuilder, tlv);
                final Tlvs2Builder statefulBuilder = new Tlvs2Builder();
                if (tbuilder.getAugmentation(Tlvs2.class) != null) {
                        final Tlvs2 t = tbuilder.getAugmentation(Tlvs2.class);
                        if (t.getStateful() != null) {
                                statefulBuilder.setStateful(t.getStateful());
                        }
-                       if (t.getNodeIdentifier() != null) {
-                               statefulBuilder.setNodeIdentifier(t.getNodeIdentifier());
-                       }
                }
                final Tlvs1Builder cleanupBuilder = new Tlvs1Builder();
                if (tbuilder.getAugmentation(Tlvs1.class) != null) {
@@ -126,12 +47,8 @@ public class PCEPOpenObjectParser extends AbstractObjectWithTlvsParser<TlvsBuild
                                cleanupBuilder.setLspCleanup(t.getLspCleanup());
                        }
                }
-               if (tlv instanceof OfList) {
-                       tbuilder.setOfList((OfList) tlv);
-               } else if (tlv instanceof Stateful) {
+               if (tlv instanceof Stateful) {
                        statefulBuilder.setStateful((Stateful) tlv);
-               } else if (tlv instanceof NodeIdentifier) {
-                       statefulBuilder.setNodeIdentifier((NodeIdentifier) tlv);
                } else if (tlv instanceof LspCleanup) {
                        cleanupBuilder.setLspCleanup((LspCleanup) tlv);
                }
@@ -140,51 +57,20 @@ public class PCEPOpenObjectParser extends AbstractObjectWithTlvsParser<TlvsBuild
        }
 
        @Override
-       public byte[] serializeObject(final Object object) {
-               if (!(object instanceof Open)) {
-                       throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass() + ". Needed OpenObject.");
-               }
-               final Open open = (Open) object;
-
-               final byte versionFlagMF = (byte) (PCEP_VERSION << (Byte.SIZE - VERSION_SF_LENGTH));
-
-               final byte[] tlvs = serializeTlvs(open.getTlvs());
-
-               final byte[] bytes = new byte[TLVS_OFFSET + tlvs.length + getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
-
-               bytes[VER_FLAGS_MF_OFFSET] = versionFlagMF;
-               bytes[KEEPALIVE_F_OFFSET] = UnsignedBytes.checkedCast(open.getKeepalive());
-               bytes[DEAD_TIMER_OFFSET] = UnsignedBytes.checkedCast(open.getDeadTimer());
-               bytes[SID_F_OFFSET] = UnsignedBytes.checkedCast(open.getSessionId());
-               if (tlvs.length != 0) {
-                       ByteArray.copyWhole(tlvs, bytes, TLVS_OFFSET);
-               }
-               return ObjectUtil.formatSubobject(TYPE, CLASS, object.isProcessingRule(), object.isIgnore(), bytes);
-       }
-
        public byte[] serializeTlvs(final Tlvs tlvs) {
                if (tlvs == null) {
                        return new byte[0];
                }
+               super.serializeTlvs(tlvs);
                int finalLength = 0;
-               byte[] ofListBytes = null;
                byte[] statefulBytes = null;
-               byte[] nodeIdBytes = null;
                byte[] cleanupBytes = null;
-               if (tlvs.getOfList() != null) {
-                       ofListBytes = serializeTlv(tlvs.getOfList());
-                       finalLength += ofListBytes.length;
-               }
                if (tlvs.getAugmentation(Tlvs2.class) != null) {
                        final Tlvs2 statefulTlvs = tlvs.getAugmentation(Tlvs2.class);
                        if (statefulTlvs.getStateful() != null) {
                                statefulBytes = serializeTlv(statefulTlvs.getStateful());
                                finalLength += statefulBytes.length;
                        }
-                       if (statefulTlvs.getNodeIdentifier() != null) {
-                               nodeIdBytes = serializeTlv(statefulTlvs.getNodeIdentifier());
-                               finalLength += nodeIdBytes.length;
-                       }
                }
                if (tlvs.getAugmentation(Tlvs1.class) != null) {
                        final Tlvs1 cleanupTlv = tlvs.getAugmentation(Tlvs1.class);
@@ -196,32 +82,14 @@ public class PCEPOpenObjectParser extends AbstractObjectWithTlvsParser<TlvsBuild
 
                int offset = 0;
                final byte[] result = new byte[finalLength];
-               if (ofListBytes != null) {
-                       ByteArray.copyWhole(ofListBytes, result, offset);
-                       offset += ofListBytes.length;
-               }
                if (statefulBytes != null) {
                        ByteArray.copyWhole(statefulBytes, result, offset);
                        offset += statefulBytes.length;
                }
-               if (nodeIdBytes != null) {
-                       ByteArray.copyWhole(nodeIdBytes, result, offset);
-                       offset += nodeIdBytes.length;
-               }
                if (cleanupBytes != null) {
                        ByteArray.copyWhole(cleanupBytes, result, offset);
                        offset += cleanupBytes.length;
                }
                return result;
        }
-
-       @Override
-       public int getObjectType() {
-               return TYPE;
-       }
-
-       @Override
-       public int getObjectClass() {
-               return CLASS;
-       }
 }
index 9badab21cbde656aada9f178423a0fd1b106e82a..d5a9c1c22473754b353735ef5af88165b2ddb4ea 100644 (file)
@@ -9,9 +9,8 @@ package org.opendaylight.protocol.pcep.crabbe.initiated00;
 
 import java.util.BitSet;
 
+import org.opendaylight.protocol.pcep.ietf.stateful02.Stateful02StatefulCapabilityTlvParser;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
-import org.opendaylight.protocol.pcep.spi.TlvParser;
-import org.opendaylight.protocol.pcep.spi.TlvSerializer;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated._00.rev140113.Stateful1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated._00.rev140113.Stateful1Builder;
@@ -22,15 +21,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 /**
  * Parser for {@link Stateful}
  */
-public final class PCEStatefulCapabilityTlvParser implements TlvParser, TlvSerializer {
-
-       public static final int TYPE = 16;
-
-       private static final int FLAGS_F_LENGTH = 4;
+public final class PCEStatefulCapabilityTlvParser extends Stateful02StatefulCapabilityTlvParser {
 
        private static final int I_FLAG_OFFSET = 29;
-       private static final int S_FLAG_OFFSET = 30;
-       private static final int U_FLAG_OFFSET = 31;
 
        @Override
        public Stateful parseTlv(final byte[] buffer) throws PCEPDeserializerException {
@@ -76,9 +69,4 @@ public final class PCEStatefulCapabilityTlvParser implements TlvParser, TlvSeria
                }
                return ByteArray.bitSetToBytes(flags, FLAGS_F_LENGTH);
        }
-
-       @Override
-       public int getType() {
-               return TYPE;
-       }
 }
\ No newline at end of file
index 7ba14028af3f538a83c3c668c4aac6c8f258c9f7..1e49ac10297ba5f634c1f9f45fbeb79303d25c44 100644 (file)
@@ -22,7 +22,7 @@ import com.google.common.primitives.UnsignedLong;
 /**
  * Parser for {@link LspDbVersion}
  */
-public class Stateful02LspDbVersionTlvParser implements TlvParser, TlvSerializer {
+public final class Stateful02LspDbVersionTlvParser implements TlvParser, TlvSerializer {
 
        public static final int TYPE = 23;
 
index 641d04a4230e9e9d2c374c01e60041fe6f8fbe60..8f57cc02103b60c8a36856dfb323597d1fed9f58 100644 (file)
@@ -29,7 +29,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 /**
  * Parser for {@link Lsp}
  */
-public class Stateful02LspObjectParser extends AbstractObjectWithTlvsParser<TlvsBuilder> {
+public final class Stateful02LspObjectParser extends AbstractObjectWithTlvsParser<TlvsBuilder> {
 
        public static final int CLASS = 32;
 
index 3e7097fa923ac5585bd815fdac1d5cbf93a754ec..958a6088862580d0bcebba76232163c95679132f 100644 (file)
@@ -17,7 +17,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 /**
  * Parser for {@link SymbolicPathName}
  */
-public class Stateful02LspSymbolicNameTlvParser implements TlvParser, TlvSerializer {
+public final class Stateful02LspSymbolicNameTlvParser implements TlvParser, TlvSerializer {
 
        public static final int TYPE = 17;
 
index 59cf1f571905d5543a87e1084bfc474981f26b35..d13da63d489114b8a2d8be020f753f15cac8a9da 100644 (file)
@@ -21,7 +21,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 /**
  * Parser for {@link Lspa}
  */
-public class Stateful02LspaObjectParser extends PCEPLspaObjectParser {
+public final class Stateful02LspaObjectParser extends PCEPLspaObjectParser {
 
        public Stateful02LspaObjectParser(final TlvHandlerRegistry tlvReg) {
                super(tlvReg);
index 441f220623b273c62c47a045602fcd942bbe5a86..1e106c390777f586d84c952343dbd26b62baeadf 100644 (file)
@@ -14,7 +14,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.cra
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.node.identifier.tlv.NodeIdentifierBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
 
-public class Stateful02NodeIdentifierTlvParser implements TlvParser, TlvSerializer {
+public final class Stateful02NodeIdentifierTlvParser implements TlvParser, TlvSerializer {
 
        public static final int TYPE = 24;
 
index 3d8d074e3d20b526559af6fdbbfdfefd9dab19a0..18ec0ffe40410e307cbd6384de2cfa0dbf4b3f94 100644 (file)
@@ -11,26 +11,17 @@ import io.netty.buffer.ByteBuf;
 
 import java.util.List;
 
-import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.impl.message.PCEPReplyMessageParser;
 import org.opendaylight.protocol.pcep.spi.ObjectHandlerRegistry;
-import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 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;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.Replies1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.lsp.object.Lsp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Pcrep;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.PcrepBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.bandwidth.object.Bandwidth;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.Ero;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.include.route.object.Iro;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.attributes.Metrics;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.attributes.MetricsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.Lspa;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.metric.object.Metric;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.of.object.Of;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.PcrepMessageBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.Replies;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.RepliesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.Result;
@@ -49,9 +40,7 @@ import com.google.common.collect.Lists;
 /**
  * Parser for {@link Pcrep}
  */
-public class Stateful02PCReplyMessageParser extends AbstractMessageParser {
-
-       public static final int TYPE = 4;
+public final class Stateful02PCReplyMessageParser extends PCEPReplyMessageParser {
 
        public Stateful02PCReplyMessageParser(final ObjectHandlerRegistry registry) {
                super(registry);
@@ -121,27 +110,7 @@ public class Stateful02PCReplyMessageParser extends AbstractMessageParser {
        }
 
        @Override
-       protected Pcrep validate(final List<Object> objects, final List<Message> errors) throws PCEPDeserializerException {
-               if (objects == null) {
-                       throw new IllegalArgumentException("Passed list can't be null.");
-               }
-               if (objects.isEmpty()) {
-                       throw new PCEPDeserializerException("Pcrep message cannot be empty.");
-               }
-               final List<Replies> replies = Lists.newArrayList();
-               while (!objects.isEmpty()) {
-                       final Replies r = this.getValidReply(objects, errors);
-                       if (r != null) {
-                               replies.add(r);
-                       }
-               }
-               if (!objects.isEmpty()) {
-                       throw new PCEPDeserializerException("Unprocessed Objects: " + objects);
-               }
-               return new PcrepBuilder().setPcrepMessage(new PcrepMessageBuilder().setReplies(replies).build()).build();
-       }
-
-       private Replies getValidReply(final List<Object> objects, final List<Message> errors) {
+       protected Replies getValidReply(final List<Object> objects, final List<Message> errors) {
                if (!(objects.get(0) instanceof Rp)) {
                        errors.add(createErrorMsg(PCEPErrors.RP_MISSING));
                        return null;
@@ -161,7 +130,7 @@ public class Stateful02PCReplyMessageParser extends AbstractMessageParser {
                                final FailureCaseBuilder builder = new FailureCaseBuilder();
                                builder.setNoPath(noPath);
                                while (!objects.isEmpty()) {
-                                       this.parseAttributes(builder, objects);
+                                       parseAttributes(builder, objects);
                                }
                                res = builder.build();
                        } else if (objects.get(0) instanceof Ero) {
@@ -172,7 +141,7 @@ public class Stateful02PCReplyMessageParser extends AbstractMessageParser {
                                final PathsBuilder pBuilder = new PathsBuilder();
                                pBuilder.setEro(ero);
                                while (!objects.isEmpty()) {
-                                       this.parsePath(pBuilder, objects);
+                                       parsePath(pBuilder, objects);
                                        paths.add(pBuilder.build());
                                }
                                builder.setPaths(paths);
@@ -181,113 +150,4 @@ public class Stateful02PCReplyMessageParser extends AbstractMessageParser {
                }
                return new RepliesBuilder().setRp(rp).addAugmentation(Replies1.class, new Replies1Builder().setLsp(lsp).build()).setResult(res).build();
        }
-
-       private void parseAttributes(final FailureCaseBuilder builder, final List<Object> objects) {
-               final List<Metrics> pathMetrics = Lists.newArrayList();
-
-               Object obj;
-               State state = State.Init;
-               while (!objects.isEmpty() && !state.equals(State.End)) {
-                       obj = objects.get(0);
-
-                       switch (state) {
-                       case Init:
-                               state = State.LspaIn;
-                               if (obj instanceof Lspa) {
-                                       builder.setLspa((Lspa) obj);
-                                       break;
-                               }
-                       case LspaIn:
-                               state = State.BandwidthIn;
-                               if (obj instanceof Bandwidth) {
-                                       builder.setBandwidth((Bandwidth) obj);
-                                       break;
-                               }
-                       case BandwidthIn:
-                               state = State.MetricIn;
-                               if (obj instanceof Metric) {
-                                       pathMetrics.add(new MetricsBuilder().setMetric((Metric) obj).build());
-                                       state = State.MetricIn;
-                                       break;
-                               }
-                       case MetricIn:
-                               state = State.IroIn;
-                               if (obj instanceof Iro) {
-                                       builder.setIro((Iro) obj);
-                                       break;
-                               }
-                       case IroIn:
-                               state = State.End;
-                               break;
-                       case End:
-                               break;
-                       }
-                       if (!state.equals(State.End)) {
-                               objects.remove(0);
-                       }
-               }
-               builder.setMetrics(pathMetrics);
-       }
-
-       private void parsePath(final PathsBuilder builder, final List<Object> objects) {
-               final List<Metrics> pathMetrics = Lists.newArrayList();
-
-               Object obj;
-               State state = State.Init;
-               while (!objects.isEmpty() && !state.equals(State.End)) {
-                       obj = objects.get(0);
-
-                       switch (state) {
-                       case Init:
-                               state = State.LspaIn;
-                               if (obj instanceof Lspa) {
-                                       builder.setLspa((Lspa) obj);
-                                       break;
-                               }
-                       case LspaIn:
-                               state = State.OfIn;
-                               if (obj instanceof Of) {
-                                       builder.setOf((Of) obj);
-                                       break;
-                               }
-                       case OfIn:
-                               state = State.BandwidthIn;
-                               if (obj instanceof Bandwidth) {
-                                       builder.setBandwidth((Bandwidth) obj);
-                                       break;
-                               }
-                       case BandwidthIn:
-                               state = State.MetricIn;
-                               if (obj instanceof Metric) {
-                                       pathMetrics.add(new MetricsBuilder().setMetric((Metric) obj).build());
-                                       state = State.BandwidthIn;
-                                       break;
-                               }
-                       case MetricIn:
-                               state = State.IroIn;
-                               if (obj instanceof Iro) {
-                                       builder.setIro((Iro) obj);
-                                       break;
-                               }
-                       case IroIn:
-                               state = State.End;
-                               break;
-                       case End:
-                               break;
-                       }
-                       if (!state.equals(State.End)) {
-                               objects.remove(0);
-                       }
-               }
-               builder.setMetrics(pathMetrics);
-       }
-
-       private enum State {
-               Init, LspaIn, OfIn, BandwidthIn, MetricIn, IroIn, End
-       }
-
-       @Override
-       public int getMessageType() {
-               return TYPE;
-       }
 }
index 6dcf375a4e38ef140f008ec704937bf63ae93655..edcaedee210eab7558ae5484e00bfe432d8eac0b 100644 (file)
@@ -38,7 +38,7 @@ import com.google.common.collect.Lists;
 /**
  * Parser for {@link Pcrpt}
  */
-public class Stateful02PCReportMessageParser extends AbstractMessageParser {
+public final class Stateful02PCReportMessageParser extends AbstractMessageParser {
 
        public static final int TYPE = 10;
 
index 64874c810b760c54770a80e64b5b55acc592c8be..92548d11ab2e0a9ca719e39c8296fa10c8fbeddf 100644 (file)
@@ -11,23 +11,19 @@ import io.netty.buffer.ByteBuf;
 
 import java.util.List;
 
-import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
+import org.opendaylight.protocol.pcep.impl.message.PCEPRequestMessageParser;
 import org.opendaylight.protocol.pcep.spi.ObjectHandlerRegistry;
-import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.PCEPErrors;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.P2p1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.P2p1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.lsp.object.Lsp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Pcreq;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.PcreqBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.bandwidth.object.Bandwidth;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.bandwidth.object.BandwidthBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.classtype.object.ClassType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.endpoints.object.EndpointsObj;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.exclude.route.object.Xro;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.gc.object.Gc;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.include.route.object.Iro;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.load.balancing.object.LoadBalancing;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.attributes.Metrics;
@@ -35,14 +31,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.Lspa;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.metric.object.Metric;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.of.object.Of;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.path.key.object.PathKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.PcreqMessage;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.PcreqMessageBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.Requests;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.RequestsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.Svec;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.SvecBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.requests.PathKeyExpansionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.requests.SegmentComputation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.requests.SegmentComputationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.requests.segment.computation.P2p;
@@ -57,58 +45,14 @@ import com.google.common.collect.Lists;
 /**
  * Parser for {@link Pcreq}
  */
-public class Stateful02PCRequestMessageParser extends AbstractMessageParser {
-
-       public static final int TYPE = 3;
+public final class Stateful02PCRequestMessageParser extends PCEPRequestMessageParser {
 
        public Stateful02PCRequestMessageParser(final ObjectHandlerRegistry registry) {
                super(registry);
        }
 
        @Override
-       public void serializeMessage(final Message message, final ByteBuf buffer) {
-               if (!(message instanceof Pcreq)) {
-                       throw new IllegalArgumentException("Wrong instance of PCEPMessage. Passed instance of " + message.getClass()
-                                       + ". Needed PcrepMessage.");
-               }
-               final PcreqMessage msg = ((Pcreq) message).getPcreqMessage();
-               if (msg.getRequests() == null || msg.getRequests().isEmpty()) {
-                       throw new IllegalArgumentException("Requests cannot be null or empty.");
-               }
-               for (final Requests req : msg.getRequests()) {
-                       buffer.writeBytes(serializeObject(req.getRp()));
-                       if (req.getPathKeyExpansion() != null) {
-                               buffer.writeBytes(serializeObject(req.getPathKeyExpansion().getPathKey()));
-                       }
-                       if (req.getSegmentComputation() != null) {
-                               final SegmentComputation sc = req.getSegmentComputation();
-                               if (sc.getP2p() != null) {
-                                       serializeP2P(buffer, sc.getP2p());
-                               }
-                       }
-               }
-               if (msg.getSvec() != null) {
-                       for (final Svec s : msg.getSvec()) {
-                               buffer.writeBytes(serializeObject(s.getSvec()));
-                               if (s.getOf() != null) {
-                                       buffer.writeBytes(serializeObject(s.getOf()));
-                               }
-                               if (s.getGc() != null) {
-                                       buffer.writeBytes(serializeObject(s.getGc()));
-                               }
-                               if (s.getXro() != null) {
-                                       buffer.writeBytes(serializeObject(s.getXro()));
-                               }
-                               if (s.getMetric() != null) {
-                                       for (final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.svec.Metric m : s.getMetric()) {
-                                               buffer.writeBytes(serializeObject(m.getMetric()));
-                                       }
-                               }
-                       }
-               }
-       }
-
-       private void serializeP2P(final ByteBuf buffer, final P2p p2p) {
+       protected void serializeP2P(final ByteBuf buffer, final P2p p2p) {
                if (p2p.getEndpointsObj() != null) {
                        buffer.writeBytes(serializeObject(p2p.getEndpointsObj()));
                }
@@ -156,81 +100,7 @@ public class Stateful02PCRequestMessageParser extends AbstractMessageParser {
        }
 
        @Override
-       protected Message validate(
-                       final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object> objects,
-                       final List<Message> errors) throws PCEPDeserializerException {
-               if (objects == null) {
-                       throw new IllegalArgumentException("Passed list can't be null.");
-               }
-
-               final List<Requests> requests = Lists.newArrayList();
-               final List<Svec> svecList = Lists.newArrayList();
-               while (!objects.isEmpty()) {
-                       final RequestsBuilder rBuilder = new RequestsBuilder();
-                       Rp rpObj = null;
-                       if (objects.get(0) instanceof Rp) {
-                               rpObj = (Rp) objects.get(0);
-                               objects.remove(0);
-                               if (!rpObj.isProcessingRule()) {
-                                       errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET));
-                               } else {
-                                       rBuilder.setRp(rpObj);
-                               }
-                       } else {
-                               // if RP obj is missing return error only
-                               errors.add(createErrorMsg(PCEPErrors.RP_MISSING));
-                               return null;
-                       }
-
-                       // expansion
-                       if (rpObj.isPathKey()) {
-                               if (objects.get(0) instanceof PathKey) {
-                                       rBuilder.setPathKeyExpansion(new PathKeyExpansionBuilder().setPathKey((PathKey) objects.get(0)).build());
-                               }
-                               continue;
-                       }
-
-                       final P2pBuilder p2pBuilder = new P2pBuilder();
-
-                       if (objects.get(0) instanceof EndpointsObj) {
-                               final EndpointsObj ep = (EndpointsObj) objects.get(0);
-                               objects.remove(0);
-                               if (!ep.isProcessingRule()) {
-                                       errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, rpObj));
-                               } else {
-                                       p2pBuilder.setEndpointsObj(ep);
-                               }
-                       } else {
-                               errors.add(createErrorMsg(PCEPErrors.END_POINTS_MISSING, rpObj));
-                               return null;
-                       }
-                       // p2p
-                       if (!rpObj.isP2mp()) {
-                               final SegmentComputation segm = getSegmentComputation(p2pBuilder, objects, errors, rpObj);
-                               if (segm != null) {
-                                       rBuilder.setSegmentComputation(segm);
-                               }
-                       }
-                       while (!objects.isEmpty()) {
-                               final SvecBuilder sBuilder = new SvecBuilder();
-                               final Svec svecComp = getValidSvec(sBuilder, objects);
-                               if (svecComp == null) {
-                                       break;
-                               }
-                               svecList.add(svecComp);
-                       }
-                       requests.add(rBuilder.build());
-               }
-
-               final PcreqMessageBuilder mBuilder = new PcreqMessageBuilder();
-               mBuilder.setRequests(requests);
-               if (!svecList.isEmpty()) {
-                       mBuilder.setSvec(svecList);
-               }
-               return new PcreqBuilder().setPcreqMessage(mBuilder.build()).build();
-       }
-
-       private SegmentComputation getSegmentComputation(final P2pBuilder builder, final List<Object> objects, final List<Message> errors,
+       protected SegmentComputation getSegmentComputation(final P2pBuilder builder, final List<Object> objects, final List<Message> errors,
                        final Rp rp) {
                final List<Metrics> metrics = Lists.newArrayList();
 
@@ -345,71 +215,4 @@ public class Stateful02PCRequestMessageParser extends AbstractMessageParser {
        private enum State {
                Init, LspIn, ReportedIn, LoadBIn, LspaIn, BandwidthIn, MetricIn, IroIn, RroIn, XroIn, OfIn, CtIn, End
        }
-
-       private Svec getValidSvec(final SvecBuilder builder, final List<Object> objects) {
-               if (objects == null || objects.isEmpty()) {
-                       throw new IllegalArgumentException("List cannot be null or empty.");
-               }
-
-               if (objects.get(0) instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.svec.object.Svec) {
-                       builder.setSvec((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.svec.object.Svec) objects.get(0));
-                       objects.remove(0);
-               } else {
-                       return null;
-               }
-
-               final List<Metrics> metrics = Lists.newArrayList();
-
-               Object obj = null;
-               SvecState state = SvecState.Init;
-               while (!objects.isEmpty() && !state.equals(SvecState.End)) {
-                       obj = objects.get(0);
-
-                       switch (state) {
-                       case Init:
-                               state = SvecState.OfIn;
-                               if (obj instanceof Of) {
-                                       builder.setOf((Of) obj);
-                                       break;
-                               }
-                       case OfIn:
-                               state = SvecState.GcIn;
-                               if (obj instanceof Gc) {
-                                       builder.setGc((Gc) obj);
-                                       break;
-                               }
-                       case GcIn:
-                               state = SvecState.XroIn;
-                               if (obj instanceof Xro) {
-                                       builder.setXro((Xro) obj);
-                                       break;
-                               }
-                       case XroIn:
-                               state = SvecState.MetricIn;
-                               if (obj instanceof Metric) {
-                                       metrics.add(new MetricsBuilder().setMetric((Metric) obj).build());
-                                       state = SvecState.XroIn;
-                                       break;
-                               }
-                       case MetricIn:
-                               state = SvecState.End;
-                               break;
-                       case End:
-                               break;
-                       }
-                       if (!state.equals(SvecState.End)) {
-                               objects.remove(0);
-                       }
-               }
-               return builder.build();
-       }
-
-       private enum SvecState {
-               Init, OfIn, GcIn, XroIn, MetricIn, End
-       }
-
-       @Override
-       public int getMessageType() {
-               return TYPE;
-       }
 }
index 82590c05cc435ff33c5e34bf23b8bda1bc1a6919..fee0a0298e864d072dcce9c776c029b95eeafe8d 100644 (file)
@@ -38,7 +38,7 @@ import com.google.common.collect.Lists;
 /**
  * Parser for {@link Pcupd}
  */
-public class Stateful02PCUpdateRequestMessageParser extends AbstractMessageParser {
+public final class Stateful02PCUpdateRequestMessageParser extends AbstractMessageParser {
 
        public static final int TYPE = 11;
 
index dd49c3ff9e9f2471ad5fb1b0d852befd2dd3de88..988a31127815e46f770f3bb698f53a4016594fe6 100644 (file)
@@ -17,14 +17,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.cra
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.stateful.capability.tlv.StatefulBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
 
-public final class Stateful02StatefulCapabilityTlvParser implements TlvParser, TlvSerializer {
+public class Stateful02StatefulCapabilityTlvParser implements TlvParser, TlvSerializer {
 
        public static final int TYPE = 16;
 
-       private static final int FLAGS_F_LENGTH = 4;
+       protected static final int FLAGS_F_LENGTH = 4;
 
-       private static final int S_FLAG_OFFSET = 30;
-       private static final int U_FLAG_OFFSET = 31;
+       protected static final int S_FLAG_OFFSET = 30;
+       protected static final int U_FLAG_OFFSET = 31;
 
        @Override
        public Stateful parseTlv(final byte[] buffer) throws PCEPDeserializerException {
index b8166a145ad048ba7ea8f9abb5334e6fe37a0ae8..21dd7c5fb4872807f2ecf72400a0ff684f409d8d 100644 (file)
@@ -72,10 +72,8 @@ public class PCEPObjectParserTest {
                builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder().addAugmentation(
                                Tlvs2.class, statBuilder.build()).addAugmentation(Tlvs1.class, cleanupBuilder.build()).build());
 
-               // FIXME: fix inititated stateful
-               // assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false),
-               // ByteArray.cutBytes(result, 4)));
-               // assertArrayEquals(result, parser.serializeObject(builder.build()));
+               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false), ByteArray.cutBytes(result, 4)));
+               assertArrayEquals(result, parser.serializeObject(builder.build()));
        }
 
        @Test
index c2514e5a62afded3847d05e2c19cae8dba1f8e85..fba2eb3269df25a9d0904a63cc97b84b639810cc 100644 (file)
@@ -135,7 +135,7 @@ public class PCEPReplyMessageParser extends AbstractMessageParser {
                return new PcrepBuilder().setPcrepMessage(new PcrepMessageBuilder().setReplies(replies).build()).build();
        }
 
-       private Replies getValidReply(final List<Object> objects, final List<Message> errors) {
+       protected Replies getValidReply(final List<Object> objects, final List<Message> errors) {
                if (!(objects.get(0) instanceof Rp)) {
                        errors.add(createErrorMsg(PCEPErrors.RP_MISSING));
                        return null;
@@ -171,7 +171,7 @@ public class PCEPReplyMessageParser extends AbstractMessageParser {
                return new RepliesBuilder().setRp(rp).setResult(res).build();
        }
 
-       private void parseAttributes(final FailureCaseBuilder builder, final List<Object> objects) {
+       protected void parseAttributes(final FailureCaseBuilder builder, final List<Object> objects) {
                final List<Metrics> pathMetrics = Lists.newArrayList();
 
                Object obj;
@@ -218,7 +218,7 @@ public class PCEPReplyMessageParser extends AbstractMessageParser {
                builder.setMetrics(pathMetrics);
        }
 
-       private void parsePath(final PathsBuilder builder, final List<Object> objects) {
+       protected void parsePath(final PathsBuilder builder, final List<Object> objects) {
                final List<Metrics> pathMetrics = Lists.newArrayList();
 
                Object obj;
index 4aed34242d87cca35d5964785915d9572d49085d..44fbed0d2e6d84714fd5172874e87162671c3fb0 100644 (file)
@@ -105,7 +105,7 @@ public class PCEPRequestMessageParser extends AbstractMessageParser {
                }
        }
 
-       private void serializeP2P(final ByteBuf buffer, final P2p p2p) {
+       protected void serializeP2P(final ByteBuf buffer, final P2p p2p) {
                if (p2p.getEndpointsObj() != null) {
                        buffer.writeBytes(serializeObject(p2p.getEndpointsObj()));
                }
@@ -224,7 +224,7 @@ public class PCEPRequestMessageParser extends AbstractMessageParser {
                return new PcreqBuilder().setPcreqMessage(mBuilder.build()).build();
        }
 
-       private SegmentComputation getSegmentComputation(final P2pBuilder builder, final List<Object> objects, final List<Message> errors,
+       protected SegmentComputation getSegmentComputation(final P2pBuilder builder, final List<Object> objects, final List<Message> errors,
                        final Rp rp) {
                final List<Metrics> metrics = Lists.newArrayList();