From 81b45698f40ea592c27f57c6d183dbbb501fd1bf Mon Sep 17 00:00:00 2001 From: Keith Wall Date: Tue, 21 Oct 2014 10:22:24 +0000 Subject: QPID-6168: [Java Broker] Valid values check not to be applied for non mandatory fields where no value passed git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1633338 13f79535-47bb-0310-9956-ffa450edef68 --- .../server/model/AbstractConfiguredObject.java | 7 ++--- .../server/model/AbstractConfiguredObjectTest.java | 30 +++++++++++++++++++--- 2 files changed, 30 insertions(+), 7 deletions(-) (limited to 'qpid/java') diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java index bddda97f1b..9a1307c8dd 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java @@ -755,7 +755,7 @@ public abstract class AbstractConfiguredObject> im if (desiredValueOrDefault != null && !checkValidValues(autoAttr, desiredValueOrDefault)) { throw new IllegalConfigurationException("Attribute '" + autoAttr.getName() - + "' of instance of "+ getClass().getName() + + "' instance of "+ getClass().getName() + " named '" + getName() + "'" + " cannot have value '" + desiredValueOrDefault + "'" + ". Valid values are: " @@ -1544,10 +1544,11 @@ public abstract class AbstractConfiguredObject> im { Object desiredValue = autoAttr.getValue(proxyForValidation); - if (!checkValidValues(autoAttr, desiredValue)) + if ((autoAttr.isMandatory() || desiredValue != null) + && !checkValidValues(autoAttr, desiredValue)) { throw new IllegalConfigurationException("Attribute '" + autoAttr.getName() - + "' of instance of "+ getClass().getName() + + "' instance of "+ getClass().getName() + " named '" + getName() + "'" + " cannot have value '" + desiredValue + "'" + ". Valid values are: " diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AbstractConfiguredObjectTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AbstractConfiguredObjectTest.java index 3764461841..9e1669fb28 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AbstractConfiguredObjectTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AbstractConfiguredObjectTest.java @@ -99,11 +99,30 @@ public class AbstractConfiguredObjectTest extends QpidTestCase attributes.put(ConfiguredObject.NAME, objectName); attributes.put(TestRootCategory.DEFAULTED_VALUE, "override"); - TestRootCategory object2 = _model.getObjectFactory().create(TestRootCategory.class, + TestRootCategory object = _model.getObjectFactory().create(TestRootCategory.class, attributes); - assertEquals(objectName, object2.getName()); - assertEquals("override", object2.getDefaultedValue()); + assertEquals(objectName, object.getName()); + assertEquals("override", object.getDefaultedValue()); + + } + + public void testOverriddenDefaultedAttributeValueRevertedToDefault() + { + final String objectName = "myName"; + + Map attributes = new HashMap<>(); + attributes.put(ConfiguredObject.NAME, objectName); + attributes.put(TestRootCategory.DEFAULTED_VALUE, "override"); + + TestRootCategory object = _model.getObjectFactory().create(TestRootCategory.class, + attributes); + + assertEquals(objectName, object.getName()); + assertEquals("override", object.getDefaultedValue()); + + object.setAttributes(Collections.singletonMap(TestRootCategory.DEFAULTED_VALUE, null)); + assertEquals(TestRootCategory.DEFAULTED_VALUE_DEFAULT, object.getDefaultedValue()); } public void testEnumAttributeValueFromString() @@ -534,7 +553,7 @@ public class AbstractConfiguredObjectTest extends QpidTestCase TestRootCategory object = _model.getObjectFactory().create(TestRootCategory.class, legalCreateAttributes); assertEquals(TestRootCategory.VALID_VALUE1, object.getValidValue()); - object.setAttribute(TestRootCategory.VALID_VALUE, TestRootCategory.VALID_VALUE1, TestRootCategory.VALID_VALUE2); + object.setAttributes(Collections.singletonMap(TestRootCategory.VALID_VALUE,TestRootCategory.VALID_VALUE2)); assertEquals(TestRootCategory.VALID_VALUE2, object.getValidValue()); try @@ -549,6 +568,9 @@ public class AbstractConfiguredObjectTest extends QpidTestCase assertEquals(TestRootCategory.VALID_VALUE2, object.getValidValue()); + object.setAttributes(Collections.singletonMap(TestRootCategory.VALID_VALUE,null)); + assertNull(object.getValidValue()); + } public void testCreateEnforcesAttributeValidValuesWithSets() throws Exception -- cgit v1.2.1