diff options
5 files changed, 131 insertions, 181 deletions
diff --git a/feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockingProperties.java b/feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockingProperties.java index 97ba3b10..b82f4b00 100644 --- a/feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockingProperties.java +++ b/feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockingProperties.java @@ -20,26 +20,25 @@ package org.onap.policy.distributed.locking; import java.util.Properties; - import org.onap.policy.common.utils.properties.PropertyConfiguration; import org.onap.policy.common.utils.properties.exception.PropertyException; -public class DistributedLockingProperties extends PropertyConfiguration{ - - /** +public class DistributedLockingProperties extends PropertyConfiguration { + + /** * Feature properties all begin with this prefix. */ public static final String PREFIX = "distributed.locking."; - - public static final String DB_DRIVER = "javax.persistence.jdbc.driver"; - public static final String DB_URL = "javax.persistence.jdbc.url"; - public static final String DB_USER = "javax.persistence.jdbc.user"; - public static final String DB_PWD = "javax.persistence.jdbc.password"; - public static final String AGING_PROPERTY = PREFIX + "lock.aging"; - public static final String HEARTBEAT_INTERVAL_PROPERTY = PREFIX + "heartbeat.interval"; - - /** + + public static final String DB_DRIVER = "javax.persistence.jdbc.driver"; + public static final String DB_URL = "javax.persistence.jdbc.url"; + public static final String DB_USER = "javax.persistence.jdbc.user"; + public static final String DB_PWD = "javax.persistence.jdbc.password"; + public static final String AGING_PROPERTY = PREFIX + "lock.aging"; + public static final String HEARTBEAT_INTERVAL_PROPERTY = PREFIX + "heartbeat.interval"; + + /** * Properties from which this was constructed. */ private Properties source; @@ -49,31 +48,31 @@ public class DistributedLockingProperties extends PropertyConfiguration{ */ @Property(name = DB_DRIVER) private String dbDriver; - + /** * Database url */ @Property(name = DB_URL) private String dbUrl; - + /** * Database user */ @Property(name = DB_USER) private String dbUser; - + /** * Database password */ @Property(name = DB_PWD) private String dbPwd; - + /** * Used to set expiration time for lock. */ @Property(name = AGING_PROPERTY, defaultValue = "300000") private long agingProperty; - + /** * Indicates intervals at which we refresh locks. */ @@ -81,43 +80,73 @@ public class DistributedLockingProperties extends PropertyConfiguration{ private long heartBeatIntervalProperty; public DistributedLockingProperties(Properties props) throws PropertyException { - super(props); - source = props; + super(props); + source = props; + } + + + public Properties getSource() { + return source; + } + + + public String getDbDriver() { + return dbDriver; + } + + + public String getDbUrl() { + return dbUrl; + } + + + public String getDbUser() { + return dbUser; + } + + + public String getDbPwd() { + return dbPwd; + } + + + public long getAgingProperty() { + return agingProperty; } - public Properties getSource() { - return source; - } + public long getHeartBeatIntervalProperty() { + return heartBeatIntervalProperty; + } - public String getDbDriver() { - return dbDriver; - } + public void setDbDriver(String dbDriver) { + this.dbDriver = dbDriver; + } - public String getDbUrl() { - return dbUrl; - } + public void setDbUrl(String dbUrl) { + this.dbUrl = dbUrl; + } - public String getDbUser() { - return dbUser; - } + public void setDbUser(String dbUser) { + this.dbUser = dbUser; + } - public String getDbPwd() { - return dbPwd; - } + public void setDbPwd(String dbPwd) { + this.dbPwd = dbPwd; + } - public long getAgingProperty() { - return agingProperty; - } + public void setAgingProperty(long agingProperty) { + this.agingProperty = agingProperty; + } - public long getHeartBeatIntervalProperty() { - return heartBeatIntervalProperty; - } + public void setHeartBeatIntervalProperty(long heartBeatIntervalProperty) { + this.heartBeatIntervalProperty = heartBeatIntervalProperty; + } } diff --git a/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/PoolingFeature.java b/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/PoolingFeature.java index 67cb21ee..d42b8de1 100644 --- a/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/PoolingFeature.java +++ b/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/PoolingFeature.java @@ -149,7 +149,9 @@ public class PoolingFeature implements PolicyEngineFeatureAPI, PolicyControllerF String name = controller.getName(); - if (FeatureEnabledChecker.isFeatureEnabled(featProps, name, PoolingProperties.FEATURE_ENABLED)) { + SpecProperties specProps = new SpecProperties(PoolingProperties.PREFIX, name, featProps); + + if (FeatureEnabledChecker.isFeatureEnabled(specProps, PoolingProperties.FEATURE_ENABLED)) { try { // get & validate the properties PoolingProperties props = new PoolingProperties(name, featProps); diff --git a/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/PoolingProperties.java b/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/PoolingProperties.java index 54319423..ad118727 100644 --- a/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/PoolingProperties.java +++ b/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/PoolingProperties.java @@ -38,6 +38,12 @@ public class PoolingProperties extends SpecPropertyConfiguration { * Feature properties all begin with this prefix. */ public static final String PREFIX = "pooling."; + + /* + * These properties are not used by a SpecPropertyConfiguration, thus + * they do not use any of the "{xxx}" forms. + */ + public static final String FEATURE_ENABLED = PREFIX + "enabled"; /* * These properties REQUIRE a controller name, thus they use the "{$}" form. @@ -48,7 +54,6 @@ public class PoolingProperties extends SpecPropertyConfiguration { * These properties allow the controller name to be left out, thus they use * the "{prefix?suffix}" form. */ - public static final String FEATURE_ENABLED = PREFIX + "{?.}enabled"; public static final String OFFLINE_LIMIT = PREFIX + "{?.}offline.queue.limit"; public static final String OFFLINE_AGE_MS = PREFIX + "{?.}offline.queue.age.milliseconds"; public static final String OFFLINE_PUB_WAIT_MS = PREFIX + "{?.}offline.publish.wait.milliseconds"; @@ -186,4 +191,40 @@ public class PoolingProperties extends SpecPropertyConfiguration { public long getInterHeartbeatMs() { return interHeartbeatMs; } + + public void setPoolingTopic(String poolingTopic) { + this.poolingTopic = poolingTopic; + } + + public void setOfflineLimit(int offlineLimit) { + this.offlineLimit = offlineLimit; + } + + public void setOfflineAgeMs(long offlineAgeMs) { + this.offlineAgeMs = offlineAgeMs; + } + + public void setOfflinePubWaitMs(long offlinePubWaitMs) { + this.offlinePubWaitMs = offlinePubWaitMs; + } + + public void setStartHeartbeatMs(long startHeartbeatMs) { + this.startHeartbeatMs = startHeartbeatMs; + } + + public void setReactivateMs(long reactivateMs) { + this.reactivateMs = reactivateMs; + } + + public void setIdentificationMs(long identificationMs) { + this.identificationMs = identificationMs; + } + + public void setActiveHeartbeatMs(long activeHeartbeatMs) { + this.activeHeartbeatMs = activeHeartbeatMs; + } + + public void setInterHeartbeatMs(long interHeartbeatMs) { + this.interHeartbeatMs = interHeartbeatMs; + } } diff --git a/policy-core/src/main/java/org/onap/policy/drools/util/FeatureEnabledChecker.java b/policy-core/src/main/java/org/onap/policy/drools/util/FeatureEnabledChecker.java index 800b6e89..e604c30a 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/util/FeatureEnabledChecker.java +++ b/policy-core/src/main/java/org/onap/policy/drools/util/FeatureEnabledChecker.java @@ -20,17 +20,10 @@ package org.onap.policy.drools.util; -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; import java.util.Properties; -import org.onap.policy.common.utils.properties.SpecPropertyConfiguration; -import org.onap.policy.common.utils.properties.exception.PropertyException; /** - * Checks whether or not a feature is enabled. The name of the "enable" property - * is assumed to be of the form accepted by a {@link SpecPropertyConfiguration}, - * which contains a substitution place-holder into which a "specializer" (e.g., - * controller or session name) is substituted. + * Checks whether or not a feature is enabled. */ public class FeatureEnabledChecker { @@ -42,101 +35,15 @@ public class FeatureEnabledChecker { } /** - * Determines if a feature is enabled for a particular specializer. + * Determines if a feature is enabled. * * @param props properties from which to extract the "enabled" flag - * @param specializer specializer to be substituted into the property name - * when extracting * @param propName the name of the "enabled" property - * @return {@code true} if the feature is enabled, or {@code false} if it is - * not enabled (or if the property doesn't exist) - * @throws IllegalArgumentException if the "enabled" property is not a - * boolean value + * @return {@code true} if the feature is enabled, or {@code false} if it is not + * enabled (or if the property doesn't exist) */ - public static boolean isFeatureEnabled(Properties props, String specializer, String propName) { - - try { - return new Config(specializer, props, propName).isEnabled(); - - } catch (PropertyException e) { - throw new IllegalArgumentException("cannot check property " + propName, e); - } + public static boolean isFeatureEnabled(Properties props, String propName) { + String val = props.getProperty(propName); + return (val != null ? Boolean.valueOf(val) : false); } - - - /** - * Configuration used to extract the value. - */ - private static class Config extends SpecPropertyConfiguration { - - /** - * There is a bit of trickery here. This annotation is just a - * place-holder to get the superclass to invoke the - * {@link #setValue(java.lang.reflect.Field, Properties, Property) - * setValue()} method. When that's invoked, we'll substitute - * {@link #propOverride} instead of this annotation. - */ - @Property(name = "feature-enabled-property-place-holder") - private boolean enabled; - - /** - * Annotation that will actually be used to set the field. - */ - private Property propOverride; - - /** - * - * @param specializer specializer to be substituted into the property - * name when extracting - * @param props properties from which to extract the "enabled" flag - * @param propName the name of the "enabled" property - * @throws PropertyException if an error occurs - */ - public Config(String specializer, Properties props, String propName) throws PropertyException { - super(specializer); - - propOverride = new Property() { - - @Override - public String name() { - return propName; - } - - @Override - public String defaultValue() { - // feature is disabled by default - return "false"; - } - - @Override - public String accept() { - return ""; - } - - @Override - public Class<? extends Annotation> annotationType() { - return Property.class; - } - }; - - setAllFields(props); - } - - /** - * Substitutes {@link #propOverride} for "prop". - */ - @Override - protected boolean setValue(Field field, Properties props, Property prop) throws PropertyException { - return super.setValue(field, props, propOverride); - } - - /** - * - * @return {@code true} if the feature is enabled, {@code false} - * otherwise - */ - public boolean isEnabled() { - return enabled; - } - }; } diff --git a/policy-core/src/test/java/org/onap/policy/drools/util/FeatureEnabledCheckerTest.java b/policy-core/src/test/java/org/onap/policy/drools/util/FeatureEnabledCheckerTest.java index 3bb135fe..cd79592f 100644 --- a/policy-core/src/test/java/org/onap/policy/drools/util/FeatureEnabledCheckerTest.java +++ b/policy-core/src/test/java/org/onap/policy/drools/util/FeatureEnabledCheckerTest.java @@ -22,64 +22,35 @@ package org.onap.policy.drools.util; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import static org.onap.policy.common.utils.properties.SpecPropertyConfiguration.generalize; -import static org.onap.policy.common.utils.properties.SpecPropertyConfiguration.specialize; import java.util.Properties; import org.junit.Test; -import org.onap.policy.drools.util.FeatureEnabledChecker; public class FeatureEnabledCheckerTest { - private static final String PROP_NAME = "enable.{?.}it"; - - private static final String SPEC = "my.specializer"; + private static final String PROP_NAME = "enable.it"; @Test public void test() { - assertFalse(check(null, null)); - assertTrue(check(null, true)); - assertFalse(check(null, false)); - - assertTrue(check(true, null)); - assertTrue(check(true, true)); - assertFalse(check(true, false)); - - assertFalse(check(false, null)); - assertTrue(check(false, true)); - assertFalse(check(false, false)); - } - - @Test(expected = IllegalArgumentException.class) - public void test_ArgEx() { - - // check case where there's an exception in the property - Properties props = new Properties(); - props.setProperty(generalize(PROP_NAME), "invalid-boolean"); - - assertFalse(FeatureEnabledChecker.isFeatureEnabled(props, SPEC, PROP_NAME)); + assertFalse(check(null)); + assertTrue(check(true)); + assertFalse(check(false)); } /** * Adds properties, as specified, and checks if the feature is enabled. * - * @param wantGen value to assign to the generalized property, or - * {@code null} to leave it unset - * @param wantSpec value to assign to the specialized property, or + * @param want value to assign to the specialized property, or * {@code null} to leave it unset * @return {@code true} if the feature is enabled, {@code false} otherwise */ - public boolean check(Boolean wantGen, Boolean wantSpec) { + public boolean check(Boolean want) { Properties props = new Properties(); - if (wantGen != null) { - props.setProperty(generalize(PROP_NAME), wantGen.toString()); - } - - if (wantSpec != null) { - props.setProperty(specialize(PROP_NAME, SPEC), wantSpec.toString()); + if (want != null) { + props.setProperty(PROP_NAME, want.toString()); } - return FeatureEnabledChecker.isFeatureEnabled(props, SPEC, PROP_NAME); + return FeatureEnabledChecker.isFeatureEnabled(props, PROP_NAME); } } |