X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fentityownership%2Fselectionstrategy%2FEntityOwnerSelectionStrategyConfig.java;h=c1ddab3c7d67aa351a38654351a93a34673e6d27;hb=e4bf29ae5e97f128471cbe3e93f807721f944d83;hp=298589ae0570f585461e0c50ed39d36571c17edb;hpb=3253c4174c87236130310a0c901dcad2416619dd;p=controller.git 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 index 298589ae05..c1ddab3c7d 100644 --- 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 @@ -14,20 +14,23 @@ import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class EntityOwnerSelectionStrategyConfig { +/** + * 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 entityTypeToStrategyInfo = new HashMap<>(); private final Map entityTypeToOwnerSelectionStrategy = new HashMap<>(); - private EntityOwnerSelectionStrategyConfig(){ + private EntityOwnerSelectionStrategyConfig() { } - public boolean isStrategyConfigured(String entityType){ + public boolean isStrategyConfigured(final String entityType) { return entityTypeToStrategyInfo.get(entityType) != null; } - public EntityOwnerSelectionStrategy createStrategy(String entityType){ + public EntityOwnerSelectionStrategy createStrategy(final String entityType) { final EntityOwnerSelectionStrategy strategy; final EntityOwnerSelectionStrategy existingStrategy = entityTypeToOwnerSelectionStrategy.get(entityType); if(existingStrategy != null){ @@ -42,19 +45,29 @@ public class EntityOwnerSelectionStrategyConfig { entityTypeToOwnerSelectionStrategy.put(entityType, strategy); } return strategy; - } + /** + * @deprecated FIXME: THIS IS CONFIGURATION FOR A CUSTOM-LOADED CLASS CONSTRUCTOR + * + * 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 private static final class StrategyInfo { private final Class strategyClass; private final long delay; - private StrategyInfo(Class strategyClass, long delay) { + private StrategyInfo(final Class strategyClass, final long delay) { this.strategyClass = strategyClass; this.delay = delay; } - public EntityOwnerSelectionStrategy createStrategy(){ + public EntityOwnerSelectionStrategy createStrategy() { try { return strategyClass.getDeclaredConstructor(long.class).newInstance(delay); } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { @@ -64,18 +77,18 @@ public class EntityOwnerSelectionStrategyConfig { } } - public static Builder newBuilder(){ + public static Builder newBuilder() { return new Builder(new EntityOwnerSelectionStrategyConfig()); } public static class Builder { private final EntityOwnerSelectionStrategyConfig config; - private Builder(EntityOwnerSelectionStrategyConfig config){ + private Builder(final EntityOwnerSelectionStrategyConfig config){ this.config = config; } - public Builder addStrategy(String entityType, Class strategy, long delay){ + public Builder addStrategy(final String entityType, final Class strategy, final long delay){ config.entityTypeToStrategyInfo.put(entityType, new StrategyInfo(strategy, delay)); return this; } @@ -84,5 +97,4 @@ public class EntityOwnerSelectionStrategyConfig { return this.config; } } - }