Removed duplicated code from stateful07 Open and LSPA object parsers. 62/5162/7
authorRobert Varga <rovarga@cisco.com>
Fri, 7 Feb 2014 07:06:52 +0000 (08:06 +0100)
committerRobert Varga <rovarga@cisco.com>
Fri, 7 Feb 2014 15:10:53 +0000 (16:10 +0100)
Change-Id: I4bf7428c67a95ba75930e9a2293e8d6ad032f3fc
Signed-off-by: Robert Varga <rovarga@cisco.com>
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
14 files changed:
integration-tests/src/test/java/org/opendaylight/protocol/integration/pcep/AbstractPcepOsgiTest.java
pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/Stateful07SessionProposalFactory.java
pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07LspaObjectParser.java
pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07OpenObjectParser.java
pcep/ietf-stateful07/src/main/yang/odl-pcep-ietf-stateful07.yang
pcep/ietf-stateful07/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPObjectParserTest.java
pcep/ietf-stateful07/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPValidatorTest.java
pcep/ietf-stateful07/src/test/resources/PCEPLspaObject3RandVals.bin
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPLspaObjectParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/object/PCEPOpenObjectParser.java
pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPObjectParserTest.java
pcep/topology-provider-config/src/main/java/org/opendaylight/controller/config/yang/pcep/topology/provider/PCEPTopologyProviderModule.java
pcep/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/Stateful07TopologySessionListener.java
pcep/topology-provider/src/test/java/org/opendaylight/bgpcep/pcep/topology/provider/ParserToSalTest.java

