Migrate AbstractRegistration/AutoCloseable
[bgpcep.git] / bgp / parser-spi / src / main / java / org / opendaylight / protocol / bgp / parser / spi / pojo / SimpleCapabilityRegistry.java
index 71c33fcdb8c7447f854d1b7101bca800100562f9..66915e21590664d0d726d6889f27d4d7658cc3e2 100644 (file)
@@ -7,47 +7,49 @@
  */
 package org.opendaylight.protocol.bgp.parser.spi.pojo;
 
+import static com.google.common.base.Preconditions.checkArgument;
+
+import io.netty.buffer.ByteBuf;
 import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.BGPParsingException;
 import org.opendaylight.protocol.bgp.parser.spi.CapabilityParser;
 import org.opendaylight.protocol.bgp.parser.spi.CapabilityRegistry;
 import org.opendaylight.protocol.bgp.parser.spi.CapabilitySerializer;
 import org.opendaylight.protocol.concepts.HandlerRegistry;
-import org.opendaylight.protocol.util.Util;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.open.bgp.parameters.CParameters;
+import org.opendaylight.protocol.util.Values;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.optional.capabilities.CParameters;
+import org.opendaylight.yangtools.concepts.Registration;
 import org.opendaylight.yangtools.yang.binding.DataContainer;
-
-import com.google.common.base.Preconditions;
+import org.opendaylight.yangtools.yang.binding.DataObject;
 
 final class SimpleCapabilityRegistry implements CapabilityRegistry {
-       private final HandlerRegistry<DataContainer, CapabilityParser, CapabilitySerializer> handlers = new HandlerRegistry<>();
-
-       AutoCloseable registerCapabilityParser(final int messageType, final CapabilityParser parser) {
-               Preconditions.checkArgument(messageType >= 0 && messageType <= Util.UNSIGNED_BYTE_MAX_VALUE);
-               return this.handlers.registerParser(messageType, parser);
-       }
-
-       AutoCloseable registerCapabilitySerializer(final Class<? extends CParameters> paramClass, final CapabilitySerializer serializer) {
-               return this.handlers.registerSerializer(paramClass, serializer);
-       }
-
-       @Override
-       public CParameters parseCapability(final int type, final byte[] bytes) throws BGPDocumentedException, BGPParsingException {
-               final CapabilityParser parser = this.handlers.getParser(type);
-               if (parser == null) {
-                       return null;
-               }
-
-               return parser.parseCapability(bytes);
-       }
-
-       @Override
-       public byte[] serializeCapability(final CParameters capability) {
-               final CapabilitySerializer serializer = this.handlers.getSerializer(capability.getImplementedInterface());
-               if (serializer == null) {
-                       return null;
-               }
-
-               return serializer.serializeCapability(capability);
-       }
+    private final HandlerRegistry<DataContainer, CapabilityParser, CapabilitySerializer> handlers =
+            new HandlerRegistry<>();
+
+    Registration registerCapabilityParser(final int messageType, final CapabilityParser parser) {
+        checkArgument(messageType >= 0 && messageType <= Values.UNSIGNED_BYTE_MAX_VALUE);
+        return this.handlers.registerParser(messageType, parser);
+    }
+
+    Registration registerCapabilitySerializer(final Class<? extends DataObject> paramClass,
+            final CapabilitySerializer serializer) {
+        return this.handlers.registerSerializer(paramClass, serializer);
+    }
+
+    @Override
+    public CParameters parseCapability(final int type, final ByteBuf buffer) throws BGPDocumentedException,
+            BGPParsingException {
+        final CapabilityParser parser = this.handlers.getParser(type);
+        if (parser == null) {
+            return null;
+        }
+        return parser.parseCapability(buffer);
+    }
+
+    @Override
+    public void serializeCapability(final CParameters capability, final ByteBuf bytes) {
+        for (CapabilitySerializer s : this.handlers.getAllSerializers()) {
+            s.serializeCapability(capability, bytes);
+        }
+    }
 }