From f868d9fc98b01f33db41aeb00d1de699f4ba80ea Mon Sep 17 00:00:00 2001 From: Harsh J Date: Sun, 15 Jul 2012 15:17:30 +0000 Subject: [PATCH] Backport of HADOOP-8362 from trunk. svn merge -c 1361712 ../../trunk. (harsh) git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1361714 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop-common/CHANGES.txt | 2 ++ .../org/apache/hadoop/conf/Configuration.java | 8 ++++++++ .../apache/hadoop/conf/TestConfiguration.java | 20 +++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 667bbaae313..a6f7743822b 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -69,6 +69,8 @@ Release 2.0.1-alpha - UNRELEASED HADOOP-8541. Better high-percentile latency metrics. (Andrew Wang via atm) + HADOOP-8362. Improve exception message when Configuration.set() is called with a null key or value. (Madhukara Phatak and Suresh Srinivas via harsh) + BUG FIXES HADOOP-8372. NetUtils.normalizeHostName() incorrectly handles hostname diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java index 2cd99a956df..ab2c5ffc4f2 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java @@ -84,6 +84,7 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.Text; import org.xml.sax.SAXException; +import com.google.common.base.Preconditions; /** * Provides access to configuration parameters. @@ -775,8 +776,15 @@ public class Configuration implements Iterable>, * @param value property value. * @param source the place that this configuration value came from * (For debugging). + * @throws IllegalArgumentException when the value or name is null. */ public void set(String name, String value, String source) { + Preconditions.checkArgument( + name != null, + "Property name must not be null"); + Preconditions.checkArgument( + value != null, + "Property value must not be null"); if (deprecatedKeyMap.isEmpty()) { getProps(); } diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java index 259af28d2d3..b227badd2b9 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java @@ -1021,6 +1021,26 @@ public class TestConfiguration extends TestCase { assertTrue("Picked out wrong key " + key3, !res.containsKey(key3)); assertTrue("Picked out wrong key " + key4, !res.containsKey(key4)); } + + public void testSettingValueNull() throws Exception { + Configuration config = new Configuration(); + try { + config.set("testClassName", null); + fail("Should throw an IllegalArgumentException exception "); + } catch (Exception e) { + assertTrue(e instanceof IllegalArgumentException); + } + } + + public void testSettingKeyNull() throws Exception { + Configuration config = new Configuration(); + try { + config.set(null, "test"); + fail("Should throw an IllegalArgumentException exception "); + } catch (Exception e) { + assertTrue(e instanceof IllegalArgumentException); + } + } public static void main(String[] argv) throws Exception { junit.textui.TestRunner.main(new String[]{