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();
}
}
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;
@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;
}
}
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;
@Override
protected void removeRegistration() {
synchronized (lock) {
- candidates.remove(key, value);
+ MultiRegistry.this.candidates.remove(key, value);
updateCurrent(key);
}
}
public V get(final K key) {
return this.current.get(key);
}
+
+ public Iterable<V> getAllValues() {
+ return Iterables.unmodifiableIterable(this.current.values());
+ }
}