ソースを参照

HADOOP-3093. Adds Configuration.getStrings(name, default-value) and the corresponding setStrings. Contributed by Amareshwari Sriramadasu.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/core/trunk@643764 13f79535-47bb-0310-9956-ffa450edef68
Devaraj Das 17 年 前
コミット
72806c1ef7

+ 3 - 0
CHANGES.txt

@@ -173,6 +173,9 @@ Trunk (unreleased changes)
 
     HADOOP-1228.  Ant task to generate Eclipse project files.  (tomwhite)
 
+    HADOOP-3093. Adds Configuration.getStrings(name, default-value) and
+    the corresponding setStrings. (Amareshwari Sriramadasu via ddas)
+
   OPTIMIZATIONS
 
     HADOOP-2790.  Fixed inefficient method hasSpeculativeTask by removing

+ 30 - 0
src/java/org/apache/hadoop/conf/Configuration.java

@@ -540,6 +540,36 @@ public class Configuration implements Iterable<Map.Entry<String,String>> {
     return StringUtils.getStrings(valueString);
   }
 
+  /** 
+   * Get the comma delimited values of the <code>name</code> property as 
+   * an array of <code>String</code>s.  
+   * If no such property is specified then default value is returned.
+   * 
+   * @param name property name.
+   * @param defaultValue The default value
+   * @return property value as an array of <code>String</code>s, 
+   *         or default value. 
+   */
+  public String[] getStrings(String name, String... defaultValue) {
+    String valueString = get(name);
+    if (valueString == null) {
+      return defaultValue;
+    } else {
+      return StringUtils.getStrings(valueString);
+    }
+  }
+
+  /** 
+   * Set the array of string values for the <code>name</code> property as 
+   * as comma delimited values.  
+   * 
+   * @param name property name.
+   * @param values The values
+   */
+  public void setStrings(String name, String... values) {
+    set(name, StringUtils.arrayToString(values));
+  }
+ 
   /**
    * Load a class by name.
    * 

+ 2 - 1
src/java/org/apache/hadoop/io/serializer/SerializationFactory.java

@@ -49,7 +49,8 @@ public class SerializationFactory extends Configured {
    */
   public SerializationFactory(Configuration conf) {
     super(conf);
-    for (String serializerName : conf.getStrings("io.serializations")) {
+    for (String serializerName : conf.getStrings("io.serializations", 
+      new String[]{"org.apache.hadoop.io.serializer.WritableSerialization"})) {
       add(serializerName);
     }
   }