You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by js...@apache.org on 2015/06/08 19:11:52 UTC
ambari git commit: AMBARI-11790. Remove all occurrences of a property
from a configuration hierarchy
Repository: ambari
Updated Branches:
refs/heads/trunk ce33632aa -> 6a9d590aa
AMBARI-11790. Remove all occurrences of a property from a configuration hierarchy
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/6a9d590a
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/6a9d590a
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/6a9d590a
Branch: refs/heads/trunk
Commit: 6a9d590aaeeb24045a62fa3780582dbb51a7521f
Parents: ce33632
Author: John Speidel <js...@hortonworks.com>
Authored: Mon Jun 8 11:19:38 2015 -0400
Committer: John Speidel <js...@hortonworks.com>
Committed: Mon Jun 8 13:11:27 2015 -0400
----------------------------------------------------------------------
.../ambari/server/topology/Configuration.java | 15 +++++--
.../server/topology/ConfigurationTest.java | 44 ++++++++++++++++----
2 files changed, 48 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/6a9d590a/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
index b7b9343..91b7736 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
@@ -248,6 +248,8 @@ public class Configuration {
/**
* Remove a property from the configuration hierarchy.
+ * All occurrences of the property are removed from the config hierarchy such that
+ * a subsequent call to getPropertyValue() for the removed property will return null.
*
* @param configType configuration type
* @param propertyName property name
@@ -257,10 +259,15 @@ public class Configuration {
*/
public String removeProperty(String configType, String propertyName) {
String previousValue = null;
- if (properties.containsKey(configType) && properties.get(configType).containsKey(propertyName)) {
- previousValue = properties.get(configType).remove(propertyName);
- } else if (parentConfiguration != null) {
- previousValue = parentConfiguration.removeProperty(configType, propertyName);
+ if (properties.containsKey(configType)) {
+ previousValue = properties.get(configType).remove(propertyName);
+ }
+
+ if (parentConfiguration != null) {
+ String parentPreviousValue = parentConfiguration.removeProperty(configType, propertyName);
+ if (previousValue == null) {
+ previousValue = parentPreviousValue;
+ }
}
return previousValue;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6a9d590a/ambari-server/src/test/java/org/apache/ambari/server/topology/ConfigurationTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ConfigurationTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ConfigurationTest.java
index 1b9734e..9bab88f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ConfigurationTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ConfigurationTest.java
@@ -26,6 +26,7 @@ import java.util.Map;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
/**
@@ -104,7 +105,7 @@ public class ConfigurationTest {
@Test
public void testGetFullProperties_withParent() {
- Configuration configuration = createConfigurationWithParentsPropsOnly();
+ Configuration configuration = createConfigurationWithParents_PropsOnly();
// get prop maps prior to calling getFullProperties
Map<String, Map<String, String>> leafProperties = configuration.getProperties();
Map<String, Map<String, String>> parentProperties = configuration.getParentConfiguration().getProperties();
@@ -157,7 +158,7 @@ public class ConfigurationTest {
@Test
public void testGetFullProperties_withParent_specifyDepth() {
- Configuration configuration = createConfigurationWithParentsPropsOnly();
+ Configuration configuration = createConfigurationWithParents_PropsOnly();
// get prop maps prior to calling getFullProperties
Map<String, Map<String, String>> leafProperties = configuration.getProperties();
Map<String, Map<String, String>> parentProperties = configuration.getParentConfiguration().getProperties();
@@ -226,7 +227,7 @@ public class ConfigurationTest {
@Test
public void testGetFullAttributes_withParent() {
- Configuration configuration = createConfigurationWithParentsAttributesOnly();
+ Configuration configuration = createConfigurationWithParents_AttributesOnly();
Map<String, Map<String, Map<String, String>>> leafAttributes = configuration.getAttributes();
Map<String, Map<String, Map<String, String>>> parentAttributes = configuration.getParentConfiguration().getAttributes();
Map<String, Map<String, Map<String, String>>> parentParentAttributes = configuration.getParentConfiguration().getParentConfiguration().getAttributes();
@@ -296,7 +297,7 @@ public class ConfigurationTest {
@Test
public void testGetPropertyValue() {
- Configuration configuration = createConfigurationWithParentsPropsOnly();
+ Configuration configuration = createConfigurationWithParents_PropsOnly();
assertEquals("val1.3", configuration.getPropertyValue("type1", "prop1"));
assertEquals("val2.2", configuration.getPropertyValue("type1", "prop2"));
@@ -306,13 +307,14 @@ public class ConfigurationTest {
assertEquals("val6.2", configuration.getPropertyValue("type1", "prop6"));
assertEquals("val7.3", configuration.getPropertyValue("type3", "prop7"));
assertEquals("val8.2", configuration.getPropertyValue("type3", "prop8"));
+ assertEquals("val9.3", configuration.getPropertyValue("type1", "prop9"));
assertEquals("val10.3", configuration.getPropertyValue("type4", "prop10"));
assertEquals("val11.3", configuration.getPropertyValue("type4", "prop11"));
}
@Test
public void testGetAttributeValue() {
- Configuration configuration = createConfigurationWithParentsAttributesOnly();
+ Configuration configuration = createConfigurationWithParents_AttributesOnly();
assertEquals("val1.3", configuration.getAttributeValue("type1", "prop1", "attribute1"));
assertEquals("val2.2", configuration.getAttributeValue("type1", "prop2", "attribute1"));
@@ -329,7 +331,35 @@ public class ConfigurationTest {
assertEquals("val101.1", configuration.getAttributeValue("type2", "prop101", "attribute101"));
}
- private Configuration createConfigurationWithParentsPropsOnly() {
+ @Test
+ public void testRemoveProperty() {
+ Configuration configuration = createConfigurationWithParents_PropsOnly();
+ // property only exists in root level config
+ assertEquals("val3.1", configuration.removeProperty("type1", "prop3"));
+ assertNull(configuration.getPropertyValue("type1", "prop3"));
+
+ // property only exists in configuration instance
+ assertEquals("val9.3", configuration.removeProperty("type1", "prop9"));
+ assertNull(configuration.getPropertyValue("type1", "prop9"));
+
+ // property at multiple levels
+ assertEquals("val1.3", configuration.removeProperty("type1", "prop1"));
+ assertNull(configuration.getPropertyValue("type1", "prop1"));
+
+ assertEquals("val4.3", configuration.removeProperty("type2", "prop4"));
+ assertNull(configuration.getPropertyValue("type2", "prop4"));
+
+ assertEquals("val2.2", configuration.removeProperty("type1", "prop2"));
+ assertNull(configuration.getPropertyValue("type1", "prop2"));
+
+ // type and property don't exist
+ assertNull(configuration.getPropertyValue("typeXXX", "XXXXX"));
+
+ // type exists but property doesn't
+ assertNull(configuration.getPropertyValue("type1", "XXXXX"));
+ }
+
+ private Configuration createConfigurationWithParents_PropsOnly() {
// parents parent config properties
Map<String, Map<String, String>> parentParentProperties = new HashMap<String, Map<String, String>>();
Map<String, String> parentParentTypeProperties1 = new HashMap<String, String>();
@@ -378,7 +408,7 @@ public class ConfigurationTest {
return new Configuration(properties, EMPTY_ATTRIBUTES, parentConfiguration);
}
- private Configuration createConfigurationWithParentsAttributesOnly() {
+ private Configuration createConfigurationWithParents_AttributesOnly() {
// parents parent config attributes.
Map<String, Map<String, Map<String, String>>> parentParentAttributes = new HashMap<String, Map<String, Map<String, String>>>();
Map<String, Map<String, String>> parentParentTypeAttributes1 = new HashMap<String, Map<String, String>>();