BUG-50 : added tests for LSP/NoPath/RP Objects. 26/2326/2
authorDana Kutenicsova <dkutenic@cisco.com>
Sat, 2 Nov 2013 20:54:30 +0000 (21:54 +0100)
committerDana Kutenicsova <dkutenic@cisco.com>
Sat, 2 Nov 2013 21:05:36 +0000 (22:05 +0100)
Change-Id: I02953bcacd9326c9f270c8b52a141b3b61fd9e48
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
22 files changed:
bgp/parser-spi/pom.xml
pcep/api/src/main/yang/pcep-types.yang
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/Activator.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/AbstractObjectWithTlvsParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPLspObjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPNoPathObjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPRequestParameterObjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/tlv/LSPIdentifierTlvParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/tlv/LspSymbolicNameTlvParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/tlv/LspUpdateErrorTlvParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/tlv/NoPathVectorTlvParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/tlv/OrderTlvParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/tlv/RSVPErrorSpecTlvParser.java
pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPObjectParserTest.java
pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPTlvParserTest.java
pcep/impl/src/test/resources/PCEPLspObject1NoTlvsUpperBounds.bin [deleted file]
pcep/impl/src/test/resources/PCEPLspObject1WithTLV.bin [new file with mode: 0755]
pcep/impl/src/test/resources/PCEPNoPathObject1WithoutTLV.bin [new file with mode: 0755]
pcep/impl/src/test/resources/PCEPNoPathObject2WithTLV.bin [new file with mode: 0755]
pcep/impl/src/test/resources/PCEPRPObject1.bin
pcep/impl/src/test/resources/PCEPRPObject2.bin
topology/provider-pcep/src/main/java/org/opendaylight/bgpcep/topology/provider/pcep/ServerSessionManager.java

index dfc55113ba5a6a1f5ea78fd5d80cf4f651acaf8c..260886dcb16b7dbfb5f8275a52587292cec768c9 100644 (file)
             <version>${osgi.version}</version>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+                       <groupId>junit</groupId>
+                       <artifactId>junit</artifactId>
+               </dependency>
        </dependencies>
 
        <build>
index 4546bb97800f36e89304ecfd952d3807a55ec1d4..d3ecf7ea548579e14bd365f766e5c72bd2a3f08f 100644 (file)
@@ -163,17 +163,6 @@ module pcep-types {
                        }
                }
        }
