Split out sal-distributed-eos
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / entityownership / selectionstrategy / EntityOwnerSelectionStrategyConfig.java
diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/selectionstrategy/EntityOwnerSelectionStrategyConfig.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/selectionstrategy/EntityOwnerSelectionStrategyConfig.java
deleted file mode 100644 (file)
index a5ffc49..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.HashMap;
-import java.util.Map;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * FIXME: this is simple registry service, except it also loads classes.
- */
-public final class EntityOwnerSelectionStrategyConfig {
-    private static final Logger LOG = LoggerFactory.getLogger(EntityOwnerSelectionStrategyConfig.class);
-    private final Map<String, StrategyInfo> entityTypeToStrategyInfo = new HashMap<>();
-    private final Map<String, EntityOwnerSelectionStrategy> entityTypeToOwnerSelectionStrategy = new HashMap<>();
-
-    private EntityOwnerSelectionStrategyConfig() {
-
-    }
-
-    public boolean isStrategyConfigured(final String entityType) {
-        return entityTypeToStrategyInfo.get(entityType) != null;
-    }
-
-    public EntityOwnerSelectionStrategy createStrategy(final String entityType,
-            final Map<String, Long> initialStatistics) {
-        final EntityOwnerSelectionStrategy strategy;
-        final EntityOwnerSelectionStrategy existingStrategy = entityTypeToOwnerSelectionStrategy.get(entityType);
-        if (existingStrategy != null) {
-            strategy = existingStrategy;
-        } else {
-            EntityOwnerSelectionStrategyConfig.StrategyInfo strategyInfo = entityTypeToStrategyInfo.get(entityType);
-            if (strategyInfo == null) {
-                strategy = FirstCandidateSelectionStrategy.INSTANCE;
-            } else {
-                strategy = strategyInfo.createStrategy(initialStatistics);
-            }
-            entityTypeToOwnerSelectionStrategy.put(entityType, strategy);
-        }
-        return strategy;
-    }
-
-    /**
-     * This class should not exist. It contains a single long, which is passed to the constructor (via reflection).
-     * We are getting that information from a BundleContext. We are running in OSGi environment, hence this class
-     * needs to be deployed in its own bundle, with its own configuration.
-     * If this is used internally, it needs to be relocated into a separate package along with the implementation
-     * using it.
-     *
-     * @deprecated FIXME: THIS IS CONFIGURATION FOR A CUSTOM-LOADED CLASS CONSTRUCTOR
-     */
-    @Deprecated
-    public void clearStrategies() {
-        entityTypeToOwnerSelectionStrategy.clear();
-    }
-
-    private static final class StrategyInfo {
-        private final Class<? extends EntityOwnerSelectionStrategy> strategyClass;
-        private final long delay;
-
-        private StrategyInfo(final Class<? extends EntityOwnerSelectionStrategy> strategyClass, final long delay) {
-            this.strategyClass = strategyClass;
-            this.delay = delay;
-        }
-
-        public EntityOwnerSelectionStrategy createStrategy(final Map<String, Long> initialStatistics) {
-            try {
-                return strategyClass.getDeclaredConstructor(long.class, Map.class)
-                        .newInstance(delay, initialStatistics);
-            } catch (InstantiationException | IllegalAccessException | InvocationTargetException
-                    | NoSuchMethodException e) {
-                LOG.warn("could not create custom strategy", e);
-            }
-            return FirstCandidateSelectionStrategy.INSTANCE;
-        }
-    }
-
-    public static Builder newBuilder() {
-        return new Builder(new EntityOwnerSelectionStrategyConfig());
-    }
-
-    public static final class Builder {
-        private final EntityOwnerSelectionStrategyConfig config;
-
-        Builder(final EntityOwnerSelectionStrategyConfig config) {
-            this.config = config;
-        }
-
-        public Builder addStrategy(final String entityType,
-                final Class<? extends EntityOwnerSelectionStrategy> strategy, final long delay) {
-            config.entityTypeToStrategyInfo.put(entityType, new StrategyInfo(strategy, delay));
-            return this;
-        }
-
-        public EntityOwnerSelectionStrategyConfig build() {
-            return this.config;
-        }
-    }
-}