BUG 611 MultiRegistry and HandlerRegistry exposes collection of serializers 83/7683/9
authorMartin Bobak <mbobak@cisco.com>
Mon, 2 Jun 2014 12:51:17 +0000 (14:51 +0200)
committerMartin Bobak <mbobak@cisco.com>
Wed, 11 Jun 2014 09:57:24 +0000 (11:57 +0200)
Change-Id: I54225673c7f3d6ab253cf931a57606c2b5709cf9
Signed-off-by: Martin Bobak <mbobak@cisco.com>
concepts/src/main/java/org/opendaylight/protocol/concepts/HandlerRegistry.java
concepts/src/main/java/org/opendaylight/protocol/concepts/MultiRegistry.java

index e16cf9c854153f68d36b54f5c01437f1493e047f..a85f6dd528e901bd3bc9c26452177c2c38ede653 100644 (file)
@@ -15,18 +15,22 @@ public class HandlerRegistry<C, P, S> {
     private final MultiRegistry<Integer, P> parsers = new MultiRegistry<>();
 
     public AbstractRegistration registerParser(final int type, final P parser) {
-        return parsers.register(type, parser);
+        return this.parsers.register(type, parser);
     }
 
     public P getParser(final int type) {
-        return parsers.get(type);
+        return this.parsers.get(type);
     }
 
     public AbstractRegistration registerSerializer(final Class<? extends C> clazz, final S serializer) {
-        return serializers.register(clazz, serializer);
+        return this.serializers.register(clazz, serializer);
     }
 
     public S getSerializer(final Class<? extends C> clazz) {
-        return serializers.get(clazz);
+        return this.serializers.get(clazz);
+    }
+
+    public Iterable<S> getAllSerializers() {
+        return this.serializers.getAllValues();
     }
 }
index da4c3886cdc4d5855fb3bb585902a66fdd791aa8..61192f99bd56bb74acecd8f7b2341fd9afb55a2b 100644 (file)
@@ -8,15 +8,13 @@
 package org.opendaylight.protocol.concepts;
 
 import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.Iterables;
 import com.google.common.collect.ListMultimap;
-
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
-
 import javax.annotation.concurrent.GuardedBy;
 import javax.annotation.concurrent.ThreadSafe;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -40,11 +38,11 @@ public final class MultiRegistry<K, V> {
 
     @GuardedBy("this")
     private void updateCurrent(final K key) {
-        final List<V> values = candidates.get(key);
+        final List<V> values = this.candidates.get(key);
 
         // Simple case: no candidates
         if (values.isEmpty()) {
-            current.remove(key);
+            this.current.remove(key);
             return;
         }
 
@@ -63,11 +61,11 @@ public final class MultiRegistry<K, V> {
         }
 
         LOG.debug("New best value {}", best);
-        current.put(key, best);
+        this.current.put(key, best);
     }
 
     public synchronized AbstractRegistration register(final K key, final V value) {
-        candidates.put(key, value);
+        this.candidates.put(key, value);
         updateCurrent(key);
 
         final Object lock = this;
@@ -75,7 +73,7 @@ public final class MultiRegistry<K, V> {
             @Override
             protected void removeRegistration() {
                 synchronized (lock) {
-                    candidates.remove(key, value);
+                    MultiRegistry.this.candidates.remove(key, value);
                     updateCurrent(key);
                 }
             }
@@ -85,4 +83,8 @@ public final class MultiRegistry<K, V> {
     public V get(final K key) {
         return this.current.get(key);
     }
+
+    public Iterable<V> getAllValues() {
+        return Iterables.unmodifiableIterable(this.current.values());
+    }
 }