aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2018-06-18 14:40:05 -0400
committerJim Hahn <jrh3@att.com>2018-06-18 16:40:56 -0400
commitfd7593078cddbed63a8c68bc8f6352283a3fb849 (patch)
tree410c9bacff7f2b30a87a46804cd4e20c4b11396e
parentb706707b5f209f0b7332ecec3a949ac03e7016b9 (diff)
Add setXxx methods for @Property annotation
We'll be modifying the PropertyConfiguration class so that, instead of directly setting values in private fields, it will use public setXxx methods. Consequently, we have to add the setXxx methods to the PropertyConfiguration subclasses so that they're available when the superclass is modified policy/common. Change-Id: Idff9942eabec182670cbb427b960f6308a2ca30c Issue-ID: POLICY-906 Signed-off-by: Jim Hahn <jrh3@att.com>
-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);
}
}