index e04c36cf01c1ce1dfb137d28160a1b3ddb2c8165..6a0a60b570ba180a3d79cee2dc3daa1f9aa5f16d 100644 (file)
@@ -70,6 +70,7 @@ public class AbstractPcepOsgiTest {
                mavenBundle("org.opendaylight.bgpcep", "pcep-topology-api").versionAsInProject(), //
                mavenBundle("org.opendaylight.bgpcep", "pcep-tunnel-api").versionAsInProject(), //
                mavenBundle("org.opendaylight.bgpcep", "pcep-api").versionAsInProject(), //
+               mavenBundle("org.opendaylight.bgpcep", "pcep-impl").versionAsInProject(), //
                mavenBundle("org.opendaylight.bgpcep", "pcep-spi").versionAsInProject(), //
                mavenBundle("org.opendaylight.bgpcep", "pcep-ietf-stateful02").versionAsInProject(), //
                mavenBundle("org.opendaylight.bgpcep", "pcep-ietf-stateful07").versionAsInProject(), //
index 6ee62967b402cb417718fd6c59d3fd94549ecddb..f6427eeef095afb5d3b725dc9ca08fc222f72c0c 100644 (file)
@@ -12,8 +12,8 @@ import java.net.InetSocketAddress;
 import org.opendaylight.protocol.pcep.spi.AbstractPCEPSessionProposalFactory;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Stateful1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Stateful1Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs2;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs2Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs1;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.stateful.capability.tlv.StatefulBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder;
 
@@ -33,8 +33,8 @@ public class Stateful07SessionProposalFactory extends AbstractPCEPSessionProposa
        protected void addTlvs(final InetSocketAddress address, final TlvsBuilder builder) {
                if (Stateful07SessionProposalFactory.this.stateful) {
                        builder.addAugmentation(
-                                       Tlvs2.class,
-                                       new Tlvs2Builder().setStateful(
+                                       Tlvs1.class,
+                                       new Tlvs1Builder().setStateful(
                                                        new StatefulBuilder().setLspUpdateCapability(this.active).addAugmentation(Stateful1.class,
                                                                        new Stateful1Builder().setInitiation(this.instant).build()).build()).build()).build();
                }
index a7f6286128ba78e69f6f26482d32d74b6644973e..a9eb1290b83f56c12891e77d31a97475ff1e4202 100644 (file)
  */
 package org.opendaylight.protocol.pcep.ietf.stateful07;
 
-import java.util.BitSet;
-
-import org.opendaylight.protocol.pcep.spi.AbstractObjectWithTlvsParser;
-import org.opendaylight.protocol.pcep.spi.ObjectUtil;
-import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
+import org.opendaylight.protocol.pcep.impl.object.PCEPLspaObjectParser;
 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.ietf.stateful.rev131222.Tlvs2;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs2Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.symbolic.path.name.tlv.SymbolicPathName;
+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.lspa.object.Lspa;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.LspaBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.AttributeFilter;
-
-import com.google.common.primitives.UnsignedBytes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.lspa.Tlvs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.lspa.TlvsBuilder;
 
 /**
  * Parser for {@link Lspa}
  */
-public class Stateful07LspaObjectParser extends AbstractObjectWithTlvsParser<LspaBuilder> {
-
-       public static final int CLASS = 9;
-
-       public static final int TYPE = 1;
-
-       /*
-        * lengths of fields in bytes
-        */
-       private static final int EXC_ANY_F_LENGTH = 4;
-       private static final int INC_ANY_F_LENGTH = 4;
-       private static final int INC_ALL_F_LENGTH = 4;
-       private static final int SET_PRIO_F_LENGTH = 1;
-       private static final int HOLD_PRIO_F_LENGTH = 1;
-       private static final int FLAGS_F_LENGTH = 1;
-
-       /*
-        * offsets of flags inside flags field in bits
-        */
-       private static final int L_FLAG_OFFSET = 7;
-
-       /*
-        * offsets of fields in bytes
-        */
-       private static final int EXC_ANY_F_OFFSET = 0;
-       private static final int INC_ANY_F_OFFSET = EXC_ANY_F_OFFSET + EXC_ANY_F_LENGTH;
-       private static final int INC_ALL_F_OFFSET = INC_ANY_F_OFFSET + INC_ANY_F_LENGTH;
-       private static final int SET_PRIO_F_OFFSET = INC_ALL_F_OFFSET + INC_ALL_F_LENGTH;
-       private static final int HOLD_PRIO_F_OFFSET = SET_PRIO_F_OFFSET + SET_PRIO_F_LENGTH;
-       private static final int FLAGS_F_OFFSET = HOLD_PRIO_F_OFFSET + HOLD_PRIO_F_LENGTH;
-       private static final int TLVS_F_OFFSET = FLAGS_F_OFFSET + FLAGS_F_LENGTH + 1;
+public class Stateful07LspaObjectParser extends PCEPLspaObjectParser {
 
        public Stateful07LspaObjectParser(final TlvHandlerRegistry tlvReg) {
                super(tlvReg);
        }
 
        @Override
-       public Lspa parseObject(final ObjectHeader header, final byte[] bytes) throws PCEPDeserializerException {
-               if (bytes == null) {
-                       throw new IllegalArgumentException("Bytes array is mandatory.");
+       public void addTlv(final TlvsBuilder tbuilder, final Tlv tlv) {
+               super.addTlv(tbuilder, tlv);
+               final Tlvs2Builder nameBuilder = new Tlvs2Builder();
+               if (tbuilder.getAugmentation(Tlvs2.class) != null) {
+                       final Tlvs2 t = tbuilder.getAugmentation(Tlvs2.class);
+                       if (t.getSymbolicPathName() != null) {
+                               nameBuilder.setSymbolicPathName(t.getSymbolicPathName());
+                       }
                }
-               final BitSet flags = ByteArray.bytesToBitSet(ByteArray.subByte(bytes, FLAGS_F_OFFSET, FLAGS_F_LENGTH));
-
-               final LspaBuilder builder = new LspaBuilder();
-               parseTlvs(builder, ByteArray.cutBytes(bytes, TLVS_F_OFFSET));
-
-               builder.setIgnore(header.isIgnore());
-               builder.setProcessingRule(header.isProcessingRule());
-
-               builder.setHoldPriority((short) UnsignedBytes.toInt(bytes[HOLD_PRIO_F_OFFSET]));
-               builder.setSetupPriority((short) UnsignedBytes.toInt(bytes[SET_PRIO_F_OFFSET]));
-               builder.setLocalProtectionDesired(flags.get(L_FLAG_OFFSET));
-               builder.setExcludeAny(new AttributeFilter(ByteArray.bytesToLong(ByteArray.subByte(bytes, EXC_ANY_F_OFFSET, EXC_ANY_F_LENGTH))));
-               builder.setIncludeAll(new AttributeFilter(ByteArray.bytesToLong(ByteArray.subByte(bytes, INC_ALL_F_OFFSET, INC_ALL_F_LENGTH))));
-               builder.setIncludeAny(new AttributeFilter(ByteArray.bytesToLong(ByteArray.subByte(bytes, INC_ANY_F_OFFSET, INC_ANY_F_LENGTH))));
-               return builder.build();
-       }
-
-       @Override
-       public byte[] serializeObject(final Object object) {
-               if (!(object instanceof Lspa)) {
-                       throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass() + ". Needed LspaObject.");
+               if (tlv instanceof SymbolicPathName) {
+                       nameBuilder.setSymbolicPathName((SymbolicPathName) tlv);
                }
-               final Lspa lspaObj = (Lspa) object;
-
-               final byte[] retBytes = new byte[TLVS_F_OFFSET];
-
-               System.arraycopy(ByteArray.longToBytes(lspaObj.getExcludeAny().getValue(), EXC_ANY_F_LENGTH), 0, retBytes, EXC_ANY_F_OFFSET,
-                               EXC_ANY_F_LENGTH);
-               System.arraycopy(ByteArray.longToBytes(lspaObj.getIncludeAny().getValue(), INC_ANY_F_LENGTH), 0, retBytes, INC_ANY_F_OFFSET,
-                               INC_ANY_F_LENGTH);
-               System.arraycopy(ByteArray.longToBytes(lspaObj.getIncludeAll().getValue(), INC_ALL_F_LENGTH), 0, retBytes, INC_ALL_F_OFFSET,
-                               INC_ALL_F_LENGTH);
-               retBytes[SET_PRIO_F_OFFSET] = UnsignedBytes.checkedCast(lspaObj.getSetupPriority());
-               retBytes[HOLD_PRIO_F_OFFSET] = UnsignedBytes.checkedCast(lspaObj.getHoldPriority());
-
-               final BitSet flags = new BitSet(FLAGS_F_LENGTH * Byte.SIZE);
-               flags.set(L_FLAG_OFFSET, lspaObj.isLocalProtectionDesired());
-               ByteArray.copyWhole(ByteArray.bitSetToBytes(flags, FLAGS_F_LENGTH), retBytes, FLAGS_F_OFFSET);
-               return ObjectUtil.formatSubobject(TYPE, CLASS, object.isProcessingRule(), object.isIgnore(), retBytes);
+               tbuilder.addAugmentation(Tlvs2.class, nameBuilder.build());
        }
 
        @Override
-       public int getObjectType() {
-               return TYPE;
-       }
-
-       @Override
-       public int getObjectClass() {
-               return CLASS;
+       public byte[] serializeTlvs(final Tlvs tlvs) {
+               if (tlvs == null) {
+                       return new byte[0];
+               }
+               super.serializeTlvs(tlvs);
+               int finalLength = 0;
+               byte[] nameBytes = null;
+               if (tlvs.getAugmentation(Tlvs2.class) != null) {
+                       final Tlvs2 nameTlvs = tlvs.getAugmentation(Tlvs2.class);
+                       if (nameTlvs.getSymbolicPathName() != null) {
+                               nameBytes = serializeTlv(nameTlvs.getSymbolicPathName());
+                               finalLength += nameBytes.length;
+                       }
+               }
+               int offset = 0;
+               final byte[] result = new byte[finalLength];
+               if (nameBytes != null) {
+                       ByteArray.copyWhole(nameBytes, result, offset);
+                       offset += nameBytes.length;
+               }
+               return result;
        }
 }
index 0578b2f0072a6c8426ce9689ab77ba90691379a4..95b1e6c7abf2ee873c75f57a7c23db725b0304bd 100644 (file)
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.protocol.pcep.ietf.stateful07;
 
-import org.opendaylight.protocol.pcep.spi.AbstractObjectWithTlvsParser;
-import org.opendaylight.protocol.pcep.spi.ObjectUtil;
-import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
-import org.opendaylight.protocol.pcep.spi.PCEPErrors;
+import org.opendaylight.protocol.pcep.impl.object.PCEPOpenObjectParser;
 import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
-import org.opendaylight.protocol.pcep.spi.UnknownObject;
 import org.opendaylight.protocol.util.ByteArray;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs2;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs2Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs1;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.stateful.capability.tlv.Stateful;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ObjectHeader;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ProtocolVersion;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.of.list.tlv.OfList;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.Open;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.OpenBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.Tlvs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.primitives.UnsignedBytes;
 
 /**
  * Parser for {@link Open}
  */
-public class Stateful07OpenObjectParser extends AbstractObjectWithTlvsParser<TlvsBuilder> {
-       private static final Logger LOG = LoggerFactory.getLogger(Stateful07OpenObjectParser.class);
-
-       public static final int CLASS = 1;
-
-       public static final int TYPE = 1;
-
-       /*
-        * lengths of fields in bytes
-        */
-       private static final int VER_FLAGS_MF_LENGTH = 1;
-       private static final int KEEPALIVE_F_LENGTH = 1;
-       private static final int DEAD_TIMER_LENGTH = 1;
-       private static final int SID_F_LENGTH = 1;
-
-       /*
-        * lengths of subfields inside multi-field in bits
-        */
-       private static final int VERSION_SF_LENGTH = 3;
-
-       /*
-        * offsets of field in bytes
-        */
-       private static final int VER_FLAGS_MF_OFFSET = 0;
-       private static final int KEEPALIVE_F_OFFSET = VER_FLAGS_MF_OFFSET + VER_FLAGS_MF_LENGTH;
-       private static final int DEAD_TIMER_OFFSET = KEEPALIVE_F_OFFSET + KEEPALIVE_F_LENGTH;
-       private static final int SID_F_OFFSET = DEAD_TIMER_OFFSET + DEAD_TIMER_LENGTH;
-       private static final int TLVS_OFFSET = SID_F_OFFSET + SID_F_LENGTH;
-
-       /*
-        * offsets of subfields inside multi-field in bits
-        */
-       private static final int VERSION_SF_OFFSET = 0;
-
-       private static final int PCEP_VERSION = 1;
+public class Stateful07OpenObjectParser extends PCEPOpenObjectParser {
 
        public Stateful07OpenObjectParser(final TlvHandlerRegistry tlvReg) {
                super(tlvReg);
        }
 
-       @Override
-       public Object parseObject(final ObjectHeader header, final byte[] bytes) throws PCEPDeserializerException {
-               if (bytes == null || bytes.length == 0) {
-                       throw new IllegalArgumentException("Array of bytes is mandatory. Can't be null or empty.");
-               }
-               final int versionValue = ByteArray.copyBitsRange(bytes[VER_FLAGS_MF_OFFSET], VERSION_SF_OFFSET, VERSION_SF_LENGTH);
-
-               final OpenBuilder builder = new OpenBuilder();
-               builder.setVersion(new ProtocolVersion((short) versionValue));
-               builder.setProcessingRule(header.isProcessingRule());
-               builder.setIgnore(header.isIgnore());
-               builder.setDeadTimer((short) UnsignedBytes.toInt(bytes[DEAD_TIMER_OFFSET]));
-               builder.setKeepalive((short) UnsignedBytes.toInt(bytes[KEEPALIVE_F_OFFSET]));
-               builder.setSessionId((short) UnsignedBytes.toInt(bytes[SID_F_OFFSET]));
-
-               final TlvsBuilder tbuilder = new TlvsBuilder();
-               parseTlvs(tbuilder, ByteArray.cutBytes(bytes, TLVS_OFFSET));
-               builder.setTlvs(tbuilder.build());
-
-               final Open obj = builder.build();
-               if (versionValue != PCEP_VERSION) {
-                       // TODO: Should we move this check into the negotiator
-                       LOG.debug("Unsupported PCEP version {}", versionValue);
-                       return new UnknownObject(PCEPErrors.PCEP_VERSION_NOT_SUPPORTED, obj);
-               }
-
-               return obj;
-       }
-
        @Override
        public void addTlv(final TlvsBuilder tbuilder, final Tlv tlv) {
-               final Tlvs2Builder statefulBuilder = new Tlvs2Builder();
-               if (tbuilder.getAugmentation(Tlvs2.class) != null) {
-                       final Tlvs2 t = tbuilder.getAugmentation(Tlvs2.class);
+               super.addTlv(tbuilder, tlv);
+               final Tlvs1Builder statefulBuilder = new Tlvs1Builder();
+               if (tbuilder.getAugmentation(Tlvs1.class) != null) {
+                       final Tlvs1 t = tbuilder.getAugmentation(Tlvs1.class);
                        if (t.getStateful() != null) {
                                statefulBuilder.setStateful(t.getStateful());
                        }
                }
-               if (tlv instanceof OfList) {
-                       tbuilder.setOfList((OfList) tlv);
-               } else if (tlv instanceof Stateful) {
+               if (tlv instanceof Stateful) {
                        statefulBuilder.setStateful((Stateful) tlv);
                }
-               tbuilder.addAugmentation(Tlvs2.class, statefulBuilder.build());
+               tbuilder.addAugmentation(Tlvs1.class, statefulBuilder.build());
        }
 
        @Override
-       public byte[] serializeObject(final Object object) {
-               if (!(object instanceof Open)) {
-                       throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass() + ". Needed OpenObject.");
-               }
-               final Open open = (Open) object;
-
-               final byte versionFlagMF = (byte) (PCEP_VERSION << (Byte.SIZE - VERSION_SF_LENGTH));
-
-               final byte[] tlvs = serializeTlvs(open.getTlvs());
-
-               final byte[] bytes = new byte[TLVS_OFFSET + tlvs.length + getPadding(TLVS_OFFSET + tlvs.length, PADDED_TO)];
-
-               bytes[VER_FLAGS_MF_OFFSET] = versionFlagMF;
-               bytes[KEEPALIVE_F_OFFSET] = UnsignedBytes.checkedCast(open.getKeepalive());
-               bytes[DEAD_TIMER_OFFSET] = UnsignedBytes.checkedCast(open.getDeadTimer());
-               bytes[SID_F_OFFSET] = UnsignedBytes.checkedCast(open.getSessionId());
-               if (tlvs.length != 0) {
-                       ByteArray.copyWhole(tlvs, bytes, TLVS_OFFSET);
-               }
-               return ObjectUtil.formatSubobject(TYPE, CLASS, object.isProcessingRule(), object.isIgnore(), bytes);
-       }
-
        public byte[] serializeTlvs(final Tlvs tlvs) {
                if (tlvs == null) {
                        return new byte[0];
                }
+               super.serializeTlvs(tlvs);
                int finalLength = 0;
                byte[] ofListBytes = null;
                byte[] statefulBytes = null;
@@ -155,8 +56,8 @@ public class Stateful07OpenObjectParser extends AbstractObjectWithTlvsParser<Tlv
                        ofListBytes = serializeTlv(tlvs.getOfList());
                        finalLength += ofListBytes.length;
                }
-               if (tlvs.getAugmentation(Tlvs2.class) != null) {
-                       final Tlvs2 statefulTlvs = tlvs.getAugmentation(Tlvs2.class);
+               if (tlvs.getAugmentation(Tlvs1.class) != null) {
+                       final Tlvs1 statefulTlvs = tlvs.getAugmentation(Tlvs1.class);
                        if (statefulTlvs.getStateful() != null) {
                                statefulBytes = serializeTlv(statefulTlvs.getStateful());
                                finalLength += statefulBytes.length;
@@ -175,14 +76,4 @@ public class Stateful07OpenObjectParser extends AbstractObjectWithTlvsParser<Tlv
                }
                return result;
        }
-
-       @Override
-       public int getObjectType() {
-               return TYPE;
-       }
-
-       @Override
-       public int getObjectClass() {
-               return CLASS;
-       }
 }
index 2b155a8348c1af684dcd14a350667348243c7210..c824c55a2b039fb9d86cdf579385673de4dfade9 100644 (file)
@@ -309,6 +309,14 @@ module odl-pcep-ietf-stateful07 {
                        }
                }
        }
+       
+       augment "/msg:pcreq/msg:pcreq-message/msg:requests/msg:segment-computation/msg:p2p/msg:lspa/msg:tlvs" {
+               uses symbolic-path-name-tlv;
+       }
+       
+       augment "/msg:pcrep/msg:pcrep-message/msg:replies/msg:result/msg:failure-case/msg:lspa/msg:tlvs" {
+               uses symbolic-path-name-tlv;
+       }
 
        augment "/nt:network-topology/nt:topology/nt:node/topo:path-computation-client/topo:reported-lsp" {
                uses lsp-object;
index 53441e1402e5bf21607c4913a1fb78f301a432e8..45c79f821f14fe51c9a6e58b8f5d5c6636b12adc 100644 (file)
@@ -30,6 +30,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.cra
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.OperationalStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PlspId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SrpIdNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs1;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs2;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs2Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.error.code.tlv.LspErrorCode;
@@ -41,6 +43,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.iet
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.symbolic.path.name.tlv.SymbolicPathName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.symbolic.path.name.tlv.SymbolicPathNameBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ProtocolVersion;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.Lspa;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.LspaBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.OpenBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.AttributeFilter;
@@ -69,11 +72,11 @@ public class PCEPObjectParserTest {
 
                final Stateful tlv1 = new StatefulBuilder().setLspUpdateCapability(Boolean.TRUE).build();
 
-               final Tlvs2Builder statBuilder = new Tlvs2Builder();
+               final Tlvs1Builder statBuilder = new Tlvs1Builder();
                statBuilder.setStateful(tlv1);
 
                builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder().addAugmentation(
-                               Tlvs2.class, statBuilder.build()).build());
+                               Tlvs1.class, statBuilder.build()).build());
 
                assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false), ByteArray.cutBytes(result, 4)));
                assertArrayEquals(result, parser.serializeObject(builder.build()));
@@ -110,16 +113,28 @@ public class PCEPObjectParserTest {
                final LspaBuilder builder = new LspaBuilder();
                final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPLspaObject3RandVals.bin");
 
-               builder.setIgnore(true);
-               builder.setProcessingRule(true);
+               final SymbolicPathName tlv = new SymbolicPathNameBuilder().setPathName(
+                               new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SymbolicPathName(new byte[] {
+                                               (byte) 0x4d, (byte) 0x65, (byte) 0x64, (byte) 0x20, (byte) 0x74, (byte) 0x65, (byte) 0x73, (byte) 0x74,
+                                               (byte) 0x20, (byte) 0x6f, (byte) 0x66, (byte) 0x20, (byte) 0x73, (byte) 0x79, (byte) 0x6d, (byte) 0x62,
+                                               (byte) 0x6f, (byte) 0x6c, (byte) 0x69, (byte) 0x63, (byte) 0x20, (byte) 0x6e, (byte) 0x61, (byte) 0x6d, (byte) 0x65 })).build();
+
+               builder.setIgnore(false);
+               builder.setProcessingRule(false);
                builder.setExcludeAny(new AttributeFilter(0x20A1FEE3L));
                builder.setIncludeAny(new AttributeFilter(0x1A025CC7L));
                builder.setIncludeAll(new AttributeFilter(0x2BB66532L));
                builder.setHoldPriority((short) 0x02);
                builder.setSetupPriority((short) 0x03);
                builder.setLocalProtectionDesired(true);
-
-               assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), ByteArray.cutBytes(result, 4)));
+               builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.lspa.TlvsBuilder().addAugmentation(
+                               Tlvs2.class, new Tlvs2Builder().setSymbolicPathName(tlv).build()).build());
+
+               // Tlvs container does not contain toString
+               final Object o = parser.parseObject(new ObjectHeaderImpl(true, true), ByteArray.cutBytes(result, 4));
+               assertEquals(tlv, ((Lspa) o).getTlvs().getAugmentation(Tlvs2.class).getSymbolicPathName());
+               // assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), ByteArray.cutBytes(result,
+               // 4)));
                assertArrayEquals(result, parser.serializeObject(builder.build()));
        }
 
