فهرست منبع

commit 6d30f4cd994a53b5d11f02c1915f0a0cdc349170
Author: Yahoo\! <ltucker@yahoo-inc.com>
Date: Thu Sep 3 11:25:54 2009 -0700

HADOOP:6227 from http://issues.apache.org/jira/secure/attachment/12418242/patch-6227-ydist.txt


git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-security-patches@1076993 13f79535-47bb-0310-9956-ffa450edef68

Owen O'Malley 14 سال پیش
والد
کامیت
fa8de640ca
2فایلهای تغییر یافته به همراه35 افزوده شده و 11 حذف شده
  1. 13 10
      src/core/org/apache/hadoop/conf/Configuration.java
  2. 22 1
      src/test/org/apache/hadoop/conf/TestConfiguration.java

+ 13 - 10
src/core/org/apache/hadoop/conf/Configuration.java

@@ -1183,17 +1183,20 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
         }
         
         // Ignore this parameter if it has already been marked as 'final'
-        if (attr != null && value != null) {
-          if (!finalParameters.contains(attr)) {
-            properties.setProperty(attr, value);
-            if (storeResource) {
-              updatingResource.put(attr, name.toString());
-            }
-            if (finalParameter)
-              finalParameters.add(attr);
-          } else {
-            LOG.warn(name+":a attempt to override final parameter: "+attr
+        if (attr != null) {
+          if (value != null) {
+            if (!finalParameters.contains(attr)) {
+              properties.setProperty(attr, value);
+              if (storeResource) {
+                updatingResource.put(attr, name.toString());
+              }
+            } else {
+              LOG.warn(name+":a attempt to override final parameter: "+attr
                      +";  Ignoring.");
+            }
+          }
+          if (finalParameter) {
+            finalParameters.add(attr);
           }
         }
       }

+ 22 - 1
src/test/org/apache/hadoop/conf/TestConfiguration.java

@@ -104,7 +104,28 @@ public class TestConfiguration extends TestCase {
     assertTrue(conf.getInt("intvar", -1) == 42);
     assertTrue(conf.getInt("my.int", -1) == 42);
   }
-    
+
+  public void testFinalParam() throws IOException {
+    out=new BufferedWriter(new FileWriter(CONFIG));
+    startConfig();
+    declareProperty("my.var", "", "", true);
+    endConfig();
+    Path fileResource = new Path(CONFIG);
+    Configuration conf1 = new Configuration();
+    conf1.addResource(fileResource);
+    assertNull("my var is not null", conf1.get("my.var"));
+	
+    out=new BufferedWriter(new FileWriter(CONFIG2));
+    startConfig();
+    declareProperty("my.var", "myval", "myval", false);
+    endConfig();
+    fileResource = new Path(CONFIG2);
+
+    Configuration conf2 = new Configuration(conf1);
+    conf2.addResource(fileResource);
+    assertNull("my var is not final", conf2.get("my.var"));
+  }
+
   public static void assertEq(Object a, Object b) {
     System.out.println("assertEq: " + a + ", " + b);
     assertEquals(a, b);