From 81c69dc6783394fb57663efa58e127bacf3bcbf8 Mon Sep 17 00:00:00 2001 From: Michal Polkorab Date: Tue, 22 Jul 2014 14:25:27 +0200 Subject: [PATCH] Added warn log on same key registration Change-Id: I7a42f674fa1e2fa4c027a480884ba785b6264646 Signed-off-by: Michal Polkorab --- .../api/extensibility/DeserializerRegistry.java | 8 +++++++- .../protocol/api/extensibility/SerializerRegistry.java | 6 ++++++ .../impl/deserialization/DeserializerRegistryImpl.java | 10 +++++++++- .../impl/serialization/SerializerRegistryImpl.java | 10 +++++++++- 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerRegistry.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerRegistry.java index 4afa95ae..26ac8c8b 100644 --- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerRegistry.java +++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerRegistry.java @@ -27,7 +27,13 @@ public interface DeserializerRegistry { SERIALIZER_TYPE getDeserializer(MessageCodeKey key); /** - * Registers deserializer + * Registers deserializer. + * Throws IllegalStateException when there is + * a deserializer already registered under given key. + * + * If the deserializer implements {@link DeserializerRegistryInjector} interface, + * the deserializer is injected with DeserializerRegistry instance. + * * @param key used for deserializer lookup * @param deserializer deserializer instance */ diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerRegistry.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerRegistry.java index bf25a609..388338e2 100644 --- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerRegistry.java +++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerRegistry.java @@ -31,6 +31,12 @@ public interface SerializerRegistry { /** * Registers serializer + * Throws IllegalStateException when there is + * a serializer already registered under given key. + * + * If the serializer implements {@link SerializerRegistryInjector} interface, + * the serializer is injected with SerializerRegistry instance. + * * @param key used for serializer lookup * @param serializer serializer implementation */ diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializerRegistryImpl.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializerRegistryImpl.java index a1efd1dc..9709d6fa 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializerRegistryImpl.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializerRegistryImpl.java @@ -20,6 +20,8 @@ import org.opendaylight.openflowjava.protocol.impl.util.MatchDeserializer; import org.opendaylight.openflowjava.protocol.impl.util.OF10MatchDeserializer; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.grouping.Match; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.v10.grouping.MatchV10; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Stores and registers deserializers @@ -27,6 +29,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.matc */ public class DeserializerRegistryImpl implements DeserializerRegistry { + private static final Logger LOGGER = LoggerFactory.getLogger(DeserializerRegistryImpl.class); private Map registry; /** @@ -70,10 +73,15 @@ public class DeserializerRegistryImpl implements DeserializerRegistry { if ((key == null) || (deserializer == null)) { throw new IllegalArgumentException("MessageCodeKey or Deserializer is null"); } + OFGeneralDeserializer desInRegistry = registry.put(key, deserializer); + if (desInRegistry != null) { + LOGGER.warn("Deserializer for key " + key + " overwritten. Old deserializer: " + + desInRegistry.getClass().getName() + ", new deserializer: " + + deserializer.getClass().getName() ); + } if (deserializer instanceof DeserializerRegistryInjector) { ((DeserializerRegistryInjector) deserializer).injectDeserializerRegistry(this); } - registry.put(key, deserializer); } @Override diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializerRegistryImpl.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializerRegistryImpl.java index e8a02bd7..fe2c4cf6 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializerRegistryImpl.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializerRegistryImpl.java @@ -20,6 +20,8 @@ import org.opendaylight.openflowjava.protocol.impl.util.OF10MatchSerializer; import org.opendaylight.openflowjava.protocol.impl.util.OF13MatchSerializer; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.grouping.Match; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.v10.grouping.MatchV10; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Stores and handles serializers @@ -28,6 +30,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.matc */ public class SerializerRegistryImpl implements SerializerRegistry { + private static final Logger LOGGER = LoggerFactory.getLogger(SerializerRegistryImpl.class); private static final short OF10 = EncodeConstants.OF10_VERSION_ID; private static final short OF13 = EncodeConstants.OF13_VERSION_ID; private Map, OFGeneralSerializer> registry; @@ -74,10 +77,15 @@ public class SerializerRegistryImpl implements SerializerRegistry { if ((msgTypeKey == null) || (serializer == null)) { throw new IllegalArgumentException("MessageTypeKey or Serializer is null"); } + OFGeneralSerializer serInRegistry = registry.put(msgTypeKey, serializer); + if (serInRegistry != null) { + LOGGER.warn("Serializer for key " + msgTypeKey + " overwritten. Old serializer: " + + serInRegistry.getClass().getName() + ", new serializer: " + + serializer.getClass().getName() ); + } if (serializer instanceof SerializerRegistryInjector) { ((SerializerRegistryInjector) serializer).injectSerializerRegistry(this); } - registry.put(msgTypeKey, serializer); } @Override -- 2.36.6