index fed334d99d3417f7f4b66e00bc5b452e4c20b6cd..61ea60a9221244a6699e9c9d9fbb681e880c3e60 100644 (file)
@@ -18,8 +18,8 @@ import java.util.List;
 
 import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.protocol.pcep.ietf.initiated00.CrabbeInitiatedActivator;
 import org.opendaylight.protocol.pcep.ietf.initiated00.CInitiated00PCInitiateMessageParser;
+import org.opendaylight.protocol.pcep.ietf.initiated00.CrabbeInitiatedActivator;
 import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07PCReportMessageParser;
 import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07PCUpdateRequestMessageParser;
 import org.opendaylight.protocol.pcep.ietf.stateful07.StatefulActivator;
@@ -50,8 +50,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.iet
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PcupdBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PlspId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SrpIdNumber;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs2;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs2Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs1;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.Lsp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.LspBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.lsp.TlvsBuilder;
@@ -223,6 +223,7 @@ public class PCEPValidatorTest {
                lspaBuilder.setExcludeAny(new AttributeFilter(0L));
                lspaBuilder.setIncludeAll(new AttributeFilter(0L));
                lspaBuilder.setIncludeAny(new AttributeFilter(0L));
+               lspaBuilder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.lspa.TlvsBuilder().build());
                this.lspa = lspaBuilder.build();
 
                final BandwidthBuilder bBuilder = new BandwidthBuilder();
