Simplify code using Java 8 features
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / databroker / AbstractDOMBroker.java
index e3b1c3039bfd92d926cd8129e92ede1d95796dea..9905893f9f550b05279ccb4bb2c4e2412ff9843b 100644 (file)
@@ -10,8 +10,9 @@ package org.opendaylight.controller.cluster.databroker;
 
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMap.Builder;
+import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.collect.ImmutableClassToInstanceMap;
+import com.google.common.collect.ImmutableClassToInstanceMap.Builder;
 import java.util.EnumMap;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicLong;
@@ -39,13 +40,14 @@ public abstract class AbstractDOMBroker extends AbstractDOMTransactionFactory<DO
 
     private final AtomicLong txNum = new AtomicLong();
     private final AtomicLong chainNum = new AtomicLong();
-    private final Map<Class<? extends DOMDataBrokerExtension>, DOMDataBrokerExtension> extensions;
+    private final ClassToInstanceMap<DOMDataBrokerExtension> extensions;
+
     private volatile AutoCloseable closeable;
 
     protected AbstractDOMBroker(final Map<LogicalDatastoreType, DOMStore> datastores) {
         super(datastores);
 
-        Builder<Class<? extends DOMDataBrokerExtension>, DOMDataBrokerExtension> extBuilder = ImmutableMap.builder();
+        Builder<DOMDataBrokerExtension> extBuilder = ImmutableClassToInstanceMap.builder();
         if (isSupported(datastores, DOMStoreTreeChangePublisher.class)) {
             extBuilder.put(DOMDataTreeChangeService.class, new DOMDataTreeChangeService() {
                 @Override
@@ -62,7 +64,7 @@ public abstract class AbstractDOMBroker extends AbstractDOMTransactionFactory<DO
             extBuilder.put(DOMDataTreeCommitCohortRegistry.class, new DOMDataTreeCommitCohortRegistry() {
                 @Override
                 public <T extends DOMDataTreeCommitCohort> DOMDataTreeCommitCohortRegistration<T> registerCommitCohort(
-                        DOMDataTreeIdentifier path, T cohort) {
+                        final DOMDataTreeIdentifier path, final T cohort) {
                     DOMStore store = getDOMStore(path.getDatastoreType());
                     return ((DOMDataTreeCommitCohortRegistry) store).registerCommitCohort(path, cohort);
                 }
@@ -72,15 +74,9 @@ public abstract class AbstractDOMBroker extends AbstractDOMTransactionFactory<DO
         extensions = extBuilder.build();
     }
 
-    private static boolean isSupported(Map<LogicalDatastoreType, DOMStore> datastores,
-            Class<?> expDOMStoreInterface) {
-        for (DOMStore ds : datastores.values()) {
-            if (!expDOMStoreInterface.isAssignableFrom(ds.getClass())) {
-                return false;
-            }
-        }
-
-        return true;
+    private static boolean isSupported(final Map<LogicalDatastoreType, DOMStore> datastores,
+            final Class<?> expDOMStoreInterface) {
+        return datastores.values().stream().allMatch(expDOMStoreInterface::isInstance);
     }
 
     public void setCloseable(final AutoCloseable closeable) {
@@ -107,7 +103,7 @@ public abstract class AbstractDOMBroker extends AbstractDOMTransactionFactory<DO
     }
 
     @Override
-    public Map<Class<? extends DOMDataBrokerExtension>, DOMDataBrokerExtension> getSupportedExtensions() {
+    public ClassToInstanceMap<DOMDataBrokerExtension> getExtensions() {
         return extensions;
     }