From ebcdc7cb37cc46755ff45a6c3085c28260682869 Mon Sep 17 00:00:00 2001 From: Dana Kutenicsova Date: Thu, 13 Mar 2014 13:21:17 +0100 Subject: [PATCH] BUG-64 : reformat TlvRegistry, to skip using getType method. Change-Id: If3dd450f148e255357eb11d230b94cb7ab058da8 Signed-off-by: Dana Kutenicsova --- .../initiated00/LSPCleanupTlvParser.java | 3 +- .../initiated00/PCEPOpenObjectParser.java | 4 +- .../PCEStatefulCapabilityTlvParser.java | 3 +- .../Stateful02LspDbVersionTlvParser.java | 3 +- .../stateful02/Stateful02LspObjectParser.java | 4 +- .../Stateful02LspSymbolicNameTlvParser.java | 3 +- .../Stateful02LspaObjectParser.java | 4 +- .../Stateful02NodeIdentifierTlvParser.java | 3 +- .../Stateful02OpenObjectParser.java | 4 +- .../Stateful02RSVPErrorSpecTlvParser.java | 7 ++- ...Stateful02StatefulCapabilityTlvParser.java | 3 +- .../pcep/ietf/PCEPObjectParserTest.java | 4 +- .../protocol/pcep/ietf/PCEPTlvParserTest.java | 39 ++++++------ .../CInitiated00LspObjectParser.java | 4 +- .../CInitiated00SrpObjectParser.java | 4 +- ...nitiated00StatefulCapabilityTlvParser.java | 3 +- .../initiated00/CrabbeInitiatedActivator.java | 4 +- .../Stateful07LSPIdentifierIpv4TlvParser.java | 3 +- .../Stateful07LSPIdentifierIpv6TlvParser.java | 3 +- .../stateful07/Stateful07LspObjectParser.java | 4 +- .../Stateful07LspSymbolicNameTlvParser.java | 3 +- .../Stateful07LspUpdateErrorTlvParser.java | 3 +- .../Stateful07LspaObjectParser.java | 4 +- .../Stateful07OpenObjectParser.java | 4 +- .../Stateful07RSVPErrorSpecTlvParser.java | 5 +- .../stateful07/Stateful07SrpObjectParser.java | 4 +- ...Stateful07StatefulCapabilityTlvParser.java | 3 +- .../ietf/stateful07/StatefulActivator.java | 4 +- .../pcep/ietf/PCEPObjectParserTest.java | 4 +- .../protocol/pcep/ietf/PCEPTlvParserTest.java | 63 +++++++++---------- .../protocol/pcep/impl/Activator.java | 4 +- .../impl/object/AbstractBandwidthParser.java | 4 +- .../object/PCEPBandwidthObjectParser.java | 4 +- .../object/PCEPClassTypeObjectParser.java | 4 +- .../impl/object/PCEPCloseObjectParser.java | 4 +- .../object/PCEPEndPointsIpv4ObjectParser.java | 4 +- .../object/PCEPEndPointsIpv6ObjectParser.java | 4 +- .../impl/object/PCEPErrorObjectParser.java | 4 +- .../PCEPExistingBandwidthObjectParser.java | 4 +- .../PCEPGlobalConstraintsObjectParser.java | 4 +- .../object/PCEPLoadBalancingObjectParser.java | 4 +- .../impl/object/PCEPLspaObjectParser.java | 4 +- .../impl/object/PCEPMetricObjectParser.java | 4 +- .../impl/object/PCEPNoPathObjectParser.java | 4 +- .../object/PCEPNotificationObjectParser.java | 4 +- .../PCEPObjectiveFunctionObjectParser.java | 4 +- .../impl/object/PCEPOpenObjectParser.java | 4 +- .../PCEPRequestParameterObjectParser.java | 4 +- .../impl/object/PCEPSvecObjectParser.java | 4 +- .../pcep/impl/tlv/NoPathVectorTlvParser.java | 2 +- .../pcep/impl/tlv/OFListTlvParser.java | 2 +- .../pcep/impl/tlv/OrderTlvParser.java | 2 +- .../impl/tlv/OverloadedDurationTlvParser.java | 2 +- .../pcep/impl/tlv/ReqMissingTlvParser.java | 2 +- .../protocol/pcep/impl/tlv/TlvUtil.java | 39 ++++++++++++ .../pcep/impl/PCEPObjectParserTest.java | 4 +- .../protocol/pcep/impl/PCEPTlvParserTest.java | 22 +++---- .../spi/AbstractObjectWithTlvsParser.java | 46 +++++--------- .../spi/PCEPExtensionConsumerContext.java | 2 +- ...vHandlerRegistry.java => TlvRegistry.java} | 6 +- .../SimplePCEPExtensionProviderContext.java | 6 +- ...erRegistry.java => SimpleTlvRegistry.java} | 23 +++++-- 62 files changed, 241 insertions(+), 199 deletions(-) create mode 100644 pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/tlv/TlvUtil.java rename pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/{TlvHandlerRegistry.java => TlvRegistry.java} (74%) rename pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/{SimpleTlvHandlerRegistry.java => SimpleTlvRegistry.java} (64%) diff --git a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/LSPCleanupTlvParser.java b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/LSPCleanupTlvParser.java index 067a9b7c1d..ac502a44ce 100644 --- a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/LSPCleanupTlvParser.java +++ b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/LSPCleanupTlvParser.java @@ -7,6 +7,7 @@ */ package org.opendaylight.protocol.pcep.crabbe.initiated00; +import org.opendaylight.protocol.pcep.impl.tlv.TlvUtil; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; import org.opendaylight.protocol.pcep.spi.TlvParser; import org.opendaylight.protocol.pcep.spi.TlvSerializer; @@ -21,7 +22,7 @@ public final class LSPCleanupTlvParser implements TlvParser, TlvSerializer { @Override public byte[] serializeTlv(final Tlv tlv) { - return ByteArray.intToBytes(((LspCleanup) tlv).getTimeout().intValue()); + return TlvUtil.formatTlv(TYPE, ByteArray.intToBytes(((LspCleanup) tlv).getTimeout().intValue())); } @Override diff --git a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/PCEPOpenObjectParser.java b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/PCEPOpenObjectParser.java index a1df09163b..041b97e405 100644 --- a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/PCEPOpenObjectParser.java +++ b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/PCEPOpenObjectParser.java @@ -8,7 +8,7 @@ package org.opendaylight.protocol.pcep.crabbe.initiated00; import org.opendaylight.protocol.pcep.ietf.stateful02.Stateful02OpenObjectParser; -import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry; +import org.opendaylight.protocol.pcep.spi.TlvRegistry; import org.opendaylight.protocol.util.ByteArray; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated._00.rev140113.Tlvs1; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated._00.rev140113.Tlvs1Builder; @@ -26,7 +26,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ */ public final class PCEPOpenObjectParser extends Stateful02OpenObjectParser { - public PCEPOpenObjectParser(final TlvHandlerRegistry tlvReg) { + public PCEPOpenObjectParser(final TlvRegistry tlvReg) { super(tlvReg); } diff --git a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/PCEStatefulCapabilityTlvParser.java b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/PCEStatefulCapabilityTlvParser.java index d5a9c1c224..1585ecd590 100644 --- a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/PCEStatefulCapabilityTlvParser.java +++ b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/crabbe/initiated00/PCEStatefulCapabilityTlvParser.java @@ -10,6 +10,7 @@ package org.opendaylight.protocol.pcep.crabbe.initiated00; import java.util.BitSet; import org.opendaylight.protocol.pcep.ietf.stateful02.Stateful02StatefulCapabilityTlvParser; +import org.opendaylight.protocol.pcep.impl.tlv.TlvUtil; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; import org.opendaylight.protocol.util.ByteArray; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated._00.rev140113.Stateful1; @@ -67,6 +68,6 @@ public final class PCEStatefulCapabilityTlvParser extends Stateful02StatefulCapa if (sct.isIncludeDbVersion() != null && sct.isIncludeDbVersion()) { flags.set(S_FLAG_OFFSET, sct.isIncludeDbVersion()); } - return ByteArray.bitSetToBytes(flags, FLAGS_F_LENGTH); + return TlvUtil.formatTlv(TYPE, ByteArray.bitSetToBytes(flags, FLAGS_F_LENGTH)); } } \ No newline at end of file diff --git a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspDbVersionTlvParser.java b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspDbVersionTlvParser.java index 0e898ab342..468af9ff50 100644 --- a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspDbVersionTlvParser.java +++ b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspDbVersionTlvParser.java @@ -9,6 +9,7 @@ package org.opendaylight.protocol.pcep.ietf.stateful02; import java.math.BigInteger; +import org.opendaylight.protocol.pcep.impl.tlv.TlvUtil; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; import org.opendaylight.protocol.pcep.spi.TlvParser; import org.opendaylight.protocol.pcep.spi.TlvSerializer; @@ -37,7 +38,7 @@ public final class Stateful02LspDbVersionTlvParser implements TlvParser, TlvSeri public byte[] serializeTlv(final Tlv tlv) { Preconditions.checkNotNull(tlv, "LspDbVersionTlv is mandatory."); final LspDbVersion lsp = (LspDbVersion) tlv; - return ByteArray.longToBytes(lsp.getVersion().longValue(), DBV_F_LENGTH); + return TlvUtil.formatTlv(TYPE, ByteArray.longToBytes(lsp.getVersion().longValue(), DBV_F_LENGTH)); } @Override diff --git a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspObjectParser.java b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspObjectParser.java index 8f57cc0210..180d4f957f 100644 --- a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspObjectParser.java +++ b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspObjectParser.java @@ -12,7 +12,7 @@ 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.spi.TlvHandlerRegistry; +import org.opendaylight.protocol.pcep.spi.TlvRegistry; import org.opendaylight.protocol.util.ByteArray; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.PlspId; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.lsp.db.version.tlv.LspDbVersion; @@ -49,7 +49,7 @@ public final class Stateful02LspObjectParser extends AbstractObjectWithTlvsParse private static final int REMOVE_FLAG_OFFSET = 12; private static final int OPERATIONAL_FLAG_OFFSET = 13; - public Stateful02LspObjectParser(final TlvHandlerRegistry tlvReg) { + public Stateful02LspObjectParser(final TlvRegistry tlvReg) { super(tlvReg); } diff --git a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspSymbolicNameTlvParser.java b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspSymbolicNameTlvParser.java index 958a608886..bb64746c16 100644 --- a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspSymbolicNameTlvParser.java +++ b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspSymbolicNameTlvParser.java @@ -7,6 +7,7 @@ */ package org.opendaylight.protocol.pcep.ietf.stateful02; +import org.opendaylight.protocol.pcep.impl.tlv.TlvUtil; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; import org.opendaylight.protocol.pcep.spi.TlvParser; import org.opendaylight.protocol.pcep.spi.TlvSerializer; @@ -33,7 +34,7 @@ public final class Stateful02LspSymbolicNameTlvParser implements TlvParser, TlvS throw new IllegalArgumentException("SymbolicPathNameTlv is mandatory."); } final SymbolicPathName spn = (SymbolicPathName) tlv; - return spn.getPathName().getValue(); + return TlvUtil.formatTlv(TYPE, spn.getPathName().getValue()); } @Override diff --git a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspaObjectParser.java b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspaObjectParser.java index d206c10c69..fd2ae865bf 100644 --- a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspaObjectParser.java +++ b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02LspaObjectParser.java @@ -8,7 +8,7 @@ package org.opendaylight.protocol.pcep.ietf.stateful02; import org.opendaylight.protocol.pcep.impl.object.PCEPLspaObjectParser; -import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry; +import org.opendaylight.protocol.pcep.spi.TlvRegistry; import org.opendaylight.protocol.util.ByteArray; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated._00.rev140113.Tlvs2; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated._00.rev140113.Tlvs2Builder; @@ -23,7 +23,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ */ public class Stateful02LspaObjectParser extends PCEPLspaObjectParser { - public Stateful02LspaObjectParser(final TlvHandlerRegistry tlvReg) { + public Stateful02LspaObjectParser(final TlvRegistry tlvReg) { super(tlvReg); } diff --git a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02NodeIdentifierTlvParser.java b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02NodeIdentifierTlvParser.java index 1e106c3907..31a8483a6d 100644 --- a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02NodeIdentifierTlvParser.java +++ b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02NodeIdentifierTlvParser.java @@ -7,6 +7,7 @@ */ package org.opendaylight.protocol.pcep.ietf.stateful02; +import org.opendaylight.protocol.pcep.impl.tlv.TlvUtil; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; import org.opendaylight.protocol.pcep.spi.TlvParser; import org.opendaylight.protocol.pcep.spi.TlvSerializer; @@ -25,7 +26,7 @@ public final class Stateful02NodeIdentifierTlvParser implements TlvParser, TlvSe @Override public byte[] serializeTlv(final Tlv tlv) { - return ((NodeIdentifier) tlv).getValue(); + return TlvUtil.formatTlv(TYPE, ((NodeIdentifier) tlv).getValue()); } @Override diff --git a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02OpenObjectParser.java b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02OpenObjectParser.java index aa56c5837b..2534243486 100644 --- a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02OpenObjectParser.java +++ b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02OpenObjectParser.java @@ -8,7 +8,7 @@ package org.opendaylight.protocol.pcep.ietf.stateful02; import org.opendaylight.protocol.pcep.impl.object.PCEPOpenObjectParser; -import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry; +import org.opendaylight.protocol.pcep.spi.TlvRegistry; import org.opendaylight.protocol.util.ByteArray; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.Tlvs2; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.Tlvs2Builder; @@ -24,7 +24,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ */ public class Stateful02OpenObjectParser extends PCEPOpenObjectParser { - public Stateful02OpenObjectParser(final TlvHandlerRegistry tlvReg) { + public Stateful02OpenObjectParser(final TlvRegistry tlvReg) { super(tlvReg); } diff --git a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02RSVPErrorSpecTlvParser.java b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02RSVPErrorSpecTlvParser.java index 8b4da97f06..1d85ad3307 100644 --- a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02RSVPErrorSpecTlvParser.java +++ b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02RSVPErrorSpecTlvParser.java @@ -11,6 +11,7 @@ import java.util.BitSet; import org.opendaylight.protocol.concepts.Ipv4Util; import org.opendaylight.protocol.concepts.Ipv6Util; +import org.opendaylight.protocol.pcep.impl.tlv.TlvUtil; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; import org.opendaylight.protocol.pcep.spi.TlvParser; import org.opendaylight.protocol.pcep.spi.TlvSerializer; @@ -94,10 +95,10 @@ public final class Stateful02RSVPErrorSpecTlvParser implements TlvParser, TlvSer if (rsvp.getErrorType().getImplementedInterface().equals(RsvpCase.class)) { final RsvpCase r = (RsvpCase) rsvp.getErrorType(); - return serializeRsvp(r.getRsvpError()); + return TlvUtil.formatTlv(TYPE, serializeRsvp(r.getRsvpError())); } else { final UserCase u = (UserCase) rsvp.getErrorType(); - return serializerUserError(u.getUserError()); + return TlvUtil.formatTlv(TYPE, serializerUserError(u.getUserError())); } } @@ -126,7 +127,7 @@ public final class Stateful02RSVPErrorSpecTlvParser implements TlvParser, TlvSer final byte descLen = UnsignedBytes.checkedCast(desc.length); // if we have any subobjects, place the implementation here final byte[] bytes = new byte[2 + ENTERPRISE_F_LENGTH + SUB_ORG_F_LENGTH + USER_VALUE_F_LENGTH + ERR_DESCR_LENGTH_F_LENGTH - + desc.length]; + + desc.length]; bytes[0] = UnsignedBytes.checkedCast(USER_ERROR_CLASS_NUM); bytes[1] = UnsignedBytes.checkedCast(USER_ERROR_CLASS_TYPE); int offset = 2; diff --git a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02StatefulCapabilityTlvParser.java b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02StatefulCapabilityTlvParser.java index 988a311278..57a6349e08 100644 --- a/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02StatefulCapabilityTlvParser.java +++ b/pcep/ietf-stateful02/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful02/Stateful02StatefulCapabilityTlvParser.java @@ -9,6 +9,7 @@ package org.opendaylight.protocol.pcep.ietf.stateful02; import java.util.BitSet; +import org.opendaylight.protocol.pcep.impl.tlv.TlvUtil; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; import org.opendaylight.protocol.pcep.spi.TlvParser; import org.opendaylight.protocol.pcep.spi.TlvSerializer; @@ -53,7 +54,7 @@ public class Stateful02StatefulCapabilityTlvParser implements TlvParser, TlvSeri final BitSet flags = new BitSet(FLAGS_F_LENGTH * Byte.SIZE); flags.set(U_FLAG_OFFSET, sct.isLspUpdateCapability()); flags.set(S_FLAG_OFFSET, sct.isIncludeDbVersion()); - return ByteArray.bitSetToBytes(flags, FLAGS_F_LENGTH); + return TlvUtil.formatTlv(TYPE, ByteArray.bitSetToBytes(flags, FLAGS_F_LENGTH)); } @Override diff --git a/pcep/ietf-stateful02/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPObjectParserTest.java b/pcep/ietf-stateful02/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPObjectParserTest.java index 21dd7c5fb4..c7523647d4 100644 --- a/pcep/ietf-stateful02/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPObjectParserTest.java +++ b/pcep/ietf-stateful02/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPObjectParserTest.java @@ -18,7 +18,7 @@ import org.opendaylight.protocol.pcep.crabbe.initiated00.PCEPOpenObjectParser; import org.opendaylight.protocol.pcep.ietf.stateful02.Stateful02LspaObjectParser; import org.opendaylight.protocol.pcep.spi.ObjectHeaderImpl; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; -import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry; +import org.opendaylight.protocol.pcep.spi.TlvRegistry; import org.opendaylight.protocol.pcep.spi.pojo.ServiceLoaderPCEPExtensionProviderContext; import org.opendaylight.protocol.util.ByteArray; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated._00.rev140113.Stateful1; @@ -40,7 +40,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev public class PCEPObjectParserTest { - private TlvHandlerRegistry tlvRegistry; + private TlvRegistry tlvRegistry; @Before public void setUp() throws Exception { diff --git a/pcep/ietf-stateful02/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPTlvParserTest.java b/pcep/ietf-stateful02/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPTlvParserTest.java index 060e40bebf..c2ade720b1 100644 --- a/pcep/ietf-stateful02/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPTlvParserTest.java +++ b/pcep/ietf-stateful02/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPTlvParserTest.java @@ -20,6 +20,7 @@ import org.opendaylight.protocol.pcep.ietf.stateful02.Stateful02LspSymbolicNameT import org.opendaylight.protocol.pcep.ietf.stateful02.Stateful02RSVPErrorSpecTlvParser; import org.opendaylight.protocol.pcep.ietf.stateful02.Stateful02StatefulCapabilityTlvParser; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; +import org.opendaylight.protocol.util.ByteArray; 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.crabbe.stateful._02.rev140110.lsp.db.version.tlv.LspDbVersion; @@ -37,27 +38,23 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.cra public class PCEPTlvParserTest { - private static final byte[] statefulBytes = { (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01 }; - private static final byte[] symbolicNameBytes = { (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 }; - private static final byte[] rsvpErrorBytes = { (byte) 0x06, (byte) 0x01, (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0x78, - (byte) 0x02, (byte) 0x92, (byte) 0x16, (byte) 0x02 }; - private static final byte[] rsvpError6Bytes = { (byte) 0x06, (byte) 0x02, (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0x78, - (byte) 0x9a, (byte) 0xbc, (byte) 0xde, (byte) 0xf0, (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0x78, (byte) 0x9a, - (byte) 0xbc, (byte) 0xde, (byte) 0xf0, (byte) 0x02, (byte) 0xd5, (byte) 0xc5, (byte) 0xd9 }; - private static final byte[] userErrorBytes = { (byte) 0xc2, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x30, (byte) 0x39, - (byte) 0x05, (byte) 0x09, (byte) 0x00, (byte) 0x26, (byte) 0x75, (byte) 0x73, (byte) 0x65, (byte) 0x72, (byte) 0x20, - (byte) 0x64, (byte) 0x65, (byte) 0x73, (byte) 0x63 }; - private static final byte[] lspDbBytes = { (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, - (byte) 0xb4 }; + private static final byte[] statefulBytes = { 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01 }; + private static final byte[] symbolicNameBytes = { 0x00, 0x11, 0x00, 0x19, 0x4d, 0x65, 0x64, 0x20, 0x74, 0x65, + 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x69, 0x63, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00 }; + private static final byte[] rsvpErrorBytes = { 0x00, 0x15, 0x00, 0x0a, 0x06, 0x01, 0x12, 0x34, 0x56, 0x78, 0x02, (byte) 0x92, 0x16, 0x02, 0x00, 0x00 }; + private static final byte[] rsvpError6Bytes = { 0x00, 0x15, 0x00, 0x16, 0x06, 0x02, 0x12, 0x34, 0x56, 0x78, + (byte) 0x9a, (byte) 0xbc, (byte) 0xde, (byte) 0xf0, 0x12, 0x34, 0x56, 0x78, (byte) 0x9a, + (byte) 0xbc, (byte) 0xde, (byte) 0xf0, 0x02, (byte) 0xd5, (byte) 0xc5, (byte) 0xd9, 0x00, 0x00 }; + private static final byte[] userErrorBytes = { 0x00, 0x15, 0x00, 0x13, (byte) 0xc2, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x30, (byte) 0x39, + (byte) 0x05, (byte) 0x09, (byte) 0x00, (byte) 0x26, (byte) 0x75, (byte) 0x73, (byte) 0x65, (byte) 0x72, (byte) 0x20, + (byte) 0x64, (byte) 0x65, (byte) 0x73, (byte) 0x63, 0x00 }; + private static final byte[] lspDbBytes = { 0x00, 0x17, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, (byte) 0xb4 }; @Test public void testStatefulTlv() throws PCEPDeserializerException { final Stateful02StatefulCapabilityTlvParser parser = new Stateful02StatefulCapabilityTlvParser(); final Stateful tlv = new StatefulBuilder().setLspUpdateCapability(Boolean.TRUE).setIncludeDbVersion(false).build(); - assertEquals(tlv, parser.parseTlv(statefulBytes)); + assertEquals(tlv, parser.parseTlv(ByteArray.cutBytes(statefulBytes, 4))); assertArrayEquals(statefulBytes, parser.serializeTlv(tlv)); } @@ -66,7 +63,7 @@ public class PCEPTlvParserTest { final Stateful02LspSymbolicNameTlvParser parser = new Stateful02LspSymbolicNameTlvParser(); final SymbolicPathName tlv = new SymbolicPathNameBuilder().setPathName( new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.stateful._02.rev140110.SymbolicPathName("Med test of symbolic name".getBytes())).build(); - assertEquals(tlv, parser.parseTlv(symbolicNameBytes)); + assertEquals(tlv, parser.parseTlv(ByteArray.subByte(symbolicNameBytes, 4, 25))); assertArrayEquals(symbolicNameBytes, parser.serializeTlv(tlv)); } @@ -79,7 +76,7 @@ public class PCEPTlvParserTest { builder.setCode((short) 146); builder.setValue(5634); final RsvpErrorSpec tlv = new RsvpErrorSpecBuilder().setErrorType(new RsvpCaseBuilder().setRsvpError(builder.build()).build()).build(); - assertEquals(tlv, parser.parseTlv(rsvpErrorBytes)); + assertEquals(tlv, parser.parseTlv(ByteArray.subByte(rsvpErrorBytes, 4, 10))); assertArrayEquals(rsvpErrorBytes, parser.serializeTlv(tlv)); } @@ -94,7 +91,7 @@ public class PCEPTlvParserTest { builder.setCode((short) 213); builder.setValue(50649); final RsvpErrorSpec tlv = new RsvpErrorSpecBuilder().setErrorType(new RsvpCaseBuilder().setRsvpError(builder.build()).build()).build(); - assertEquals(tlv, parser.parseTlv(rsvpError6Bytes)); + assertEquals(tlv, parser.parseTlv(ByteArray.subByte(rsvpError6Bytes, 4, 22))); assertArrayEquals(rsvpError6Bytes, parser.serializeTlv(tlv)); } @@ -107,7 +104,7 @@ public class PCEPTlvParserTest { builder.setValue(38); builder.setDescription("user desc"); final RsvpErrorSpec tlv = new RsvpErrorSpecBuilder().setErrorType(new UserCaseBuilder().setUserError(builder.build()).build()).build(); - assertEquals(tlv, parser.parseTlv(userErrorBytes)); + assertEquals(tlv, parser.parseTlv(ByteArray.subByte(userErrorBytes, 4, 19))); assertArrayEquals(userErrorBytes, parser.serializeTlv(tlv)); } @@ -115,7 +112,7 @@ public class PCEPTlvParserTest { public void testLspDbVersionTlv() throws PCEPDeserializerException { final Stateful02LspDbVersionTlvParser parser = new Stateful02LspDbVersionTlvParser(); final LspDbVersion tlv = new LspDbVersionBuilder().setVersion(BigInteger.valueOf(180L)).build(); - assertEquals(tlv, parser.parseTlv(lspDbBytes)); + assertEquals(tlv, parser.parseTlv(ByteArray.cutBytes(lspDbBytes, 4))); assertArrayEquals(lspDbBytes, parser.serializeTlv(tlv)); } diff --git a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CInitiated00LspObjectParser.java b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CInitiated00LspObjectParser.java index b39f21abe8..6569fdb05c 100644 --- a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CInitiated00LspObjectParser.java +++ b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CInitiated00LspObjectParser.java @@ -12,7 +12,7 @@ import java.util.BitSet; import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07LspObjectParser; import org.opendaylight.protocol.pcep.spi.ObjectUtil; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; -import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry; +import org.opendaylight.protocol.pcep.spi.TlvRegistry; import org.opendaylight.protocol.util.ByteArray; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Lsp1; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Lsp1Builder; @@ -31,7 +31,7 @@ public final class CInitiated00LspObjectParser extends Stateful07LspObjectParser private static final int CREATE_FLAG_OFFSET = 8; - public CInitiated00LspObjectParser(final TlvHandlerRegistry tlvReg) { + public CInitiated00LspObjectParser(final TlvRegistry tlvReg) { super(tlvReg); } diff --git a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CInitiated00SrpObjectParser.java b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CInitiated00SrpObjectParser.java index c800742a37..737be9b721 100644 --- a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CInitiated00SrpObjectParser.java +++ b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CInitiated00SrpObjectParser.java @@ -13,7 +13,7 @@ import java.util.BitSet; import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07SrpObjectParser; import org.opendaylight.protocol.pcep.spi.ObjectUtil; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; -import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry; +import org.opendaylight.protocol.pcep.spi.TlvRegistry; import org.opendaylight.protocol.util.ByteArray; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Srp1; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Srp1Builder; @@ -30,7 +30,7 @@ public final class CInitiated00SrpObjectParser extends Stateful07SrpObjectParser private static final int REMOVE_FLAG = 31; - public CInitiated00SrpObjectParser(final TlvHandlerRegistry tlvReg) { + public CInitiated00SrpObjectParser(final TlvRegistry tlvReg) { super(tlvReg); } diff --git a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CInitiated00StatefulCapabilityTlvParser.java b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CInitiated00StatefulCapabilityTlvParser.java index 171b5a9fb6..a9ccb0d206 100644 --- a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CInitiated00StatefulCapabilityTlvParser.java +++ b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CInitiated00StatefulCapabilityTlvParser.java @@ -10,6 +10,7 @@ package org.opendaylight.protocol.pcep.ietf.initiated00; import java.util.BitSet; import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07StatefulCapabilityTlvParser; +import org.opendaylight.protocol.pcep.impl.tlv.TlvUtil; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; import org.opendaylight.protocol.util.ByteArray; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Stateful1; @@ -59,6 +60,6 @@ public final class CInitiated00StatefulCapabilityTlvParser extends Stateful07Sta flags.set(I_FLAG_OFFSET, sfi.isInitiation()); } flags.set(U_FLAG_OFFSET, sct.isLspUpdateCapability()); - return ByteArray.bitSetToBytes(flags, FLAGS_F_LENGTH); + return TlvUtil.formatTlv(TYPE, ByteArray.bitSetToBytes(flags, FLAGS_F_LENGTH)); } } diff --git a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CrabbeInitiatedActivator.java b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CrabbeInitiatedActivator.java index ef59729b67..5a1de2053f 100644 --- a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CrabbeInitiatedActivator.java +++ b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/initiated00/CrabbeInitiatedActivator.java @@ -11,7 +11,7 @@ import java.util.ArrayList; import java.util.List; import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext; -import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry; +import org.opendaylight.protocol.pcep.spi.TlvRegistry; import org.opendaylight.protocol.pcep.spi.pojo.AbstractPCEPExtensionProviderActivator; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Pcinitiate; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.Lsp; @@ -27,7 +27,7 @@ public final class CrabbeInitiatedActivator extends AbstractPCEPExtensionProvide new CInitiated00PCInitiateMessageParser(context.getObjectHandlerRegistry()))); regs.add(context.registerMessageSerializer(Pcinitiate.class, new CInitiated00PCInitiateMessageParser(context.getObjectHandlerRegistry()))); - final TlvHandlerRegistry tlvReg = context.getTlvHandlerRegistry(); + final TlvRegistry tlvReg = context.getTlvHandlerRegistry(); regs.add(context.registerObjectParser(CInitiated00LspObjectParser.CLASS, CInitiated00LspObjectParser.TYPE, new CInitiated00LspObjectParser(tlvReg))); regs.add(context.registerObjectSerializer(Lsp.class, new CInitiated00LspObjectParser(tlvReg))); regs.add(context.registerObjectParser(CInitiated00SrpObjectParser.CLASS, CInitiated00SrpObjectParser.TYPE, new CInitiated00SrpObjectParser(tlvReg))); diff --git a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07LSPIdentifierIpv4TlvParser.java b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07LSPIdentifierIpv4TlvParser.java index 4b1622a622..6bc0d770ae 100644 --- a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07LSPIdentifierIpv4TlvParser.java +++ b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07LSPIdentifierIpv4TlvParser.java @@ -8,6 +8,7 @@ package org.opendaylight.protocol.pcep.ietf.stateful07; import org.opendaylight.protocol.concepts.Ipv4Util; +import org.opendaylight.protocol.pcep.impl.tlv.TlvUtil; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; import org.opendaylight.protocol.pcep.spi.TlvParser; import org.opendaylight.protocol.pcep.spi.TlvSerializer; @@ -88,7 +89,7 @@ public final class Stateful07LSPIdentifierIpv4TlvParser implements TlvParser, Tl ByteArray.copyWhole(Ipv4Util.bytesForAddress(ipv4.getIpv4ExtendedTunnelId()), bytes, offset); offset += EX_TUNNEL_ID4_F_LENGTH; ByteArray.copyWhole(Ipv4Util.bytesForAddress(ipv4.getIpv4TunnelEndpointAddress()), bytes, offset); - return bytes; + return TlvUtil.formatTlv(TYPE, bytes); } @Override diff --git a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07LSPIdentifierIpv6TlvParser.java b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07LSPIdentifierIpv6TlvParser.java index 433521b442..17daf51256 100644 --- a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07LSPIdentifierIpv6TlvParser.java +++ b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07LSPIdentifierIpv6TlvParser.java @@ -8,6 +8,7 @@ package org.opendaylight.protocol.pcep.ietf.stateful07; import org.opendaylight.protocol.concepts.Ipv6Util; +import org.opendaylight.protocol.pcep.impl.tlv.TlvUtil; import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; import org.opendaylight.protocol.pcep.spi.TlvParser; import org.opendaylight.protocol.pcep.spi.TlvSerializer; @@ -81,7 +82,7 @@ public final class Stateful07LSPIdentifierIpv6TlvParser implements TlvParser, Tl ByteArray.copyWhole(Ipv6Util.bytesForAddress(ipv6.getIpv6ExtendedTunnelId()), bytes, offset); offset += EX_TUNNEL_ID6_F_LENGTH; ByteArray.copyWhole(Ipv6Util.bytesForAddress(ipv6.getIpv6TunnelEndpointAddress()), bytes, offset); - return bytes; + return TlvUtil.formatTlv(TYPE, bytes); } @Override diff --git a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07LspObjectParser.java b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07LspObjectParser.java index aa4a2ebcf2..74dc7ba786 100644 --- a/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07LspObjectParser.java +++ b/pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07LspObjectParser.java @@ -12,7 +12,7 @@ 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.spi.TlvHandlerRegistry; +import org.opendaylight.protocol.pcep.spi.TlvRegistry; import org.opendaylight.protocol.util.ByteArray; 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; @@ -54,7 +54,7 @@ public class Stateful07LspObjectParser extends AbstractObjectWithTlvsParser implements ObjectParser, O protected static final int PADDED_TO = 4; - private final TlvHandlerRegistry tlvReg; + private final TlvRegistry tlvReg; - protected AbstractObjectWithTlvsParser(final TlvHandlerRegistry tlvReg) { + protected AbstractObjectWithTlvsParser(final TlvRegistry tlvReg) { this.tlvReg = Preconditions.checkNotNull(tlvReg); } @@ -56,45 +58,29 @@ public abstract class AbstractObjectWithTlvsParser implements ObjectParser, O final byte[] tlvBytes = ByteArray.subByte(bytes, byteOffset, length); LOG.trace("Attempt to parse tlv from bytes: {}", ByteArray.bytesToHexString(tlvBytes)); - final TlvParser parser = this.tlvReg.getTlvParser(type); - if (parser != null) { - final Tlv tlv = parser.parseTlv(tlvBytes); - LOG.trace("Tlv was parsed. {}", tlv); - addTlv(builder, tlv); - } else { - LOG.warn("Unknown TLV received. Type {}. Ignoring it.", type); - } + final Tlv tlv = this.tlvReg.parseTlv(type, tlvBytes); + LOG.trace("Tlv was parsed. {}", tlv); + addTlv(builder, tlv); byteOffset += length + getPadding(TLV_HEADER_LENGTH + length, PADDED_TO); } } protected final byte[] serializeTlv(final Tlv tlv) { - - final TlvSerializer serializer = this.tlvReg.getTlvSerializer(tlv); - LOG.trace("Choosen serializer {}", serializer); - - final byte[] typeBytes = ByteArray.intToBytes(serializer.getType(), TLV_TYPE_F_LENGTH); - - final byte[] valueBytes = serializer.serializeTlv(tlv); - - final byte[] lengthBytes = ByteArray.intToBytes(valueBytes.length, TLV_LENGTH_F_LENGTH); - - final byte[] bytes = new byte[TLV_HEADER_LENGTH + valueBytes.length + getPadding(TLV_HEADER_LENGTH + valueBytes.length, PADDED_TO)]; - - int byteOffset = 0; - System.arraycopy(typeBytes, 0, bytes, byteOffset, TLV_TYPE_F_LENGTH); - byteOffset += TLV_TYPE_F_LENGTH; - System.arraycopy(lengthBytes, 0, bytes, byteOffset, TLV_LENGTH_F_LENGTH); - byteOffset += TLV_LENGTH_F_LENGTH; - System.arraycopy(valueBytes, 0, bytes, byteOffset, valueBytes.length); - return bytes; + Preconditions.checkNotNull(tlv, "PCEP TLV is mandatory."); + LOG.trace("Serializing PCEP TLV {}", tlv); + final byte[] ret = this.tlvReg.serializeTlv(tlv); + if (ret == null) { + LOG.warn("TLV serializer for type {} could not be found.", tlv); + } + LOG.trace("Serialized PCEP TLV {}.", Arrays.toString(ret)); + return ret; } protected void addTlv(final T builder, final Tlv tlv) { // FIXME: No TLVs by default, fallback to augments } - protected static int getPadding(final int length, final int padding) { + public static int getPadding(final int length, final int padding) { return (padding - (length % padding)) % padding; } } diff --git a/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/PCEPExtensionConsumerContext.java b/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/PCEPExtensionConsumerContext.java index fa01fb8ce4..14bdf51148 100644 --- a/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/PCEPExtensionConsumerContext.java +++ b/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/PCEPExtensionConsumerContext.java @@ -21,5 +21,5 @@ public interface PCEPExtensionConsumerContext { XROSubobjectRegistry getXROSubobjectHandlerRegistry(); - TlvHandlerRegistry getTlvHandlerRegistry(); + TlvRegistry getTlvHandlerRegistry(); } diff --git a/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/TlvHandlerRegistry.java b/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/TlvRegistry.java similarity index 74% rename from pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/TlvHandlerRegistry.java rename to pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/TlvRegistry.java index 24c296dec8..6631d34bd3 100644 --- a/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/TlvHandlerRegistry.java +++ b/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/TlvRegistry.java @@ -9,7 +9,7 @@ package org.opendaylight.protocol.pcep.spi; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv; -public interface TlvHandlerRegistry { - TlvParser getTlvParser(int tlvType); - TlvSerializer getTlvSerializer(Tlv tlv); +public interface TlvRegistry { + Tlv parseTlv(final int type, final byte[] buffer) throws PCEPDeserializerException; + byte[] serializeTlv(final Tlv tlv); } diff --git a/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimplePCEPExtensionProviderContext.java b/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimplePCEPExtensionProviderContext.java index a1d273451c..2ea209f0b4 100644 --- a/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimplePCEPExtensionProviderContext.java +++ b/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimplePCEPExtensionProviderContext.java @@ -25,7 +25,7 @@ import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext; import org.opendaylight.protocol.pcep.spi.RROSubobjectHandlerRegistry; import org.opendaylight.protocol.pcep.spi.RROSubobjectParser; import org.opendaylight.protocol.pcep.spi.RROSubobjectSerializer; -import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry; +import org.opendaylight.protocol.pcep.spi.TlvRegistry; import org.opendaylight.protocol.pcep.spi.TlvParser; import org.opendaylight.protocol.pcep.spi.TlvSerializer; import org.opendaylight.protocol.pcep.spi.XROSubobjectRegistry; @@ -48,7 +48,7 @@ public class SimplePCEPExtensionProviderContext implements PCEPExtensionProvider private final SimpleEROSubobjectHandlerRegistry eroSubReg = new SimpleEROSubobjectHandlerRegistry(); private final SimpleRROSubobjectHandlerRegistry rroSubReg = new SimpleRROSubobjectHandlerRegistry(); private final SimpleXROSubobjectRegistry xroSubReg = new SimpleXROSubobjectRegistry(); - private final SimpleTlvHandlerRegistry tlvReg = new SimpleTlvHandlerRegistry(); + private final SimpleTlvRegistry tlvReg = new SimpleTlvRegistry(); @Override public final LabelHandlerRegistry getLabelHandlerRegistry() { @@ -81,7 +81,7 @@ public class SimplePCEPExtensionProviderContext implements PCEPExtensionProvider } @Override - public final TlvHandlerRegistry getTlvHandlerRegistry() { + public final TlvRegistry getTlvHandlerRegistry() { return this.tlvReg; } diff --git a/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimpleTlvHandlerRegistry.java b/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimpleTlvRegistry.java similarity index 64% rename from pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimpleTlvHandlerRegistry.java rename to pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimpleTlvRegistry.java index 9a08f79921..7f8462ad50 100644 --- a/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimpleTlvHandlerRegistry.java +++ b/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimpleTlvRegistry.java @@ -8,8 +8,9 @@ package org.opendaylight.protocol.pcep.spi.pojo; import org.opendaylight.protocol.concepts.HandlerRegistry; -import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry; +import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException; import org.opendaylight.protocol.pcep.spi.TlvParser; +import org.opendaylight.protocol.pcep.spi.TlvRegistry; import org.opendaylight.protocol.pcep.spi.TlvSerializer; import org.opendaylight.protocol.util.Values; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv; @@ -20,7 +21,8 @@ import com.google.common.base.Preconditions; /** * */ -public final class SimpleTlvHandlerRegistry implements TlvHandlerRegistry { +public final class SimpleTlvRegistry implements TlvRegistry { + private final HandlerRegistry handlers = new HandlerRegistry<>(); public AutoCloseable registerTlvParser(final int tlvType, final TlvParser parser) { @@ -33,12 +35,21 @@ public final class SimpleTlvHandlerRegistry implements TlvHandlerRegistry { } @Override - public TlvParser getTlvParser(final int tlvType) { - return this.handlers.getParser(tlvType); + public Tlv parseTlv(final int type, final byte[] buffer) throws PCEPDeserializerException { + Preconditions.checkArgument(type >= 0 && type <= Values.UNSIGNED_SHORT_MAX_VALUE); + final TlvParser parser = this.handlers.getParser(type); + if (parser == null) { + return null; + } + return parser.parseTlv(buffer); } @Override - public TlvSerializer getTlvSerializer(final Tlv tlv) { - return this.handlers.getSerializer(tlv.getImplementedInterface()); + public byte[] serializeTlv(final Tlv tlv) { + final TlvSerializer serializer = this.handlers.getSerializer(tlv.getImplementedInterface()); + if (serializer == null) { + return null; + } + return serializer.serializeTlv(tlv); } } -- 2.36.6