BUG-64 : reformat TlvRegistry, to skip using getType method.
[bgpcep.git] / 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 9a08f7992145e5b14f8f29e35de25964d872f7d6..7f8462ad50855d9b823ca3d7e18e340494dc0af5 100644 (file)
@@ -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<DataContainer, TlvParser, TlvSerializer> 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);
        }
 }