aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--feature-distributed-locking/src/main/java/org/onap/policy/distributed/locking/DistributedLockingProperties.java111
-rw-r--r--feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/PoolingFeature.java4
-rw-r--r--feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/PoolingProperties.java43
-rw-r--r--policy-core/src/main/java/org/onap/policy/drools/util/FeatureEnabledChecker.java107
-rw-r--r--policy-core/src/test/java/org/onap/policy/drools/util/FeatureEnabledCheckerTest.java47
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);
}
}