From fd7593078cddbed63a8c68bc8f6352283a3fb849 Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Mon, 18 Jun 2018 14:40:05 -0400 Subject: 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 --- .../policy/drools/util/FeatureEnabledChecker.java | 107 ++------------------- .../drools/util/FeatureEnabledCheckerTest.java | 47 ++------- 2 files changed, 16 insertions(+), 138 deletions(-) (limited to 'policy-core') 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 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); } } -- cgit 1.2.3-korg