瀏覽代碼

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
Harsh J 12 年之前
父節點
當前提交
f868d9fc98

+ 2 - 0
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

+ 8 - 0
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<Map.Entry<String,String>>,
    * @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();
     }

+ 20 - 0
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[]{