@@ -336,7 +337,7 @@ public class PCEPValidatorTest {
                        b.setSessionId((short) 1);
                        final Stateful tlv1 = new StatefulBuilder().setLspUpdateCapability(Boolean.TRUE).build();
                        b.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder().addAugmentation(
-                                       Tlvs2.class, new Tlvs2Builder().setStateful(tlv1).build()).build());
+                                       Tlvs1.class, new Tlvs1Builder().setStateful(tlv1).build()).build());
                        builder.setOpen(b.build());
 
                        assertEquals(new OpenBuilder().setOpenMessage(builder.build()).build(),
index 4d1562902065f0b40bdf69966fb5a7569c63ec74..09c79b94091849a1fd25f0b470f695075f03d150 100644 (file)
Binary files a/pcep/ietf-stateful07/src/test/resources/PCEPLspaObject3RandVals.bin and b/pcep/ietf-stateful07/src/test/resources/PCEPLspaObject3RandVals.bin differ
index cc666c30492b9dda2f37c2edcd3833d8e06f6bcc..2e666272c8f391f25d358bc458bd3ca1d61a8776 100644 (file)
@@ -18,6 +18,8 @@ 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.ObjectHeader;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.Lspa;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.LspaBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.lspa.Tlvs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.lspa.TlvsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.AttributeFilter;
 
 import com.google.common.primitives.UnsignedBytes;
@@ -25,7 +27,7 @@ import com.google.common.primitives.UnsignedBytes;
 /**
  * Parser for {@link Lspa}
  */
-public class PCEPLspaObjectParser extends AbstractObjectWithTlvsParser<LspaBuilder> {
+public class PCEPLspaObjectParser extends AbstractObjectWithTlvsParser<TlvsBuilder> {
 
        public static final int CLASS = 9;
 
@@ -69,7 +71,9 @@ public class PCEPLspaObjectParser extends AbstractObjectWithTlvsParser<LspaBuild
                final BitSet flags = ByteArray.bytesToBitSet(ByteArray.subByte(bytes, FLAGS_F_OFFSET, FLAGS_F_LENGTH));
 
                final LspaBuilder builder = new LspaBuilder();
-               parseTlvs(builder, ByteArray.cutBytes(bytes, TLVS_F_OFFSET));
+               final TlvsBuilder tbuilder = new TlvsBuilder();
+               parseTlvs(tbuilder, ByteArray.cutBytes(bytes, TLVS_F_OFFSET));
+               builder.setTlvs(tbuilder.build());
 
                builder.setIgnore(header.isIgnore());
                builder.setProcessingRule(header.isProcessingRule());
@@ -90,23 +94,41 @@ public class PCEPLspaObjectParser extends AbstractObjectWithTlvsParser<LspaBuild
                }
                final Lspa lspaObj = (Lspa) object;
 
-               final byte[] retBytes = new byte[TLVS_F_OFFSET];
+               final byte[] tlvs = serializeTlvs(lspaObj.getTlvs());
+               final byte[] retBytes = new byte[TLVS_F_OFFSET + tlvs.length + getPadding(TLVS_F_OFFSET + tlvs.length, PADDED_TO)];
 
-               System.arraycopy(ByteArray.longToBytes(lspaObj.getExcludeAny().getValue(), EXC_ANY_F_LENGTH), 0, retBytes, EXC_ANY_F_OFFSET,
-                               EXC_ANY_F_LENGTH);
-               System.arraycopy(ByteArray.longToBytes(lspaObj.getIncludeAny().getValue(), INC_ANY_F_LENGTH), 0, retBytes, INC_ANY_F_OFFSET,
-                               INC_ANY_F_LENGTH);
-               System.arraycopy(ByteArray.longToBytes(lspaObj.getIncludeAll().getValue(), INC_ALL_F_LENGTH), 0, retBytes, INC_ALL_F_OFFSET,
-                               INC_ALL_F_LENGTH);
-               retBytes[SET_PRIO_F_OFFSET] = UnsignedBytes.checkedCast(lspaObj.getSetupPriority());
-               retBytes[HOLD_PRIO_F_OFFSET] = UnsignedBytes.checkedCast(lspaObj.getHoldPriority());
+               if (lspaObj.getExcludeAny() != null) {
+                       System.arraycopy(ByteArray.longToBytes(lspaObj.getExcludeAny().getValue(), EXC_ANY_F_LENGTH), 0, retBytes, EXC_ANY_F_OFFSET,
+                                       EXC_ANY_F_LENGTH);
+               }
+               if (lspaObj.getIncludeAny() != null) {
+                       System.arraycopy(ByteArray.longToBytes(lspaObj.getIncludeAny().getValue(), INC_ANY_F_LENGTH), 0, retBytes, INC_ANY_F_OFFSET,
+                                       INC_ANY_F_LENGTH);
+               }
+               if (lspaObj.getIncludeAll() != null) {
+                       System.arraycopy(ByteArray.longToBytes(lspaObj.getIncludeAll().getValue(), INC_ALL_F_LENGTH), 0, retBytes, INC_ALL_F_OFFSET,
+                                       INC_ALL_F_LENGTH);
+               }
+               if (lspaObj.getSetupPriority() != null) {
+                       retBytes[SET_PRIO_F_OFFSET] = UnsignedBytes.checkedCast(lspaObj.getSetupPriority());
+               }
+               if (lspaObj.getHoldPriority() != null) {
+                       retBytes[HOLD_PRIO_F_OFFSET] = UnsignedBytes.checkedCast(lspaObj.getHoldPriority());
+               }
 
                final BitSet flags = new BitSet(FLAGS_F_LENGTH * Byte.SIZE);
-               flags.set(L_FLAG_OFFSET, lspaObj.isLocalProtectionDesired());
+               if (lspaObj.isLocalProtectionDesired() != null && lspaObj.isLocalProtectionDesired()) {
+                       flags.set(L_FLAG_OFFSET, lspaObj.isLocalProtectionDesired());
+               }
                ByteArray.copyWhole(ByteArray.bitSetToBytes(flags, FLAGS_F_LENGTH), retBytes, FLAGS_F_OFFSET);
+               ByteArray.copyWhole(tlvs, retBytes, TLVS_F_OFFSET);
                return ObjectUtil.formatSubobject(TYPE, CLASS, object.isProcessingRule(), object.isIgnore(), retBytes);
        }
 
+       public byte[] serializeTlvs(final Tlvs tlvs) {
+               return new byte[0];
+       }
+
        @Override
        public int getObjectType() {
                return TYPE;
index b3cb6c5784740c6ccca5473e3fc14d97520db5a4..f2e4801652a3684eb47c319087b850127629cb31 100644 (file)
@@ -148,12 +148,12 @@ public class PCEPOpenObjectParser extends AbstractObjectWithTlvsParser<TlvsBuild
        }
 
        @Override
-       public int getObjectType() {
+       public final int getObjectType() {
                return TYPE;
        }
 
        @Override
-       public int getObjectClass() {
+       public final int getObjectClass() {
                return CLASS;
        }
 }
index bdc595a8916eeec1227a2dc092fdf21f927b5f26..11895ec24ccc8ede3c72d4b767c211ba7ac2cf5b 100644 (file)
@@ -116,7 +116,7 @@ public class PCEPObjectParserTest {
        }
 
        @Test
-       public void testOpenObjectWithTLV() throws PCEPDeserializerException, IOException {
+       public void testOpenObjectWOTLV() throws PCEPDeserializerException, IOException {
                final PCEPOpenObjectParser parser = new PCEPOpenObjectParser(this.tlvRegistry);
                final byte[] result = ByteArray.fileToBytes("src/test/resources/PCEPOpenObject1.bin");
 
@@ -355,6 +355,7 @@ public class PCEPObjectParserTest {
                builder.setHoldPriority((short) 0);
                builder.setSetupPriority((short) 0);
                builder.setLocalProtectionDesired(false);
+               builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.lspa.TlvsBuilder().build());
 
                assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), ByteArray.cutBytes(result, 4)));
                assertArrayEquals(result, parser.serializeObject(builder.build()));
index f698a01b917b5434da2ad9aecaeb1b0c61edbaea..44f5cf6faaeebea7463cf75c97b4ff67716d76e6 100644 (file)
@@ -35,29 +35,28 @@ import com.google.common.net.InetAddresses;
 /**
  *
  */
-public final class PCEPTopologyProviderModule extends org.opendaylight.controller.config.yang.pcep.topology.provider.AbstractPCEPTopologyProviderModule
-{
+public final class PCEPTopologyProviderModule extends
+               org.opendaylight.controller.config.yang.pcep.topology.provider.AbstractPCEPTopologyProviderModule {
        private static final Logger LOG = LoggerFactory.getLogger(PCEPTopologyProviderModule.class);
 
-       public PCEPTopologyProviderModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+       public PCEPTopologyProviderModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
+                       final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
                super(identifier, dependencyResolver);
        }
 
-       public PCEPTopologyProviderModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final PCEPTopologyProviderModule oldModule, final java.lang.AutoCloseable oldInstance) {
+       public PCEPTopologyProviderModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
+                       final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final PCEPTopologyProviderModule oldModule,
+                       final java.lang.AutoCloseable oldInstance) {
                super(identifier, dependencyResolver, oldModule, oldInstance);
        }
 
        @Override
-       public void validate(){
+       public void validate() {
                super.validate();
-               JmxAttributeValidationException.checkNotNull(getTopologyId(),
-                               "is not set.", topologyIdJmxAttribute);
-               JmxAttributeValidationException.checkNotNull(getListenAddress(),
-                               "is not set.", listenAddressJmxAttribute);
-               JmxAttributeValidationException.checkNotNull(getListenPort(),
-                               "is not set.", listenPortJmxAttribute);
-               JmxAttributeValidationException.checkNotNull(getStatefulPlugin(),
-                               "is not set.", statefulPluginJmxAttribute);
+               JmxAttributeValidationException.checkNotNull(getTopologyId(), "is not set.", this.topologyIdJmxAttribute);
+               JmxAttributeValidationException.checkNotNull(getListenAddress(), "is not set.", this.listenAddressJmxAttribute);
+               JmxAttributeValidationException.checkNotNull(getListenPort(), "is not set.", this.listenPortJmxAttribute);
+               JmxAttributeValidationException.checkNotNull(getStatefulPlugin(), "is not set.", this.statefulPluginJmxAttribute);
        }
 
        private InetAddress listenAddress() {
@@ -73,12 +72,12 @@ public final class PCEPTopologyProviderModule extends org.opendaylight.controlle
 
        @Override
        public java.lang.AutoCloseable createInstance() {
-               final InstanceIdentifier<Topology> topology =
-                               InstanceIdentifier.builder(NetworkTopology.class).child(Topology.class, new TopologyKey(getTopologyId())).toInstance();
+               final InstanceIdentifier<Topology> topology = InstanceIdentifier.builder(NetworkTopology.class).child(Topology.class,
+                               new TopologyKey(getTopologyId())).toInstance();
                final InetSocketAddress address = new InetSocketAddress(listenAddress(), getListenPort().getValue());
                try {
-                       return PCEPTopologyProvider.create(getDispatcherDependency(), address,
-                                       getSchedulerDependency(), getDataProviderDependency(), getRpcRegistryDependency(), topology, getStatefulPluginDependency());
+                       return PCEPTopologyProvider.create(getDispatcherDependency(), address, getSchedulerDependency(), getDataProviderDependency(),
+                                       getRpcRegistryDependency(), topology, getStatefulPluginDependency());
                } catch (InterruptedException | ExecutionException e) {
                        LOG.error("Failed to instantiate topology provider at {}", address, e);
                        throw new RuntimeException("Failed to instantiate provider", e);
index 61e83714c212c8c7c6dc61b91a2b94281f9e9c20..aa6960b076d55ae6054d28314411cfcff59f9ab2 100644 (file)
@@ -29,7 +29,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.iet
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.StatefulTlv1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.StatefulTlv1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SymbolicPathName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs2;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.Lsp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.LspBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.lsp.TlvsBuilder;
@@ -80,13 +80,13 @@ final class Stateful07TopologySessionListener extends AbstractTopologySessionLis
                final InetAddress peerAddress = session.getRemoteAddress();
 
                final Tlvs tlvs = session.getRemoteTlvs();
-               final Tlvs2 tlv = tlvs.getAugmentation(Tlvs2.class);
-               if (tlv != null) {
-                       final Stateful stateful = tlv.getStateful();
+               if (tlvs != null && tlvs.getAugmentation(Tlvs1.class) != null) {
+                       final Stateful stateful = tlvs.getAugmentation(Tlvs1.class).getStateful();
                        if (stateful != null) {
                                pccBuilder.setReportedLsp(Collections.<ReportedLsp> emptyList());
                                pccBuilder.setStateSync(PccSyncState.InitialResync);
-                               pccBuilder.setStatefulTlv(new StatefulTlvBuilder().addAugmentation(StatefulTlv1.class, new StatefulTlv1Builder(tlv).build()).build());
+                               pccBuilder.setStatefulTlv(new StatefulTlvBuilder().addAugmentation(StatefulTlv1.class,
+                                               new StatefulTlv1Builder(tlvs.getAugmentation(Tlvs1.class)).build()).build());
                        } else {
                                LOG.debug("Peer {} does not advertise stateful TLV", peerAddress);
                        }
@@ -181,7 +181,8 @@ final class Stateful07TopologySessionListener extends AbstractTopologySessionLis
                final RequestsBuilder rb = new RequestsBuilder();
                rb.fieldsFrom(input.getArguments());
                rb.setSrp(new SrpBuilder().setOperationId(nextRequest()).setProcessingRule(Boolean.TRUE).build());
-               rb.setLsp(new LspBuilder().setAdministrative(input.getArguments().isAdministrative()).setDelegate(Boolean.TRUE).setPlspId(new PlspId(0L)).setTlvs(
+               rb.setLsp(new LspBuilder().setAdministrative(input.getArguments().isAdministrative()).setDelegate(Boolean.TRUE).setPlspId(
+                               new PlspId(0L)).setTlvs(
                                new TlvsBuilder().setSymbolicPathName(
                                                new SymbolicPathNameBuilder().setPathName(new SymbolicPathName(input.getName().getBytes(Charsets.UTF_8))).build()).build()).build());
 
index 0b4f751529346df07d9591e3acce73016c6da4e7..00fbb6383a2b2f7daf03076049b4db261cf2f13c 100644 (file)
@@ -42,17 +42,17 @@ import org.opendaylight.controller.sal.binding.api.data.DataModificationTransact
 import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
 import org.opendaylight.protocol.pcep.impl.DefaultPCEPSessionNegotiator;
 import org.opendaylight.protocol.pcep.impl.PCEPSessionImpl;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.Tlvs1;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.Tlvs1Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.stateful.capability.tlv.StatefulBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Pcrpt;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PcrptBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PlspId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SymbolicPathName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs2;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs2Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.LspBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.PcrptMessageBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.Reports;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.ReportsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.stateful.capability.tlv.StatefulBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.symbolic.path.name.tlv.SymbolicPathNameBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.Open;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.OpenBuilder;
@@ -91,7 +91,7 @@ public class ParserToSalTest {
        DataModificationTransaction mockedTransaction;
 
        private final Open localPrefs = new OpenBuilder().setDeadTimer((short) 30).setKeepalive((short) 10).setTlvs(
-                       new TlvsBuilder().addAugmentation(Tlvs2.class, new Tlvs2Builder().setStateful(new StatefulBuilder().build()).build()).build()).build();
+                       new TlvsBuilder().addAugmentation(Tlvs1.class, new Tlvs1Builder().setStateful(new StatefulBuilder().build()).build()).build()).build();
 
        private Pcrpt rptmsg;
 
@@ -150,7 +150,7 @@ public class ParserToSalTest {
 
                        @Override
                        public RpcResult<TransactionStatus> get(final long timeout, final TimeUnit unit) throws InterruptedException,
-                       ExecutionException, TimeoutException {
+                                       ExecutionException, TimeoutException {
                                return null;
                        }
                }).when(this.mockedTransaction).commit();