-       
-       grouping p2mp-capable-tlv {
-               description "P2MP CAPABLE TLV";
-               reference "https://tools.ietf.org/html/rfc6006#section-3.1.2";
-
-               leaf value {
-                       type uint16;
-                       mandatory true;
-               }
-       }
-       
 
        grouping stateful-capability-tlv {
                description "Stateful PCE Capability TLV";
@@ -221,79 +210,83 @@ module pcep-types {
        grouping lsp-identifiers-tlv {
                description "LSP Identifiers TLV";
                reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.1";
-
-               uses tlv;
-               leaf lsp-id {
-                       type rsvp:lsp-id;
-                       mandatory true;
-               }
-
-               leaf tunnel-id {
-                       type rsvp:tunnel-id;
-                       mandatory true;
-               }
-
-               choice address-family {
-                       case ipv4 {
-                               leaf ipv4-tunnel-sender-address {
-                                       type inet:ipv4-address;
-                                       mandatory true;
-                               }
-                               leaf ipv4-extended-tunnel-id {
-                                       type rsvp:ipv4-extended-tunnel-id;
-                                       mandatory true;
-                               }
+               container lsp-identifiers {
+                       uses tlv;
+                       leaf lsp-id {
+                               type rsvp:lsp-id;
+                               mandatory true;
                        }
-                       case ipv6 {
-                               leaf ipv6-tunnel-sender-address {
-                                       type inet:ipv6-address;
-                                       mandatory true;
+       
+                       leaf tunnel-id {
+                               type rsvp:tunnel-id;
+                               mandatory true;
+                       }
+       
+                       choice address-family {
+                               case ipv4 {
+                                       leaf ipv4-tunnel-sender-address {
+                                               type inet:ipv4-address;
+                                               mandatory true;
+                                       }
+                                       leaf ipv4-extended-tunnel-id {
+                                               type rsvp:ipv4-extended-tunnel-id;
+                                               mandatory true;
+                                       }
                                }
-                               leaf ipv6-extended-tunnel-id {
-                                       type rsvp:ipv6-extended-tunnel-id;
-                                       mandatory true;
+                               case ipv6 {
+                                       leaf ipv6-tunnel-sender-address {
+                                               type inet:ipv6-address;
+                                               mandatory true;
+                                       }
+                                       leaf ipv6-extended-tunnel-id {
+                                               type rsvp:ipv6-extended-tunnel-id;
+                                               mandatory true;
+                                       }
                                }
                        }
+                       // FIXME: add tunnel endpoint (from stateful-07) 
                }
-               // FIXME: add tunnel endpoint (from stateful-07) 
        }
 
        grouping symbolic-path-name-tlv {
                description "Symbolic Path Name TLV";
                reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.2";
-
-               uses tlv;
-               leaf path-name {
-                       type symbolic-path-name;
-                       mandatory true;
+               container symbolic-path-name {
+                       uses tlv;
+                       leaf path-name {
+                               type symbolic-path-name;
+                               mandatory true;
+                       }
                }
        }
 
        grouping lsp-error-code-tlv {
                description "LSP Error Code TLV";
                reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.3";
-
-               uses tlv;
-               leaf error-code {
-                       type uint32;
-                       mandatory true;
+               container lsp-error-code {
+                       uses tlv;
+                       leaf error-code {
+                               type uint32;
+                               mandatory true;
+                       }
                }
        }
 
        grouping rsvp-error-spec-tlv {
                description "RSVP Error Spec TLV";
                reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.4";
-
-               uses tlv;
-               choice error-type {
-                       case rsvp {
-                               container rsvp-error {
-                                       uses rsvp:error-spec;
+               container rsvp-error-spec {
+                       uses tlv;
+                       choice error-type {
+                               case rsvp {
+                                       container rsvp-error {
+                                               uses rsvp:error-spec;
+                                       }
                                }
-                       }
-                       case user {
-                               container user-error {
-                                       uses rsvp:user-error-spec;
+                               case user {
+                                       container user-error {
+                                               uses rsvp:user-error-spec;
+                                       }
                                }
                        }
                }
@@ -312,16 +305,17 @@ module pcep-types {
        grouping order-tlv {
                description "Order TLV";
                reference "https://tools.ietf.org/html/rfc5557#section-5.4";
-
-               uses tlv;
-               leaf delete {
-                       type uint32;
-                       mandatory true;
-               }
-
-               leaf setup {
-                       type uint32;
-                       mandatory true;
+               container order {
+                       uses tlv;
+                       leaf delete {
+                               type uint32;
+                               mandatory true;
+                       }
+       
+                       leaf setup {
+                               type uint32;
+                               mandatory true;
+                       }
                }
        }
 
@@ -355,11 +349,6 @@ module pcep-types {
                        container of-list {
                                uses of-list-tlv;
                        }
-
-                       container p2mp {
-                               uses p2mp-capable-tlv;
-                       }
-
                        container stateful {
                                uses stateful-capability-tlv;
                        }
@@ -405,9 +394,7 @@ module pcep-types {
 
                uses object;
                container "tlvs" {
-                       container order {
-                               uses order-tlv;
-                       }
+                       uses order-tlv;
                }
 
                leaf priority {
@@ -835,21 +822,13 @@ module pcep-types {
 
                uses object;
                container "tlvs" {
-                       container lsp-error-code {
-                               uses lsp-error-code-tlv;
-                       }
+                       uses lsp-error-code-tlv;
 
-                       container lsp-identifiers {
-                               uses lsp-identifiers-tlv;
-                       }
+                       uses lsp-identifiers-tlv;
 
-                       container rsvp-error-spec {
-                               uses rsvp-error-spec-tlv;
-                       }
+                       uses rsvp-error-spec-tlv;
 
-                       container symbolic-path-name {
-                               uses symbolic-path-name-tlv;
-                       }
+                       uses symbolic-path-name-tlv;
                }
 
                leaf plsp-id {
@@ -881,11 +860,6 @@ module pcep-types {
                        type operational-status;
                        mandatory true;
                }
-
-               leaf signaling-type {
-                       type uint8;
-                       mandatory true;
-               }
        }
 
        grouping of-object {
index f8050a0782dc533e8a45d757d0037b2a0c8ef8da..66050aa89e30d7a574b052ac61c43ec4e1698f67 100644 (file)
@@ -91,19 +91,15 @@ 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.KeepaliveMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.LoadBalancingObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.LspDbVersionTlv;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.LspErrorCodeTlv;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.LspIdentifiersTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.LspObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.LspaObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.MetricObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.NoPathObject;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.NoPathVectorTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.NotificationObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.OfListTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.OfObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.OpenMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.OpenObject;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.OrderTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PathKeyObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PathKeySubobject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PcepErrorObject;
@@ -117,13 +113,17 @@ 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.PredundancyGroupIdTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ReportedRouteObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.RpObject;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.RsvpErrorSpecTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SrpObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.StatefulCapabilityTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SvecObject;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SymbolicPathNameTlv;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.error.code.tlv.LspErrorCode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.LspIdentifiers;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.order.tlv.Order;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.overload.duration.tlv.OverloadDuration;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.no.path.tlvs.NoPathVector;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.req.missing.tlv.ReqMissing;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.RsvpErrorSpec;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.symbolic.path.name.tlv.SymbolicPathName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.AsNumberSubobject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.IpPrefixSubobject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.LabelSubobject;
@@ -213,16 +213,16 @@ public final class Activator implements PCEPExtensionProviderActivator {
                context.registerTlvParser(LspDbVersionTlvParser.TYPE, new LspDbVersionTlvParser());
                context.registerTlvParser(PredundancyGroupTlvParser.TYPE, new PredundancyGroupTlvParser());
 
-               context.registerTlvSerializer(NoPathVectorTlv.class, new NoPathVectorTlvParser());
+               context.registerTlvSerializer(NoPathVector.class, new NoPathVectorTlvParser());
                context.registerTlvSerializer(OverloadDuration.class, new OverloadedDurationTlvParser());
                context.registerTlvSerializer(ReqMissing.class, new ReqMissingTlvParser());
                context.registerTlvSerializer(OfListTlv.class, new OFListTlvParser());
-               context.registerTlvSerializer(OrderTlv.class, new OrderTlvParser());
+               context.registerTlvSerializer(Order.class, new OrderTlvParser());
                context.registerTlvSerializer(StatefulCapabilityTlv.class, new PCEStatefulCapabilityTlvParser());
-               context.registerTlvSerializer(SymbolicPathNameTlv.class, new LspSymbolicNameTlvParser());
-               context.registerTlvSerializer(LspIdentifiersTlv.class, new LSPIdentifierTlvParser());
-               context.registerTlvSerializer(LspErrorCodeTlv.class, new LspUpdateErrorTlvParser());
-               context.registerTlvSerializer(RsvpErrorSpecTlv.class, new RSVPErrorSpecTlvParser());
+               context.registerTlvSerializer(SymbolicPathName.class, new LspSymbolicNameTlvParser());
+               context.registerTlvSerializer(LspIdentifiers.class, new LSPIdentifierTlvParser());
+               context.registerTlvSerializer(LspErrorCode.class, new LspUpdateErrorTlvParser());
+               context.registerTlvSerializer(RsvpErrorSpec.class, new RSVPErrorSpecTlvParser());
                context.registerTlvSerializer(LspDbVersionTlv.class, new LspDbVersionTlvParser());
                context.registerTlvSerializer(PredundancyGroupIdTlv.class, new PredundancyGroupTlvParser());
 
index 05c7ef09098777bca19606eb73dac270ab9829d3..92634743d2aaa1538be90a4cbc18ff266708c78e 100644 (file)
@@ -39,6 +39,9 @@ public abstract class AbstractObjectWithTlvsParser<BUILDER> implements ObjectPar
                if (bytes == null) {
                        throw new IllegalArgumentException("Byte array is mandatory.");
                }
+               if (bytes.length == 0) {
+                       return;
+               }
 
                int length;
                int byteOffset = 0;
@@ -59,7 +62,7 @@ public abstract class AbstractObjectWithTlvsParser<BUILDER> implements ObjectPar
 
                        logger.trace("Attempt to parse tlv from bytes: {}", ByteArray.bytesToHexString(tlvBytes));
                        final Tlv tlv = this.tlvReg.getTlvParser(type).parseTlv(tlvBytes);
-                       logger.debug("Tlv was parsed. {}", tlv);
+                       logger.trace("Tlv was parsed. {}", tlv);
 
                        addTlv(builder, tlv);
 
index c29d5a6fa3bc5f7acf0f7a833f2f4c24fb77b855..b562d2c3cfbac329b6ca7fa9a9d30d0c20aac48c 100644 (file)
@@ -16,13 +16,21 @@ import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.LspObject;
 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.OperationalStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PlspId;
 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.lsp.error.code.tlv.LspErrorCode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.LspIdentifiers;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.object.Tlvs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.object.TlvsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcinitiate.message.pcinitiate.message.requests.LspBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.RsvpErrorSpec;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.symbolic.path.name.tlv.SymbolicPathName;
 
 /**
- * Parser for {@link org.opendaylight.protocol.pcep.object.PCEPLspObject PCEPLspObject}
+ * Parser for {@link LspObject}
  */
-public class PCEPLspObjectParser extends AbstractObjectWithTlvsParser<LspBuilder> {
+public class PCEPLspObjectParser extends AbstractObjectWithTlvsParser<TlvsBuilder> {
 
        public static final int CLASS = 32;
 
@@ -32,15 +40,16 @@ public class PCEPLspObjectParser extends AbstractObjectWithTlvsParser<LspBuilder
         * offset of TLVs offset of other fields are not defined as constants
         * because of non-standard mapping of bits
         */
-       public static final int TLVS_OFFSET = 4;
+       private static final int TLVS_OFFSET = 4;
 
        /*
         * 12b extended to 16b so first 4b are restricted (belongs to LSP ID)
         */
        private static final int DELEGATE_FLAG_OFFSET = 15;
-       private static final int OPERATIONAL_FLAG_OFFSET = 13;
        private static final int SYNC_FLAG_OFFSET = 14;
-       private static final int REMOVE_FLAG_OFFSET = 12;
+       private static final int REMOVE_FLAG_OFFSET = 13;
+       private static final int ADMINISTRATIVE_FLAG_OFFSET = 12;
+       private static final int OPERATIONAL_OFFSET = 9;
 
        public PCEPLspObjectParser(final TlvHandlerRegistry tlvReg) {
                super(tlvReg);
@@ -51,29 +60,39 @@ public class PCEPLspObjectParser extends AbstractObjectWithTlvsParser<LspBuilder
                if (bytes == null || bytes.length == 0) {
                        throw new IllegalArgumentException("Array of bytes is mandatory. Can't be null or empty.");
                }
-
                final BitSet flags = ByteArray.bytesToBitSet(ByteArray.subByte(bytes, 2, 2));
 
                final LspBuilder builder = new LspBuilder();
-
-               parseTlvs(builder, ByteArray.cutBytes(bytes, TLVS_OFFSET));
-
                builder.setIgnore(header.isIgnore());
                builder.setProcessingRule(header.isProcessingRule());
 
-               // builder.setPlspId(new PlspId(ByteArray.bytesToLong(ByteArray.subByte(bytes, 0, 2)) & 0xFFFF) << 4 | (bytes[2]
-               // & 0xFF) >> 4));
+               builder.setPlspId(new PlspId((ByteArray.bytesToLong(ByteArray.subByte(bytes, 0, 2)) & 0xFFFF) << 4 | (bytes[2] & 0xFF) >> 4));
                builder.setDelegate(flags.get(DELEGATE_FLAG_OFFSET));
                builder.setSync(flags.get(SYNC_FLAG_OFFSET));
-               // builder.setOperational(Operational.flags.get(OPERATIONAL_FLAG_OFFSET));
                builder.setRemove(flags.get(REMOVE_FLAG_OFFSET));
-
+               builder.setAdministrative(flags.get(ADMINISTRATIVE_FLAG_OFFSET));
+               short s = 0;
+               s |= flags.get(OPERATIONAL_OFFSET + 2) ? 1 : 0;
+               s |= (flags.get(OPERATIONAL_OFFSET + 1) ? 1 : 0) << 1;
+               s |= (flags.get(OPERATIONAL_OFFSET) ? 1 : 0) << 2;
+               builder.setOperational(OperationalStatus.forValue(s));
+               final TlvsBuilder b = new TlvsBuilder();
+               parseTlvs(b, ByteArray.cutBytes(bytes, TLVS_OFFSET));
+               builder.setTlvs(b.build());
                return builder.build();
        }
 
        @Override
-       public void addTlv(final LspBuilder builder, final Tlv tlv) {
-               // FIXME : finish
+       public void addTlv(final TlvsBuilder builder, final Tlv tlv) {
+               if (tlv instanceof LspErrorCode) {
+                       builder.setLspErrorCode((LspErrorCode) tlv);
+               } else if (tlv instanceof LspIdentifiers) {
+                       builder.setLspIdentifiers((LspIdentifiers) tlv);
+               } else if (tlv instanceof RsvpErrorSpec) {
+                       builder.setRsvpErrorSpec((RsvpErrorSpec) tlv);
+               } else if (tlv instanceof SymbolicPathName) {
+                       builder.setSymbolicPathName((SymbolicPathName) tlv);
+               }
        }
 
        @Override
@@ -81,12 +100,10 @@ public class PCEPLspObjectParser extends AbstractObjectWithTlvsParser<LspBuilder
                if (!(object instanceof LspObject)) {
                        throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass() + ". Needed LspObject.");
                }
-
                final LspObject specObj = (LspObject) object;
 
-               // final byte[] tlvs = PCEPTlvParser.put(specObj.getTlvs());
-
-               final byte[] retBytes = new byte[0 + TLVS_OFFSET];
+               final byte[] tlvs = serializeTlvs(specObj.getTlvs());
+               final byte[] retBytes = new byte[TLVS_OFFSET + tlvs.length + getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
 
                final int lspID = specObj.getPlspId().getValue().intValue();
                retBytes[0] = (byte) (lspID >> 12);
@@ -95,21 +112,67 @@ public class PCEPLspObjectParser extends AbstractObjectWithTlvsParser<LspBuilder
                if (specObj.isDelegate()) {
                        retBytes[3] |= 1 << (Byte.SIZE - (DELEGATE_FLAG_OFFSET - Byte.SIZE) - 1);
                }
-               // FIXME: !!
-               // if (specObj.isOperational())
-               // retBytes[3] |= 1 << (Byte.SIZE - (OPERATIONAL_FLAG_OFFSET - Byte.SIZE) - 1);
                if (specObj.isRemove()) {
                        retBytes[3] |= 1 << (Byte.SIZE - (REMOVE_FLAG_OFFSET - Byte.SIZE) - 1);
                }
                if (specObj.isSync()) {
                        retBytes[3] |= 1 << (Byte.SIZE - (SYNC_FLAG_OFFSET - Byte.SIZE) - 1);
                }
-
-               // ByteArray.copyWhole(tlvs, retBytes, TLVS_OFFSET);
-
+               if (specObj.isAdministrative()) {
+                       retBytes[3] |= 1 << (Byte.SIZE - (ADMINISTRATIVE_FLAG_OFFSET - Byte.SIZE) - 1);
+               }
+               final int op = specObj.getOperational().getIntValue();
+               retBytes[3] |= (op & 7) << 4;
+               ByteArray.copyWhole(tlvs, retBytes, TLVS_OFFSET);
                return retBytes;
        }
 
+       public byte[] serializeTlvs(final Tlvs tlvs) {
+               if (tlvs == null) {
+                       return new byte[0];
+               }
+               int finalLength = 0;
+               byte[] lspErrBytes = null;
+               byte[] lspIdBytes = null;
+               byte[] rsvpErrBytes = null;
+               byte[] symbBytes = null;
+               if (tlvs.getLspErrorCode() != null) {
+                       lspErrBytes = serializeTlv(tlvs.getLspErrorCode());
+                       finalLength += lspErrBytes.length;
+               }
+               if (tlvs.getLspIdentifiers() != null) {
+                       lspIdBytes = serializeTlv(tlvs.getLspIdentifiers());
+                       finalLength += lspIdBytes.length;
+               }
+               if (tlvs.getRsvpErrorSpec() != null) {
+                       rsvpErrBytes = serializeTlv(tlvs.getRsvpErrorSpec());
+                       finalLength += rsvpErrBytes.length;
+               }
+               if (tlvs.getSymbolicPathName() != null) {
+                       symbBytes = serializeTlv(tlvs.getSymbolicPathName());
+                       finalLength += symbBytes.length;
+               }
+               int offset = 0;
+               final byte[] result = new byte[finalLength];
+               if (lspErrBytes != null) {
+                       ByteArray.copyWhole(lspErrBytes, result, offset);
+                       offset += lspErrBytes.length;
+               }
+               if (lspIdBytes != null) {
+                       ByteArray.copyWhole(lspIdBytes, result, offset);
+                       offset += lspIdBytes.length;
+               }
+               if (rsvpErrBytes != null) {
+                       ByteArray.copyWhole(rsvpErrBytes, result, offset);
+                       offset += rsvpErrBytes.length;
+               }
+               if (symbBytes != null) {
+                       ByteArray.copyWhole(symbBytes, result, offset);
+                       offset += symbBytes.length;
+               }
+               return result;
+       }
+
        @Override
        public int getObjectType() {
                return TYPE;
index b03de62ff65451dc2000f895850d89b1ee8e5947..3f2c4982fda5554b9c50a077b898127c684ba559 100644 (file)
@@ -20,6 +20,10 @@ 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.pcrep.message.pcrep.message.replies.result.failure.NoPath;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.NoPathBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.no.path.Tlvs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.no.path.TlvsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.no.path.tlvs.NoPathVector;
+
+import com.google.common.primitives.UnsignedBytes;
 
 /**
  * Parser for {@link NoPathObject}
@@ -33,24 +37,22 @@ public class PCEPNoPathObjectParser extends AbstractObjectWithTlvsParser<NoPathB
        /*
         * lengths of fields in bytes
         */
-       public static final int NI_F_LENGTH = 1; // multi-field
-       public static final int FLAGS_F_LENGTH = 2;
-       public static final int RESERVED_F_LENGTH = 1;
+       private static final int NI_F_LENGTH = 1;
+       private static final int FLAGS_F_LENGTH = 2;
+       private static final int RESERVED_F_LENGTH = 1;
 
        /*
         * offsets of field in bytes
         */
-
-       public static final int NI_F_OFFSET = 0;
-       public static final int FLAGS_F_OFFSET = NI_F_OFFSET + NI_F_LENGTH;
-       public static final int RESERVED_F_OFFSET = FLAGS_F_OFFSET + FLAGS_F_LENGTH;
-       public static final int TLVS_OFFSET = RESERVED_F_OFFSET + RESERVED_F_LENGTH;
+       private static final int NI_F_OFFSET = 0;
+       private static final int FLAGS_F_OFFSET = NI_F_OFFSET + NI_F_LENGTH;
+       private static final int RESERVED_F_OFFSET = FLAGS_F_OFFSET + FLAGS_F_LENGTH;
+       private static final int TLVS_OFFSET = RESERVED_F_OFFSET + RESERVED_F_LENGTH;
 
        /*
         * defined flags
         */
-
-       public static final int C_FLAG_OFFSET = 0;
+       private static final int C_FLAG_OFFSET = 0;
 
        public PCEPNoPathObjectParser(final TlvHandlerRegistry tlvReg) {
                super(tlvReg);
@@ -62,25 +64,23 @@ public class PCEPNoPathObjectParser extends AbstractObjectWithTlvsParser<NoPathB
                if (bytes == null || bytes.length == 0) {
                        throw new IllegalArgumentException("Array of bytes is mandatory. Can't be null or empty.");
                }
-
                final BitSet flags = ByteArray.bytesToBitSet(ByteArray.subByte(bytes, FLAGS_F_OFFSET, FLAGS_F_LENGTH));
 
                final NoPathBuilder builder = new NoPathBuilder();
-
-               parseTlvs(builder, ByteArray.cutBytes(bytes, TLVS_OFFSET));
-
                builder.setIgnore(header.isIgnore());
                builder.setProcessingRule(header.isProcessingRule());
 
-               builder.setNatureOfIssue((short) (bytes[NI_F_OFFSET] & 0xFF));
+               builder.setNatureOfIssue((short) UnsignedBytes.toInt(bytes[NI_F_OFFSET]));
                builder.setUnsatisfiedConstraints(flags.get(C_FLAG_OFFSET));
-
+               parseTlvs(builder, ByteArray.cutBytes(bytes, TLVS_OFFSET));
                return builder.build();
        }
 
        @Override
        public void addTlv(final NoPathBuilder builder, final Tlv tlv) {
-               // FIXME : add no-path-vector-tlv
+               if (tlv instanceof NoPathVector) {
+                       builder.setTlvs(new TlvsBuilder().setNoPathVector((NoPathVector) tlv).build());
+               }
        }
 
        @Override
@@ -88,34 +88,28 @@ public class PCEPNoPathObjectParser extends AbstractObjectWithTlvsParser<NoPathB
                if (!(object instanceof NoPathObject)) {
                        throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass() + ". Needed NoPathObject.");
                }
-
                final NoPathObject nPObj = (NoPathObject) object;
 
                final byte[] tlvs = serializeTlvs(((NoPath) nPObj).getTlvs());
-               int tlvsLength = 0;
-               if (tlvs != null) {
-                       tlvsLength = tlvs.length;
-               }
-               final byte[] retBytes = new byte[TLVS_OFFSET + tlvsLength + getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
-
+               final byte[] retBytes = new byte[TLVS_OFFSET + tlvs.length + getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
                if (tlvs != null) {
                        ByteArray.copyWhole(tlvs, retBytes, TLVS_OFFSET);
                }
                final BitSet flags = new BitSet(FLAGS_F_LENGTH * Byte.SIZE);
                flags.set(C_FLAG_OFFSET, nPObj.isUnsatisfiedConstraints());
-               retBytes[NI_F_OFFSET] = ByteArray.shortToBytes(nPObj.getNatureOfIssue())[1];
+               retBytes[NI_F_OFFSET] = UnsignedBytes.checkedCast(nPObj.getNatureOfIssue());
                ByteArray.copyWhole(ByteArray.bitSetToBytes(flags, FLAGS_F_LENGTH), retBytes, FLAGS_F_OFFSET);
                ByteArray.copyWhole(tlvs, retBytes, TLVS_OFFSET);
-
                return retBytes;
        }
 
        public byte[] serializeTlvs(final Tlvs tlvs) {
-               if (tlvs.getNoPathVector() != null) {
-                       // FIXME : add NoPath
-                       // return serializeTlv(new NoPathVectorBuilder().setFlags(tlvs.getNoPathVector()).build());
+               if (tlvs == null) {
+                       return new byte[0];
+               } else if (tlvs.getNoPathVector() != null) {
+                       return serializeTlv(tlvs.getNoPathVector());
                }
-               return null;
+               return new byte[0];
        }
 
        @Override
index 5bd8fcc17cf7db7b9b4b4a0d5b5d6b02a6bdf22b..edc74a28415180724f34e640213c3759b51ed25c 100644 (file)
@@ -17,19 +17,17 @@ import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
 import org.opendaylight.protocol.util.ByteArray;
 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.OrderTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.RequestId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.RpObject;
 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.order.tlv.Order;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.requests.RpBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.Tlvs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.TlvsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.tlvs.OrderBuilder;
 
 /**
  * Parser for {@link RpObject}
  */
-
 public class PCEPRequestParameterObjectParser extends AbstractObjectWithTlvsParser<RpBuilder> {
 
        public static final int CLASS = 2;
@@ -39,29 +37,28 @@ public class PCEPRequestParameterObjectParser extends AbstractObjectWithTlvsPars
        /*
         * lengths of fields in bytes
         */
-       public static final int FLAGS_PRI_MF_LENGTH = 4; // multi-field
-       public static final int RID_F_LENGTH = 4;
+       private static final int FLAGS_PRI_MF_LENGTH = 4;
+       private static final int RID_F_LENGTH = 4;
 
        /*
         * lengths of subfields inside multi-field in bits
         */
-       public static final int FLAGS_SF_LENGTH = 29;
-       public static final int PRI_SF_LENGTH = 3;
+       private static final int FLAGS_SF_LENGTH = 29;
 
        /*
         * offsets of field in bytes
         */
 
-       public static final int FLAGS_PRI_MF_OFFSET = 0;
-       public static final int RID_F_OFFSET = FLAGS_PRI_MF_OFFSET + FLAGS_PRI_MF_LENGTH;
-       public static final int TLVS_OFFSET = RID_F_OFFSET + RID_F_LENGTH;
+       private static final int FLAGS_PRI_MF_OFFSET = 0;
+       private static final int RID_F_OFFSET = FLAGS_PRI_MF_OFFSET + FLAGS_PRI_MF_LENGTH;
+       private static final int TLVS_OFFSET = RID_F_OFFSET + RID_F_LENGTH;
 
        /*
         * offsets of subfields inside multi-field in bits
         */
 
-       public static final int FLAGS_SF_OFFSET = 0;
-       public static final int PRI_SF_OFFSET = FLAGS_SF_OFFSET + FLAGS_SF_LENGTH;
+       private static final int FLAGS_SF_OFFSET = 0;
+       private static final int PRI_SF_OFFSET = FLAGS_SF_OFFSET + FLAGS_SF_LENGTH;
 
        /*
         * flags offsets inside flags sub-field in bits
@@ -81,16 +78,15 @@ public class PCEPRequestParameterObjectParser extends AbstractObjectWithTlvsPars
         * OF extension flags offsets inside flags sub.field in bits
         */
 
-       private static int S_FLAG_OFFSET = 24; // Supply OF on response
-
+       private static final int S_FLAG_OFFSET = 24;
        /*
         * RFC6006 flags
         */
-       private static int F_FLAG_OFFSET = 18;
+       private static final int F_FLAG_OFFSET = 18;
 
-       private static int N_FLAG_OFFSET = 19;
+       private static final int N_FLAG_OFFSET = 19;
 
-       private static int E_FLAG_OFFSET = 20;
+       private static final int E_FLAG_OFFSET = 20;
 
        public PCEPRequestParameterObjectParser(final TlvHandlerRegistry tlvReg) {
                super(tlvReg);
@@ -110,37 +106,30 @@ public class PCEPRequestParameterObjectParser extends AbstractObjectWithTlvsPars
                priority |= (flags.get(PRI_SF_OFFSET) ? 1 : 0) << 2;
 
                final RpBuilder builder = new RpBuilder();
-
-               parseTlvs(builder, ByteArray.cutBytes(bytes, TLVS_OFFSET));
-
                builder.setIgnore(header.isIgnore());
                builder.setProcessingRule(header.isProcessingRule());
 
-               builder.setBiDirectional(flags.get(B_FLAG_OFFSET));
-               builder.setEroCompression(flags.get(E_FLAG_OFFSET));
+               builder.setPriority(priority);
                builder.setFragmentation(flags.get(F_FLAG_OFFSET));
-               builder.setLoose(flags.get(O_FLAG_OFFSET));
+               builder.setP2mp(flags.get(N_FLAG_OFFSET));
+               builder.setEroCompression(flags.get(E_FLAG_OFFSET));
                builder.setMakeBeforeBreak(flags.get(M_FLAG_OFFSET));
                builder.setOrder(flags.get(D_FLAG_OFFSET));
-               builder.setP2mp(flags.get(N_FLAG_OFFSET));
-               builder.setReoptimization(flags.get(R_FLAG_OFFSET));
                builder.setSupplyOf(flags.get(S_FLAG_OFFSET));
-               builder.setPriority(priority);
-               builder.setRequestId(new RequestId(ByteArray.bytesToLong(Arrays.copyOfRange(bytes, RID_F_OFFSET, RID_F_OFFSET + RID_F_LENGTH))));
+               builder.setLoose(flags.get(O_FLAG_OFFSET));
+               builder.setBiDirectional(flags.get(B_FLAG_OFFSET));
+               builder.setReoptimization(flags.get(R_FLAG_OFFSET));
 
+               builder.setRequestId(new RequestId(ByteArray.bytesToLong(Arrays.copyOfRange(bytes, RID_F_OFFSET, RID_F_OFFSET + RID_F_LENGTH))));
+               parseTlvs(builder, ByteArray.cutBytes(bytes, TLVS_OFFSET));
                return builder.build();
        }
 
        @Override
        public void addTlv(final RpBuilder builder, final Tlv tlv) {
-               final TlvsBuilder tbuilder = new TlvsBuilder();
-               if (tlv instanceof OrderTlv) {
-                       final OrderBuilder b = new OrderBuilder();
-                       b.setDelete(((OrderTlv) tlv).getDelete());
-                       b.setSetup(((OrderTlv) tlv).getSetup());
-                       tbuilder.setOrder(b.build());
+               if (tlv instanceof Order) {
+                       builder.setTlvs(new TlvsBuilder().setOrder((Order) tlv).build());
                }
-               builder.setTlvs(tbuilder.build());
        }
 
        @Override
@@ -148,48 +137,42 @@ public class PCEPRequestParameterObjectParser extends AbstractObjectWithTlvsPars
                if (!(object instanceof RpObject)) {
                        throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass() + ". Needed RpObject.");
                }
-
                final RpObject rPObj = (RpObject) object;
-
-               final BitSet flags_priority = new BitSet(FLAGS_PRI_MF_LENGTH * Byte.SIZE);
-
-               flags_priority.set(R_FLAG_OFFSET, rPObj.isReoptimization());
-               flags_priority.set(B_FLAG_OFFSET, rPObj.isBiDirectional());
-               flags_priority.set(O_FLAG_OFFSET, rPObj.isLoose());
-               flags_priority.set(M_FLAG_OFFSET, rPObj.isMakeBeforeBreak());
-               flags_priority.set(D_FLAG_OFFSET, rPObj.isOrder());
-               flags_priority.set(S_FLAG_OFFSET, rPObj.isSupplyOf());
-               flags_priority.set(F_FLAG_OFFSET, rPObj.isFragmentation());
-               flags_priority.set(N_FLAG_OFFSET, rPObj.isP2mp());
-               flags_priority.set(E_FLAG_OFFSET, rPObj.isEroCompression());
-
-               flags_priority.set(PRI_SF_OFFSET, (rPObj.getPriority() & 1 << 2) != 0);
-               flags_priority.set(PRI_SF_OFFSET + 1, (rPObj.getPriority() & 1 << 1) != 0);
-               flags_priority.set(PRI_SF_OFFSET + 2, (rPObj.getPriority() & 1) != 0);
+               final BitSet flags = new BitSet(FLAGS_PRI_MF_LENGTH * Byte.SIZE);
+
+               flags.set(R_FLAG_OFFSET, rPObj.isReoptimization());
+               flags.set(B_FLAG_OFFSET, rPObj.isBiDirectional());
+               flags.set(O_FLAG_OFFSET, rPObj.isLoose());
+               flags.set(M_FLAG_OFFSET, rPObj.isMakeBeforeBreak());
+               flags.set(D_FLAG_OFFSET, rPObj.isOrder());
+               flags.set(S_FLAG_OFFSET, rPObj.isSupplyOf());
+               flags.set(F_FLAG_OFFSET, rPObj.isFragmentation());
+               flags.set(N_FLAG_OFFSET, rPObj.isP2mp());
+               flags.set(E_FLAG_OFFSET, rPObj.isEroCompression());
+
+               flags.set(PRI_SF_OFFSET, (rPObj.getPriority() & 1 << 2) != 0);
+               flags.set(PRI_SF_OFFSET + 1, (rPObj.getPriority() & 1 << 1) != 0);
+               flags.set(PRI_SF_OFFSET + 2, (rPObj.getPriority() & 1) != 0);
 
                final byte[] tlvs = serializeTlvs(rPObj.getTlvs());
-               int tlvsLength = 0;
-               if (tlvs != null) {
-                       tlvsLength = tlvs.length;
-               }
-               final byte[] retBytes = new byte[TLVS_OFFSET + tlvsLength + getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
-
-               if (tlvs != null) {
-                       ByteArray.copyWhole(tlvs, retBytes, TLVS_OFFSET);
-               }
+               final byte[] retBytes = new byte[TLVS_OFFSET + tlvs.length + getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
 
-               ByteArray.copyWhole(ByteArray.bitSetToBytes(flags_priority, FLAGS_PRI_MF_LENGTH), retBytes, FLAGS_PRI_MF_OFFSET);
+               ByteArray.copyWhole(ByteArray.bitSetToBytes(flags, FLAGS_PRI_MF_LENGTH), retBytes, FLAGS_PRI_MF_OFFSET);
                ByteArray.copyWhole(ByteArray.subByte(ByteArray.longToBytes(rPObj.getRequestId().getValue()), (Long.SIZE / Byte.SIZE)
                                - RID_F_LENGTH, RID_F_LENGTH), retBytes, RID_F_OFFSET);
-
+               if (tlvs.length != 0) {
+                       ByteArray.copyWhole(tlvs, retBytes, TLVS_OFFSET);
+               }
                return retBytes;
        }
 
        public byte[] serializeTlvs(final Tlvs tlvs) {
-               if (tlvs.getOrder() != null) {
-                       return serializeTlv(new OrderBuilder().setDelete(tlvs.getOrder().getDelete()).setSetup(tlvs.getOrder().getSetup()).build());
+               if (tlvs == null) {
+                       return new byte[0];
+               } else if (tlvs.getOrder() != null) {
+                       return serializeTlv(tlvs.getOrder());
                }
-               return null;
+               return new byte[0];
        }
 
        @Override
index 1da47a54252b3023b24fec7d60e127efb3cdc537..1f72e30eef1bac457347e231bd3ba9fb2777499c 100644 (file)
@@ -15,12 +15,13 @@ 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.types.rev131005.LspIdentifiersTlv;
 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.lsp.identifiers.tlv.AddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.address.family.Ipv4;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.address.family.Ipv4Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.address.family.Ipv6;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.address.family.Ipv6Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.object.tlvs.LspIdentifiersBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.LspIdentifiers;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.LspIdentifiersBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.lsp.identifiers.AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.lsp.identifiers.address.family.Ipv4;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.lsp.identifiers.address.family.Ipv4Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.lsp.identifiers.address.family.Ipv6;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.lsp.identifiers.address.family.Ipv6Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.Ipv4ExtendedTunnelId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.Ipv6ExtendedTunnelId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.LspId;
@@ -47,7 +48,7 @@ public class LSPIdentifierTlvParser implements TlvParser, TlvSerializer {
        private static final int V6_LENGTH = 36;
 
        @Override
-       public LspIdentifiersTlv parseTlv(final byte[] valueBytes) throws PCEPDeserializerException {
+       public LspIdentifiers parseTlv(final byte[] valueBytes) throws PCEPDeserializerException {
                int position = 0;
                if (valueBytes == null || valueBytes.length == 0) {
                        throw new IllegalArgumentException("Value bytes array is mandatory. Can't be null or empty.");
@@ -91,7 +92,7 @@ public class LSPIdentifierTlvParser implements TlvParser, TlvSerializer {
                if (tlv == null) {
                        throw new IllegalArgumentException("LspIdentifiersTlv is mandatory.");
                }
-               final LspIdentifiersTlv lsp = (LspIdentifiersTlv) tlv;
+               final LspIdentifiers lsp = (LspIdentifiers) tlv;
                final AddressFamily afi = lsp.getAddressFamily();
                int offset = 0;
                if (afi.getImplementedInterface().equals(Ipv4.class)) {
index 4a9ccae2f66bcf254f2110b37bcc1357e7a7d3a9..823f8ba32d6013bbe587947f0fd79e6d1fdf210c 100644 (file)
@@ -10,21 +10,21 @@ package org.opendaylight.protocol.pcep.impl.tlv;
 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.TlvParser;
 import org.opendaylight.protocol.pcep.spi.TlvSerializer;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SymbolicPathName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SymbolicPathNameTlv;
 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.lsp.object.tlvs.SymbolicPathNameBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.symbolic.path.name.tlv.SymbolicPathName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.symbolic.path.name.tlv.SymbolicPathNameBuilder;
 
 /**
- * Parser for {@link SymbolicPathNameTlv}
+ * Parser for {@link SymbolicPathName}
  */
 public class LspSymbolicNameTlvParser implements TlvParser, TlvSerializer {
 
        public static final int TYPE = 17;
 
        @Override
-       public SymbolicPathNameTlv parseTlv(final byte[] buffer) throws PCEPDeserializerException {
-               return new SymbolicPathNameBuilder().setPathName(new SymbolicPathName(buffer)).build();
+       public SymbolicPathName parseTlv(final byte[] buffer) throws PCEPDeserializerException {
+               return new SymbolicPathNameBuilder().setPathName(
+                               new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SymbolicPathName(buffer)).build();
        }
 
        @Override
@@ -32,7 +32,7 @@ public class LspSymbolicNameTlvParser implements TlvParser, TlvSerializer {
                if (tlv == null) {
                        throw new IllegalArgumentException("SymbolicPathNameTlv is mandatory.");
                }
-               final SymbolicPathNameTlv spn = (SymbolicPathNameTlv) tlv;
+               final SymbolicPathName spn = (SymbolicPathName) tlv;
                return spn.getPathName().getValue();
        }
 
index 6322b42d5590300d2c02524c95946856d577e37b..4c5358356a80fdd9235fafc991fae21b098c3620 100644 (file)
@@ -11,12 +11,12 @@ import org.opendaylight.protocol.pcep.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.types.rev131005.LspErrorCodeTlv;
 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.lsp.object.tlvs.LspErrorCodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.error.code.tlv.LspErrorCode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.error.code.tlv.LspErrorCodeBuilder;
 
 /**
- * Parser for {@link LspErrorCodeTlv}
+ * Parser for {@link LspErrorCode}
  */
 public class LspUpdateErrorTlvParser implements TlvParser, TlvSerializer {
 
@@ -25,7 +25,7 @@ public class LspUpdateErrorTlvParser implements TlvParser, TlvSerializer {
        private static final int UPDATE_ERR_CODE_LENGTH = 4;
 
        @Override
-       public LspErrorCodeTlv parseTlv(final byte[] buffer) throws PCEPDeserializerException {
+       public LspErrorCode parseTlv(final byte[] buffer) throws PCEPDeserializerException {
                return new LspErrorCodeBuilder().setErrorCode(ByteArray.bytesToLong(buffer)).build();
        }
 
@@ -34,7 +34,7 @@ public class LspUpdateErrorTlvParser implements TlvParser, TlvSerializer {
                if (tlv == null) {
                        throw new IllegalArgumentException("LspErrorCodeTlv is mandatory.");
                }
-               final LspErrorCodeTlv lsp = (LspErrorCodeTlv) tlv;
+               final LspErrorCode lsp = (LspErrorCode) tlv;
                return ByteArray.subByte(ByteArray.longToBytes(lsp.getErrorCode()), UPDATE_ERR_CODE_LENGTH, UPDATE_ERR_CODE_LENGTH);
        }
 
index 2eba141a7fa374da6580f30252526e75d9f650b1..eb9e09d04b3c7a372444d7789ece81bb08fe220f 100644 (file)
@@ -13,13 +13,13 @@ import org.opendaylight.protocol.pcep.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.types.rev131005.NoPathVectorTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.NoPathVectorTlv.Flags;
 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.pcrep.message.pcrep.message.replies.result.failure.no.path.tlvs.NoPathVector;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.no.path.tlvs.NoPathVectorBuilder;
 
 /**
- * Parser for {@link NoPathVectorTlv}
+ * Parser for {@link NoPathVector}
  */
 public class NoPathVectorTlvParser implements TlvParser, TlvSerializer {
 
@@ -37,7 +37,7 @@ public class NoPathVectorTlvParser implements TlvParser, TlvSerializer {
        private static final int PCE_UNAVAILABLE = 31;
 
        @Override
-       public NoPathVectorTlv parseTlv(final byte[] valueBytes) throws PCEPDeserializerException {
+       public NoPathVector parseTlv(final byte[] valueBytes) throws PCEPDeserializerException {
                if (valueBytes == null || valueBytes.length == 0) {
                        throw new IllegalArgumentException("Array of bytes is mandatory. Can't be null or empty.");
                }
@@ -55,7 +55,7 @@ public class NoPathVectorTlvParser implements TlvParser, TlvSerializer {
                if (tlvs == null) {
                        throw new IllegalArgumentException("NoPathVectorTlv is mandatory.");
                }
-               final NoPathVectorTlv tlv = (NoPathVectorTlv) tlvs;
+               final NoPathVector tlv = (NoPathVector) tlvs;
 
                final BitSet flags = new BitSet(FLAGS_F_LENGTH * Byte.SIZE);
                flags.set(REACHABLITY_PROBLEM, tlv.getFlags().isP2mpUnreachable());
index 3eb2cfe9f746fdb543407aa2d6cee3e955a16d62..a595ef047a81e6fede76ccda62c910dfb4f22a4b 100644 (file)
@@ -11,12 +11,12 @@ import org.opendaylight.protocol.pcep.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.types.rev131005.OrderTlv;
 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.rp.object.tlvs.OrderBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.order.tlv.Order;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.order.tlv.OrderBuilder;
 
 /**
- * Parser for {@link OrderTlv}
+ * Parser for {@link Order}
  */
 public class OrderTlvParser implements TlvParser, TlvSerializer {
 
@@ -27,7 +27,7 @@ public class OrderTlvParser implements TlvParser, TlvSerializer {
        private static final int ORDR_SETUP_LENGTH = 4;
 
        @Override
-       public OrderTlv parseTlv(final byte[] buffer) throws PCEPDeserializerException {
+       public Order parseTlv(final byte[] buffer) throws PCEPDeserializerException {
                return new OrderBuilder().setDelete(Long.valueOf(ByteArray.bytesToLong(ByteArray.subByte(buffer, 0, ORDR_DEL_LENGTH)))).setSetup(
                                ByteArray.bytesToLong(ByteArray.subByte(buffer, ORDR_DEL_LENGTH, ORDR_SETUP_LENGTH))).build();
        }
@@ -37,7 +37,7 @@ public class OrderTlvParser implements TlvParser, TlvSerializer {
                if (tlv == null) {
                        throw new IllegalArgumentException("OrderTlv is mandatory.");
                }
-               final OrderTlv otlv = (OrderTlv) tlv;
+               final Order otlv = (Order) tlv;
                final byte[] bytes = new byte[ORDR_DEL_LENGTH + ORDR_SETUP_LENGTH];
                int offset = 0;
                ByteArray.copyWhole(ByteArray.subByte(ByteArray.longToBytes(otlv.getDelete()), 4, ORDR_DEL_LENGTH), bytes, offset);
index 2fcdadbb39d1b56da811a95fc084724104cbf62b..fdda882e46317e5ae991aac9da7fe560fe76e4a6 100644 (file)
@@ -18,24 +18,24 @@ import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.protocol.util.Util;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.iana.rev130816.EnterpriseNumber;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.RsvpErrorSpecTlv;
 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.lsp.object.tlvs.RsvpErrorSpecBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.ErrorType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.error.type.Rsvp;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.error.type.RsvpBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.error.type.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.error.type.UserBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.error.type.rsvp.RsvpError;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.error.type.rsvp.RsvpErrorBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.error.type.user.UserError;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.error.type.user.UserErrorBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.RsvpErrorSpec;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.RsvpErrorSpecBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.rsvp.error.spec.ErrorType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.rsvp.error.spec.error.type.Rsvp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.rsvp.error.spec.error.type.RsvpBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.rsvp.error.spec.error.type.User;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.rsvp.error.spec.error.type.UserBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.rsvp.error.spec.error.type.rsvp.RsvpError;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.rsvp.error.spec.error.type.rsvp.RsvpErrorBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.rsvp.error.spec.error.type.user.UserError;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.rsvp.error.spec.error.type.user.UserErrorBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.ErrorSpec.Flags;
 
 import com.google.common.primitives.UnsignedBytes;
 
 /**
- * Parser for {@link RsvpErrorSpecTlv}
+ * Parser for {@link RsvpErrorSpec}
  */
 public final class RSVPErrorSpecTlvParser implements TlvParser, TlvSerializer {
 
@@ -66,7 +66,7 @@ public final class RSVPErrorSpecTlvParser implements TlvParser, TlvSerializer {
        private static final int V6_RSVP_LENGTH = 22;
 
        @Override
-       public RsvpErrorSpecTlv parseTlv(final byte[] valueBytes) throws PCEPDeserializerException {
+       public RsvpErrorSpec parseTlv(final byte[] valueBytes) throws PCEPDeserializerException {
                if (valueBytes == null || valueBytes.length == 0) {
                        throw new IllegalArgumentException("Value bytes array is mandatory. Can't be null or empty.");
                }
@@ -90,7 +90,7 @@ public final class RSVPErrorSpecTlvParser implements TlvParser, TlvSerializer {
                if (tlv == null) {
                        throw new IllegalArgumentException("RSVPErrorSpecTlv is mandatory.");
                }
-               final RsvpErrorSpecTlv rsvp = (RsvpErrorSpecTlv) tlv;
+               final RsvpErrorSpec rsvp = (RsvpErrorSpec) tlv;
 
                if (rsvp.getErrorType().getImplementedInterface().equals(Rsvp.class)) {
                        final Rsvp r = (Rsvp) rsvp.getErrorType();
index 0f482c4388009786327c4dd4e9dc7714211475c5..684be5731c762dd6c74aaf2b695cf5b30ed4002b 100644 (file)
@@ -26,10 +26,13 @@ import org.opendaylight.protocol.pcep.impl.object.PCEPEndPointsObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPErrorObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPGlobalConstraintsObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPLoadBalancingObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPLspObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPLspaObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPMetricObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPNoPathObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPNotificationObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPObjectiveFunctionObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPRequestParameterObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPSrpObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPSvecObjectParser;
 import org.opendaylight.protocol.pcep.spi.ObjectHeaderImpl;
@@ -38,8 +41,9 @@ import org.opendaylight.protocol.pcep.spi.pojo.PCEPExtensionProviderContextImpl;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ieee754.rev130819.Float32;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ClassType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.NotificationObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.OfId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.OperationalStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PlspId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.RequestId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SrpIdNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.close.message.c.close.message.CCloseBuilder;
@@ -48,18 +52,27 @@ 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.lsp.attributes.ClassTypeBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.attributes.LspaBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.attributes.OfBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.error.code.tlv.LspErrorCode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.error.code.tlv.LspErrorCodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.order.tlv.OrderBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.overload.duration.tlv.OverloadDurationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.TlvsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.ErrorsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcinitiate.message.pcinitiate.message.requests.EndpointsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcinitiate.message.pcinitiate.message.requests.LspBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcinitiate.message.pcinitiate.message.requests.SrpBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcntf.message.pcntf.message.notifications.NotificationsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.NoPathBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.no.path.tlvs.NoPathVectorBuilder;
 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.RpBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.requests.segment.computation.p2p.LoadBalancingBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.requests.segment.computation.p2p.reported.route.BandwidthBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.svec.GcBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcreq.message.pcreq.message.svec.MetricBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.req.missing.tlv.ReqMissingBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.symbolic.path.name.tlv.SymbolicPathName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.symbolic.path.name.tlv.SymbolicPathNameBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.AttributeFilter;
 
 import com.google.common.collect.Lists;
@@ -80,27 +93,6 @@ public class PCEPObjectParserTest {
        // public void testObjectDeserialization() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
        // PCEPObjectFactory.parseObjects(ByteArray.fileToBytes("src/test/resources/PCEPOpenObject1.bin"));
        // }
-       //
-       // @Test
-       // public void testUnknownClass() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
-       //
-       // final PCEPObject obj =
-       // PCEPObjectFactory.parseObjects(ByteArray.fileToBytes("src/test/resources/PCEPObject1UnknownClass.bin")).get(
-       // 0);
-       //
-       // // assertTrue(obj instanceof UnknownObject);
-       // // assertEquals(((UnknownObject) obj).getError(), PCEPErrors.UNRECOGNIZED_OBJ_CLASS);
-       // }
-       //
-       // // @Test
-       // // public void testUnknownType() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
-       // // final PCEPObject obj =
-       // PCEPObjectFactory.parseObjects(ByteArray.fileToBytes("src/test/resources/PCEPObject2UnknownType.bin")).get(0);
-       // //
-       // // assertTrue(obj instanceof UnknownObject);
-       // // assertEquals(((UnknownObject) obj).getError(), PCEPErrors.UNRECOGNIZED_OBJ_TYPE);
-       // // }
-       // //
 
        @Test
        public void testCloseObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
@@ -131,12 +123,30 @@ public class PCEPObjectParserTest {
                assertArrayEquals(result, parser.serializeObject(builder.build()));
        }
 
-       //
-       // @Test
-       // public void testLspObjectSerDeser() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
-       // serDeserTest("src/test/resources/PCEPLspObject1NoTlvsUpperBounds.bin", new PCEPLspObject(0xFFFFF, true, false,
-       // true, false, null));
-       // }
+       @Test
+       public void testLspObjectWithTLV() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
+               final PCEPLspObjectParser parser = new PCEPLspObjectParser(this.tlvRegistry);
+               final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPLspObject1WithTLV.bin");
+
+               final LspBuilder builder = new LspBuilder();
+               builder.setProcessingRule(true);
+               builder.setIgnore(true);
+               builder.setAdministrative(true);
+               builder.setDelegate(false);
+               builder.setRemove(true);
+               builder.setSync(false);
+               builder.setOperational(OperationalStatus.GoingDown);
+               builder.setPlspId(new PlspId(0x12345L));
+
+               final LspErrorCode tlv1 = new LspErrorCodeBuilder().setErrorCode(627610883L).build();
+               final SymbolicPathName tlv2 = new SymbolicPathNameBuilder().setPathName(
+                               new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SymbolicPathName("Med".getBytes())).build();
+               builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.object.TlvsBuilder().setLspErrorCode(
+                               tlv1).setSymbolicPathName(tlv2).build());
+               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+               assertArrayEquals(result, parser.serializeObject(builder.build()));
+       }
+
        //
        // @Test
        // public void testERObjectSerDeser() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
@@ -359,23 +369,33 @@ public class PCEPObjectParserTest {
                assertArrayEquals(result, parser.serializeObject(builder.build()));
        }
 
-       // @Test
-       // public void testNoPathObject() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
-       // final List<PCEPTlv> tlvs = new ArrayList<PCEPTlv>(1);
-       // tlvs.add(new NoPathVectorTlv(false, false, true, false, false, false));
-       // serDeserTest("src/test/resources/NoPathObject1WithTLV.bin", new PCEPNoPathObject((short) 2, true, tlvs, false));
-       // serDeserTest("src/test/resources/NoPathObject2WithoutTLV.bin", new PCEPNoPathObject((short) 0x10, false, true));
-       //
-       // byte[] bytesFromFile = ByteArray.fileToBytes("src/test/resources/NoPathObject2WithoutTLV.bin");
-       // PCEPNoPathObject noPathObject = (PCEPNoPathObject) PCEPObjectFactory.parseObjects(bytesFromFile).get(0);
-       // byte[] bytesActual = PCEPObjectFactory.put(Arrays.asList((PCEPObject) noPathObject));
-       // assertArrayEquals(bytesFromFile, bytesActual);
-       //
-       // bytesFromFile = ByteArray.fileToBytes("src/test/resources/NoPathObject1WithTLV.bin");
-       // noPathObject = (PCEPNoPathObject) PCEPObjectFactory.parseObjects(bytesFromFile).get(0);
-       // bytesActual = PCEPObjectFactory.put(Arrays.asList((PCEPObject) noPathObject));
-       // assertArrayEquals(bytesFromFile, bytesActual);
-       // }
+       @Test
+       public void testNoPathObjectWithTlv() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
+               final PCEPNoPathObjectParser parser = new PCEPNoPathObjectParser(this.tlvRegistry);
+               byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPNoPathObject1WithoutTLV.bin");
+
+               final NoPathBuilder builder = new NoPathBuilder();
+               builder.setProcessingRule(true);
+               builder.setIgnore(true);
+               builder.setNatureOfIssue((short) 1);
+               builder.setUnsatisfiedConstraints(true);
+
+               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+               assertArrayEquals(result, parser.serializeObject(builder.build()));
+
+               result = ByteArray.fileToBytes("src/test/resources/PCEPNoPathObject2WithTLV.bin");
+
+               builder.setNatureOfIssue((short) 0);
+               builder.setUnsatisfiedConstraints(false);
+
+               final NoPathVectorBuilder b = new NoPathVectorBuilder();
+               b.setFlags(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.NoPathVectorTlv.Flags(false, true, false, true, false, true, true, true));
+               builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.no.path.TlvsBuilder().setNoPathVector(
+                               b.build()).build());
+
+               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+               assertArrayEquals(result, parser.serializeObject(builder.build()));
+       }
 
        @Test
        public void testNotifyObjectWithTlv() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
@@ -398,7 +418,6 @@ public class PCEPObjectParserTest {
                builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.notification.object.TlvsBuilder().setOverloadDuration(
                                new OverloadDurationBuilder().setDuration(0xff0000a2L).build()).build());
 
-               final NotificationObject t = parser.parseObject(new ObjectHeaderImpl(true, true), result);
                assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
                assertArrayEquals(result, parser.serializeObject(builder.build()));
        }
@@ -447,32 +466,46 @@ public class PCEPObjectParserTest {
        // null));
        // }
        //
-       // /**
-       // * Standard deserialization test<br/>
-       // * Used resources:<br/>
-       // * - PCEPRPObject1.bin
-       // *
-       // * @throws PCEPDeserializerException
-       // * @throws IOException
-       // * @throws PCEPDocumentedException
-       // */
-       // @Test
-       // public void testRPObjectSerDeser() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
-       // serDeserTest("src/test/resources/PCEPRPObject1.bin",
-       // new PCEPRequestParameterObject(true, false, true, true, false, false, false, false, (short) 5, 0xdeadbeefL,
-       // false, false));
-       // // serDeserTest(
-       // // "src/test/resources/PCEPRPObject2.bin",
-       // // new PCEPRequestParameterObject(true, false, false, false, true, false, true, false, true, (short) 5,
-       // 0xdeadbeefL, new ArrayList<PCEPTlv>() {
-       // // private static final long serialVersionUID = 1L;
-       // //
-       // // {
-       // // this.add(new OrderTlv(0xFFFFFFFFL, 0x00000001L));
-       // // }
-       // // }, false, false));
-       // }
-       //
+
+       @Test
+       public void testRPObjectWithTlv() throws PCEPDeserializerException, IOException, PCEPDocumentedException {
+               final PCEPRequestParameterObjectParser parser = new PCEPRequestParameterObjectParser(this.tlvRegistry);
+               byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPRPObject1.bin");
+
+               final RpBuilder builder = new RpBuilder();
+               builder.setProcessingRule(true);
+               builder.setIgnore(true);
+               builder.setReoptimization(true);
+               builder.setBiDirectional(false);
+               builder.setLoose(true);
+               builder.setMakeBeforeBreak(true);
+               builder.setOrder(false);
+               builder.setSupplyOf(false);
+               builder.setFragmentation(false);
+               builder.setP2mp(false);
+               builder.setEroCompression(false);
+               builder.setPriority((short) 5);
+               builder.setRequestId(new RequestId(0xdeadbeefL));
+
+               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+               assertArrayEquals(result, parser.serializeObject(builder.build()));
+
+               result = ByteArray.fileToBytes("src/test/resources/PCEPRPObject2.bin");
+
+               builder.setReoptimization(false);
+               builder.setFragmentation(true);
+               builder.setEroCompression(true);
+
+               final OrderBuilder b = new OrderBuilder();
+               b.setDelete(0xffffffffL);
+               b.setSetup(1L);
+
+               builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.TlvsBuilder().setOrder(
+                               b.build()).build());
+
+               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result));
+               assertArrayEquals(result, parser.serializeObject(builder.build()));
+       }
 
        @Test
        public void testSvecObject() throws IOException, PCEPDeserializerException, PCEPDocumentedException {
@@ -626,26 +659,6 @@ public class PCEPObjectParserTest {
        // }
        //
        // @Test
-       // public void testOFCodesMapping() {
-       // final PCEPOFCodesMapping mapper = PCEPOFCodesMapping.getInstance();
-       //
-       // for (final PCEPOFCodes ofCode : PCEPOFCodes.values()) {
-       // final int ofCodeId = mapper.getFromOFCodesEnum(ofCode);
-       // assertEquals(ofCode, mapper.getFromCodeIdentifier(ofCodeId));
-       // }
-       // }
-       //
-       // @SuppressWarnings("unchecked")
-       // private static <T extends PCEPObject> void serDeserTestWithoutBin(final T object) throws
-       // PCEPDeserializerException,
-       // PCEPDocumentedException {
-       // final byte[] serBytes = PCEPObjectFactory.put(Arrays.asList((PCEPObject) object));
-       // final T deserObj = (T) PCEPObjectFactory.parseObjects(serBytes).get(0);
-       //
-       // assertEquals(object, deserObj);
-       // }
-       //
-       // @Test
        // public void testSERObjects() throws PCEPDocumentedException, PCEPDeserializerException {
        // final List<ExplicitRouteSubobject> eroSubobjects = new ArrayList<ExplicitRouteSubobject>();
        // eroSubobjects.add(new EROIPPrefixSubobject<IPv4Prefix>(new IPv4Prefix(new IPv4Address(new byte[] { (byte) 192,
@@ -665,30 +678,4 @@ public class PCEPObjectParserTest {
        //
        // serDeserTestWithoutBin(new PCEPSecondaryRecordRouteObject(rroSubobjects, true, false));
        // }
-       //
-       // @Test
-       // public void testP2MPEndpointsObjects() throws PCEPDeserializerException, PCEPDocumentedException {
-       // serDeserTestWithoutBin(new PCEPP2MPEndPointsObject<IPv4Address>(2, this.ipv4addr, Arrays.asList(this.ipv4addr,
-       // this.ipv4addr,
-       // this.ipv4addr), true, false));
-       // serDeserTestWithoutBin(new PCEPP2MPEndPointsObject<IPv4Address>(1, this.ipv4addr, Arrays.asList(this.ipv4addr),
-       // true, false));
-       // serDeserTestWithoutBin(new PCEPP2MPEndPointsObject<IPv6Address>(2, this.ipv6addr, Arrays.asList(this.ipv6addr,
-       // this.ipv6addr,
-       // this.ipv6addr), true, false));
-       // serDeserTestWithoutBin(new PCEPP2MPEndPointsObject<IPv6Address>(1, this.ipv6addr, Arrays.asList(this.ipv6addr),
-       // true, false));
-       // }
-       //
-       // @Test
-       // public void testUnreachedDestinationObjects() throws PCEPDeserializerException, PCEPDocumentedException {
-       // serDeserTestWithoutBin(new PCEPUnreachedDestinationObject<IPv4Address>(Arrays.asList(this.ipv4addr,
-       // this.ipv4addr, this.ipv4addr), true, false));
-       // serDeserTestWithoutBin(new PCEPUnreachedDestinationObject<IPv4Address>(Arrays.asList(this.ipv4addr), true,
-       // false));
-       // serDeserTestWithoutBin(new PCEPUnreachedDestinationObject<IPv6Address>(Arrays.asList(this.ipv6addr,
-       // this.ipv6addr, this.ipv6addr), true, false));
-       // serDeserTestWithoutBin(new PCEPUnreachedDestinationObject<IPv6Address>(Arrays.asList(this.ipv6addr), true,
-       // false));
-       // }
 }
index 7cc2c8321a774ba14af8e9f358763cd67b28474a..3809333c3e245440b292c2dd74483c8bcd6a1f07 100644 (file)
@@ -32,39 +32,38 @@ import org.opendaylight.protocol.pcep.impl.tlv.ReqMissingTlvParser;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.iana.rev130816.EnterpriseNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.LspDbVersionTlv;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.LspErrorCodeTlv;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.LspIdentifiersTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.NoPathVectorTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.OfId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.OfListTlv;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.OrderTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PredundancyGroupIdTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.RequestId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.RsvpErrorSpecTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.StatefulCapabilityTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.StatefulCapabilityTlv.Flags;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SymbolicPathName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SymbolicPathNameTlv;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.address.family.Ipv4Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.address.family.Ipv6Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.object.tlvs.LspErrorCodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.object.tlvs.LspIdentifiersBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.object.tlvs.RsvpErrorSpecBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.object.tlvs.SymbolicPathNameBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.error.code.tlv.LspErrorCode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.error.code.tlv.LspErrorCodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.LspIdentifiers;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.LspIdentifiersBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.lsp.identifiers.address.family.Ipv4Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.identifiers.tlv.lsp.identifiers.address.family.Ipv6Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.tlvs.LspDbVersionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.tlvs.OfListBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.tlvs.PredundancyGroupIdBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.tlvs.StatefulBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.order.tlv.Order;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.order.tlv.OrderBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.overload.duration.tlv.OverloadDuration;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.overload.duration.tlv.OverloadDurationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.replies.result.failure.no.path.tlvs.NoPathVectorBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.req.missing.tlv.ReqMissing;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.req.missing.tlv.ReqMissingBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.tlvs.OrderBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.error.type.RsvpBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.error.type.UserBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.error.type.rsvp.RsvpErrorBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.error.type.user.UserErrorBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.RsvpErrorSpec;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.RsvpErrorSpecBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.rsvp.error.spec.error.type.RsvpBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.rsvp.error.spec.error.type.UserBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.rsvp.error.spec.error.type.rsvp.RsvpErrorBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rsvp.error.spec.tlv.rsvp.error.spec.error.type.user.UserErrorBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.symbolic.path.name.tlv.SymbolicPathName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.symbolic.path.name.tlv.SymbolicPathNameBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.Ipv4ExtendedTunnelId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.Ipv6ExtendedTunnelId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.LspId;
@@ -141,8 +140,8 @@ public class PCEPTlvParserTest {
        @Test
        public void testSymbolicNameTlv() throws PCEPDeserializerException {
                final LspSymbolicNameTlvParser parser = new LspSymbolicNameTlvParser();
-               final SymbolicPathNameTlv tlv = new SymbolicPathNameBuilder().setPathName(
-                               new SymbolicPathName("Med test of symbolic name".getBytes())).build();
+               final SymbolicPathName tlv = new SymbolicPathNameBuilder().setPathName(
+                               new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.SymbolicPathName("Med test of symbolic name".getBytes())).build();
                assertEquals(tlv, parser.parseTlv(symbolicNameBytes));
                assertArrayEquals(symbolicNameBytes, parser.serializeTlv(tlv));
        }
@@ -150,7 +149,7 @@ public class PCEPTlvParserTest {
        @Test
        public void testLspErrorCodeTlv() throws PCEPDeserializerException {
                final LspUpdateErrorTlvParser parser = new LspUpdateErrorTlvParser();
-               final LspErrorCodeTlv tlv = new LspErrorCodeBuilder().setErrorCode(627610883L).build();
+               final LspErrorCode tlv = new LspErrorCodeBuilder().setErrorCode(627610883L).build();
                assertEquals(tlv, parser.parseTlv(lspUpdateErrorBytes));
                assertArrayEquals(lspUpdateErrorBytes, parser.serializeTlv(tlv));
        }
@@ -162,7 +161,7 @@ public class PCEPTlvParserTest {
                afi.setIpv4TunnelSenderAddress(Ipv4Util.addressForBytes(new byte[] { (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0x78 }));
                afi.setIpv4ExtendedTunnelId(new Ipv4ExtendedTunnelId(Ipv4Util.addressForBytes(new byte[] { (byte) 0x12, (byte) 0x34, (byte) 0x56,
                                (byte) 0x78 })));
-               final LspIdentifiersTlv tlv = new LspIdentifiersBuilder().setAddressFamily(afi.build()).setLspId(new LspId(65535L)).setTunnelId(
+               final LspIdentifiers tlv = new LspIdentifiersBuilder().setAddressFamily(afi.build()).setLspId(new LspId(65535L)).setTunnelId(
                                new TunnelId(4660)).build();
                assertEquals(tlv, parser.parseTlv(lspIdentifiers4Bytes));
                assertArrayEquals(lspIdentifiers4Bytes, parser.serializeTlv(tlv));
@@ -178,7 +177,7 @@ public class PCEPTlvParserTest {
                afi.setIpv6ExtendedTunnelId(new Ipv6ExtendedTunnelId(Ipv6Util.addressForBytes(new byte[] { (byte) 0x12, (byte) 0x34, (byte) 0x56,
                                (byte) 0x78, (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0x78, (byte) 0x01, (byte) 0x23, (byte) 0x45, (byte) 0x67,
                                (byte) 0x01, (byte) 0x23, (byte) 0x45, (byte) 0x67 })));
-               final LspIdentifiersTlv tlv = new LspIdentifiersBuilder().setAddressFamily(afi.build()).setLspId(new LspId(4660L)).setTunnelId(
+               final LspIdentifiers tlv = new LspIdentifiersBuilder().setAddressFamily(afi.build()).setLspId(new LspId(4660L)).setTunnelId(
                                new TunnelId(65535)).build();
                assertEquals(tlv, parser.parseTlv(lspIdentifiers6Bytes));
                assertArrayEquals(lspIdentifiers6Bytes, parser.serializeTlv(tlv));
@@ -192,7 +191,7 @@ public class PCEPTlvParserTest {
                builder.setFlags(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.ErrorSpec.Flags(false, true));
                builder.setCode((short) 146);
                builder.setValue(5634);
-               final RsvpErrorSpecTlv tlv = new RsvpErrorSpecBuilder().setErrorType(new RsvpBuilder().setRsvpError(builder.build()).build()).build();
+               final RsvpErrorSpec tlv = new RsvpErrorSpecBuilder().setErrorType(new RsvpBuilder().setRsvpError(builder.build()).build()).build();
                assertEquals(tlv, parser.parseTlv(rsvpErrorBytes));
                assertArrayEquals(rsvpErrorBytes, parser.serializeTlv(tlv));
        }
@@ -207,7 +206,7 @@ public class PCEPTlvParserTest {
                builder.setFlags(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.ErrorSpec.Flags(false, true));
                builder.setCode((short) 213);
                builder.setValue(50649);
-               final RsvpErrorSpecTlv tlv = new RsvpErrorSpecBuilder().setErrorType(new RsvpBuilder().setRsvpError(builder.build()).build()).build();
+               final RsvpErrorSpec tlv = new RsvpErrorSpecBuilder().setErrorType(new RsvpBuilder().setRsvpError(builder.build()).build()).build();
                assertEquals(tlv, parser.parseTlv(rsvpError6Bytes));
                assertArrayEquals(rsvpError6Bytes, parser.serializeTlv(tlv));
        }
@@ -220,7 +219,7 @@ public class PCEPTlvParserTest {
                builder.setSubOrg((short) 5);
                builder.setValue(38);
                builder.setDescription("user desc");
-               final RsvpErrorSpecTlv tlv = new RsvpErrorSpecBuilder().setErrorType(new UserBuilder().setUserError(builder.build()).build()).build();
+               final RsvpErrorSpec tlv = new RsvpErrorSpecBuilder().setErrorType(new UserBuilder().setUserError(builder.build()).build()).build();
                assertEquals(tlv, parser.parseTlv(userErrorBytes));
                assertArrayEquals(userErrorBytes, parser.serializeTlv(tlv));
        }
@@ -236,7 +235,7 @@ public class PCEPTlvParserTest {
        @Test
        public void testOrderTlv() throws PCEPDeserializerException {
                final OrderTlvParser parser = new OrderTlvParser();
-               final OrderTlv tlv = new OrderBuilder().setDelete(0xFFFFFFFFL).setSetup(0x00000001L).build();
+               final Order tlv = new OrderBuilder().setDelete(0xFFFFFFFFL).setSetup(0x00000001L).build();
                assertEquals(tlv, parser.parseTlv(orderBytes));
                assertArrayEquals(orderBytes, parser.serializeTlv(tlv));
        }
diff --git a/pcep/impl/src/test/resources/PCEPLspObject1NoTlvsUpperBounds.bin b/pcep/impl/src/test/resources/PCEPLspObject1NoTlvsUpperBounds.bin
deleted file mode 100644 (file)
index e8bcd0b..0000000
Binary files a/pcep/impl/src/test/resources/PCEPLspObject1NoTlvsUpperBounds.bin and /dev/null differ
diff --git a/pcep/impl/src/test/resources/PCEPLspObject1WithTLV.bin b/pcep/impl/src/test/resources/PCEPLspObject1WithTLV.bin
new file mode 100755 (executable)
index 0000000..74115f5
Binary files /dev/null and b/pcep/impl/src/test/resources/PCEPLspObject1WithTLV.bin differ
diff --git a/pcep/impl/src/test/resources/PCEPNoPathObject1WithoutTLV.bin b/pcep/impl/src/test/resources/PCEPNoPathObject1WithoutTLV.bin
new file mode 100755 (executable)
index 0000000..009d73a
Binary files /dev/null and b/pcep/impl/src/test/resources/PCEPNoPathObject1WithoutTLV.bin differ
diff --git a/pcep/impl/src/test/resources/PCEPNoPathObject2WithTLV.bin b/pcep/impl/src/test/resources/PCEPNoPathObject2WithTLV.bin
new file mode 100755 (executable)
index 0000000..3e41319
Binary files /dev/null and b/pcep/impl/src/test/resources/PCEPNoPathObject2WithTLV.bin differ
index 1e29dc8df0e314759fdac7bcb6a08a1e5484890c..d2be7873c2ddfc222d621990e7298cccfa361bc4 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCEPRPObject1.bin and b/pcep/impl/src/test/resources/PCEPRPObject1.bin differ
index 2b2800ae329f7468678b26d807dcad99bfcd4ddd..6086a8d6edd17675a7883df38eaa9c6aa6d69de4 100644 (file)
Binary files a/pcep/impl/src/test/resources/PCEPRPObject2.bin and b/pcep/impl/src/test/resources/PCEPRPObject2.bin differ
index 66b567a1b0475a8c6420fdd5e9c34e7c24b8e75f..d8d26c3757cf49b76752f9673af9db412e3c2c1a 100644 (file)
@@ -30,12 +30,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.mes
 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.PcrptMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.PlspId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.object.tlvs.SymbolicPathName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.Tlvs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.tlvs.Stateful;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.PcerrMessageBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrpt.message.pcrpt.message.Reports;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrpt.message.pcrpt.message.reports.Lsp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.symbolic.path.name.tlv.SymbolicPathName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.pcep.client.attributes.PccBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.pcep.client.attributes.pcc.Lsps;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.pcep.client.attributes.pcc.LspsKey;
@@ -56,11 +56,12 @@ final class ServerSessionManager implements SessionListenerFactory<PCEPSessionLi
        }
 
        private final class SessionListener implements PCEPSessionListener {
-               private org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node inventoryNode(final DataModificationTransaction trans, final InetAddress address) {
+               private org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node inventoryNode(
+                               final DataModificationTransaction trans, final InetAddress address) {
                        final String pccId = createNodeId(address);
 
                        // FIXME: after 0.6 yangtools, this cast should not be needed
-                       final Nodes nodes = (Nodes)trans.readOperationalData(inventory);
+                       final Nodes nodes = (Nodes) trans.readOperationalData(ServerSessionManager.this.inventory);
 
                        for (final org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node n : nodes.getNode()) {
                                LOG.debug("Matching inventory node {} to peer {}", n, address);
@@ -78,18 +79,17 @@ final class ServerSessionManager implements SessionListenerFactory<PCEPSessionLi
                         */
                        LOG.debug("Failed to find inventory node for peer {}, creating a new one at {}", address, pccId);
 
-                       final org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId id =
-                                       new org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId(pccId);
-                       final org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey nk =
-                                       new org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey(id);
-                       final InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node> nii =
-                                       InstanceIdentifier.builder(inventory).node(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node.class, nk).toInstance();
-                       final org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node ret =
-                                       new org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder().setId(id).setKey(nk).build();
+                       final org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId id = new org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId(pccId);
+                       final org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey nk = new org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey(id);
+                       final InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node> nii = InstanceIdentifier.builder(
+                                       ServerSessionManager.this.inventory).node(
+                                       org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node.class, nk).toInstance();
+                       final org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node ret = new org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder().setId(
+                                       id).setKey(nk).build();
 
                        trans.putRuntimeData(nii, ret);
-                       ownsInventory = true;
-                       inventoryNodeId = nii;
+                       ServerSessionManager.this.ownsInventory = true;
+                       ServerSessionManager.this.inventoryNodeId = nii;
                        return ret;
                }
 
@@ -97,7 +97,7 @@ final class ServerSessionManager implements SessionListenerFactory<PCEPSessionLi
                                final DataModificationTransaction trans,
                                final org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node invNode) {
                        // FIXME: after 0.6 yangtools, this cast should not be needed
-                       final Topology topo = (Topology)trans.readOperationalData(topology);
+                       final Topology topo = (Topology) trans.readOperationalData(ServerSessionManager.this.topology);
 
                        for (final org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node n : topo.getNode()) {
                                LOG.debug("Matching topology node {} to inventory node {}", n, invNode);
@@ -110,21 +110,19 @@ final class ServerSessionManager implements SessionListenerFactory<PCEPSessionLi
                         * We failed to find a matching node. Let's create a dynamic one
                         * and note that we are the owner (so we clean it up afterwards).
                         */
-                       final org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId id =
-                                       new org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId(invNode.getId().getValue());
-                       final org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey nk =
-                                       new org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey(id);
-                       final InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node> nti =
-                                       InstanceIdentifier.builder(topology).node(
-                                                       org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node.class, nk).toInstance();
-
-                       final org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node ret =
-                                       new org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder().
-                                       setKey(nk).setNodeId(id).build();
+                       final org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId id = new org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId(invNode.getId().getValue());
+                       final org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey nk = new org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey(id);
+                       final InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node> nti = InstanceIdentifier.builder(
+                                       ServerSessionManager.this.topology).node(
+                                       org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node.class,
+                                       nk).toInstance();
+
+                       final org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node ret = new org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder().setKey(
+                                       nk).setNodeId(id).build();
 
                        trans.putRuntimeData(nti, ret);
-                       ownsTopology = true;
-                       topologyNodeId = nti;
+                       ServerSessionManager.this.ownsTopology = true;
+                       ServerSessionManager.this.topologyNodeId = nti;
                        return ret;
                }
 
@@ -137,39 +135,41 @@ final class ServerSessionManager implements SessionListenerFactory<PCEPSessionLi
                         * the topology model, with empty LSP list.
                         */
                        final InetAddress peerAddress = session.getRemoteAddress();
-                       final DataModificationTransaction trans = dataProvider.beginTransaction();
+                       final DataModificationTransaction trans = ServerSessionManager.this.dataProvider.beginTransaction();
 
                        final org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node invNode = inventoryNode(trans, peerAddress);
                        LOG.debug("Peer {} resolved to inventory node {}", peerAddress, invNode);
 
-                       final org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node topoNode = topologyNode(trans, invNode);
+                       final org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node topoNode = topologyNode(
+                                       trans, invNode);
                        LOG.debug("Peer {} resolved to topology node {}", peerAddress, topoNode);
 
                        // Our augmentation in the topology node
                        final PccBuilder pb = new PccBuilder();
 
-                       final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.Node1 topoAugment =
-                                       new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.Node1Builder().setPcc(pb.build()).build();
-                       topologyAugmentId = InstanceIdentifier.builder(topologyNodeId).node(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.Node1.class).toInstance();
-                       trans.putRuntimeData(topologyAugmentId, topoAugment);
+                       final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.Node1 topoAugment = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.Node1Builder().setPcc(
+                                       pb.build()).build();
+                       ServerSessionManager.this.topologyAugmentId = InstanceIdentifier.builder(ServerSessionManager.this.topologyNodeId).node(
+                                       org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.Node1.class).toInstance();
+                       trans.putRuntimeData(ServerSessionManager.this.topologyAugmentId, topoAugment);
 
                        // Our augmentation in the inventory node
-                       pccBuilder = new PathComputationClientBuilder();
+                       ServerSessionManager.this.pccBuilder = new PathComputationClientBuilder();
 
                        final Tlvs tlvs = session.getRemoteTlvs();
                        final Stateful stateful = tlvs.getStateful();
                        if (stateful != null) {
                                // FIXME: rework once groupings can be used in builders
-                               pccBuilder.setStatefulTlv(new StatefulTlvBuilder().setFlags(tlvs.getStateful().getFlags()).build());
-                               pccBuilder.setStateSync(PccSyncState.InitialResync);
+                               ServerSessionManager.this.pccBuilder.setStatefulTlv(new StatefulTlvBuilder().setFlags(tlvs.getStateful().getFlags()).build());
+                               ServerSessionManager.this.pccBuilder.setStateSync(PccSyncState.InitialResync);
                        }
 
-                       pccBuilder.setTopologyNode(topoNode.getNodeId());
+                       ServerSessionManager.this.pccBuilder.setTopologyNode(topoNode.getNodeId());
 
-                       inventoryAugmentBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.pcep.rev131024.Node1Builder()
-                       .setPathComputationClient(pccBuilder.build());
-                       inventoryAugmentId = InstanceIdentifier.builder(inventoryNodeId).node(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.pcep.rev131024.Node1.class).toInstance();
-                       trans.putRuntimeData(inventoryAugmentId, inventoryAugmentBuilder.build());
+                       ServerSessionManager.this.inventoryAugmentBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.pcep.rev131024.Node1Builder().setPathComputationClient(ServerSessionManager.this.pccBuilder.build());
+                       ServerSessionManager.this.inventoryAugmentId = InstanceIdentifier.builder(ServerSessionManager.this.inventoryNodeId).node(
+                                       org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.pcep.rev131024.Node1.class).toInstance();
+                       trans.putRuntimeData(ServerSessionManager.this.inventoryAugmentId, ServerSessionManager.this.inventoryAugmentBuilder.build());
 
                        // All set, commit the modifications
                        final Future<RpcResult<TransactionStatus>> s = trans.commit();
@@ -185,23 +185,24 @@ final class ServerSessionManager implements SessionListenerFactory<PCEPSessionLi
                                session.close(TerminationReason.Unknown);
                        }
 
-                       LOG.info("Session with {} attached to inventory node {} and topology node {}", session.getRemoteAddress(), invNode.getId(), topoNode.getNodeId());
+                       LOG.info("Session with {} attached to inventory node {} and topology node {}", session.getRemoteAddress(), invNode.getId(),
+                                       topoNode.getNodeId());
                }
 
                private void tearDown(final PCEPSession session) {
-                       final DataModificationTransaction trans = dataProvider.beginTransaction();
+                       final DataModificationTransaction trans = ServerSessionManager.this.dataProvider.beginTransaction();
 
                        /*
                         * The session went down. Undo all the Inventory and Topology
                         * changes we have done.
                         */
-                       trans.removeRuntimeData(inventoryAugmentId);
-                       if (ownsInventory) {
-                               trans.removeRuntimeData(inventoryNodeId);
+                       trans.removeRuntimeData(ServerSessionManager.this.inventoryAugmentId);
+                       if (ServerSessionManager.this.ownsInventory) {
+                               trans.removeRuntimeData(ServerSessionManager.this.inventoryNodeId);
                        }
-                       trans.removeRuntimeData(topologyAugmentId);
-                       if (ownsTopology) {
-                               trans.removeRuntimeData(topologyNodeId);
+                       trans.removeRuntimeData(ServerSessionManager.this.topologyAugmentId);
+                       if (ServerSessionManager.this.ownsTopology) {
+                               trans.removeRuntimeData(ServerSessionManager.this.topologyNodeId);
                        }
 
                        /*
@@ -229,8 +230,7 @@ final class ServerSessionManager implements SessionListenerFactory<PCEPSessionLi
                }
 
                private InstanceIdentifier<Lsps> lspIdentifier(final SymbolicPathName name) {
-                       return InstanceIdentifier.builder(topologyAugmentId).
-                                       node(Lsps.class, new LspsKey(name.getPathName())).toInstance();
+                       return InstanceIdentifier.builder(ServerSessionManager.this.topologyAugmentId).node(Lsps.class, new LspsKey(name.getPathName())).toInstance();
                }
 
                @Override
@@ -240,36 +240,36 @@ final class ServerSessionManager implements SessionListenerFactory<PCEPSessionLi
                                session.sendMessage(unhandledMessageError);
                        }
 
-                       final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrpt.message.PcrptMessage rpt =
-                                       ((PcrptMessage)message).getPcrptMessage();
+                       final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrpt.message.PcrptMessage rpt = ((PcrptMessage) message).getPcrptMessage();
 
-                       final DataModificationTransaction trans = dataProvider.beginTransaction();
+                       final DataModificationTransaction trans = ServerSessionManager.this.dataProvider.beginTransaction();
 
                        for (final Reports r : rpt.getReports()) {
                                final Lsp lsp = r.getLsp();
 
-                               if (lsp.isSync() && !synced) {
+                               if (lsp.isSync() && !ServerSessionManager.this.synced) {
                                        // Update synchronization flag
-                                       synced = true;
-                                       inventoryAugmentBuilder.setPathComputationClient(pccBuilder.setStateSync(PccSyncState.Synchronized).build());
-                                       trans.putRuntimeData(inventoryAugmentId, inventoryAugmentBuilder.build());
+                                       ServerSessionManager.this.synced = true;
+                                       ServerSessionManager.this.inventoryAugmentBuilder.setPathComputationClient(ServerSessionManager.this.pccBuilder.setStateSync(
+                                                       PccSyncState.Synchronized).build());
+                                       trans.putRuntimeData(ServerSessionManager.this.inventoryAugmentId,
+                                                       ServerSessionManager.this.inventoryAugmentBuilder.build());
                                        LOG.debug("Session {} achieved synchronized state", session);
                                }
 
                                final PlspId id = lsp.getPlspId();
                                if (lsp.isRemove()) {
-                                       final SymbolicPathName name = lsps.remove(id);
+                                       final SymbolicPathName name = ServerSessionManager.this.lsps.remove(id);
                                        if (name != null) {
                                                trans.removeRuntimeData(lspIdentifier(name));
                                        }
 
                                        LOG.debug("LSP {} removed", lsp);
                                } else {
-                                       if (!lsps.containsKey(id)) {
+                                       if (!ServerSessionManager.this.lsps.containsKey(id)) {
                                                LOG.debug("PLSPID {} not known yet, looking for a symbolic name", id);
 
-                                               final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.object.Tlvs tlvs =
-                                                               r.getLsp().getTlvs();
+                                               final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.object.Tlvs tlvs = r.getLsp().getTlvs();
                                                final SymbolicPathName name = tlvs.getSymbolicPathName();
                                                if (name == null) {
                                                        LOG.error("PLSPID {} seen for the first time, not reporting the LSP");
@@ -278,7 +278,7 @@ final class ServerSessionManager implements SessionListenerFactory<PCEPSessionLi
                                                }
                                        }
 
-                                       final SymbolicPathName name = lsps.get(id);
+                                       final SymbolicPathName name = ServerSessionManager.this.lsps.get(id);
                                        trans.putRuntimeData(lspIdentifier(name), lsp);
 
                                        LOG.debug("LSP {} updated");
@@ -318,8 +318,8 @@ final class ServerSessionManager implements SessionListenerFactory<PCEPSessionLi
        private InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node> topologyNodeId;
        private InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.Node1> topologyAugmentId;
 
-       public ServerSessionManager(final DataProviderService dataProvider,
-                       final InstanceIdentifier<Nodes> inventory, final InstanceIdentifier<Topology> topology) {
+       public ServerSessionManager(final DataProviderService dataProvider, final InstanceIdentifier<Nodes> inventory,
+                       final InstanceIdentifier<Topology> topology) {
                this.dataProvider = Preconditions.checkNotNull(dataProvider);
                this.inventory = Preconditions.checkNotNull(inventory);
                this.topology = Preconditions.checkNotNull(topology);