Repository: incubator-reef
Updated Branches:
  refs/heads/master 786f7e5e5 -> f9c4d4e5b


[REEF-382] Remove ConfigurationFile

This addressed the issue by
  * replacing serialization usages of ConfigurationFile in our code with
    AvroConfigurationSerializer
  * moving toConfigurationStringList method to ConfigurationModule
  * deleting ConfigurationFile and TestConfigFileParser

JIRA:
  [REEF-382](https://issues.apache.org/jira/browse/REEF-382)

Pull Request:
  This closes #345


Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/f9c4d4e5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/f9c4d4e5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/f9c4d4e5

Branch: refs/heads/master
Commit: f9c4d4e5bf126c70e1d091b3b36c8a0a4a6a51ea
Parents: 786f7e5
Author: Mariia Mykhailova <[email protected]>
Authored: Thu Aug 6 11:53:27 2015 -0700
Committer: Markus Weimer <[email protected]>
Committed: Thu Aug 6 12:48:28 2015 -0700

----------------------------------------------------------------------
 .../org/apache/reef/tang/examples/Timer.java    |   5 +-
 .../formats/AvroConfigurationSerializer.java    |  22 +-
 .../reef/tang/formats/ConfigurationFile.java    | 259 -------------------
 .../reef/tang/formats/ConfigurationModule.java  |  83 +++++-
 .../reef/tang/util/ValidateConfiguration.java   |  23 +-
 .../org/apache/reef/tang/TestBindSingleton.java |  12 +-
 .../apache/reef/tang/TestConfFileParser.java    | 119 ---------
 .../reef/tang/TestImplicitConversions.java      |  17 +-
 .../reef/tang/TestNamedParameterRoundTrip.java  |  12 +-
 .../java/org/apache/reef/tang/TestTang.java     |  15 +-
 .../tang/formats/ConfigurationFileTest.java     |   2 +-
 .../tang/formats/TestConfigurationModule.java   |   5 +-
 .../org/apache/reef/wake/WakeConfiguration.java |  16 +-
 13 files changed, 152 insertions(+), 438 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f9c4d4e5/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/examples/Timer.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/examples/Timer.java
 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/examples/Timer.java
index 7cfcc4b..81fd1d4 100644
--- 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/examples/Timer.java
+++ 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/examples/Timer.java
@@ -24,8 +24,8 @@ import org.apache.reef.tang.Tang;
 import org.apache.reef.tang.annotations.Name;
 import org.apache.reef.tang.annotations.NamedParameter;
 import org.apache.reef.tang.annotations.Parameter;
+import org.apache.reef.tang.formats.AvroConfigurationSerializer;
 import org.apache.reef.tang.formats.CommandLine;
-import org.apache.reef.tang.formats.ConfigurationFile;
 import org.apache.reef.tang.implementation.InjectionPlan;
 import org.apache.reef.tang.implementation.java.InjectorImpl;
 
@@ -50,7 +50,8 @@ public class Timer {
     cl.processCommandLine(args);
     final Configuration conf = cb.build();
     System.out.println("start conf");
-    System.out.println(ConfigurationFile.toConfigurationString(conf));
+    final AvroConfigurationSerializer avroSerializer = new 
AvroConfigurationSerializer();
+    System.out.println(avroSerializer.toString(conf));
     System.out.println("end conf");
     final InjectorImpl injector = (InjectorImpl) tang.newInjector(conf);
     final InjectionPlan<Timer> ip = injector.getInjectionPlan(Timer.class);

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f9c4d4e5/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/AvroConfigurationSerializer.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/AvroConfigurationSerializer.java
 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/AvroConfigurationSerializer.java
index 8351efe..f89c44a 100644
--- 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/AvroConfigurationSerializer.java
+++ 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/AvroConfigurationSerializer.java
@@ -64,8 +64,7 @@ public final class AvroConfigurationSerializer implements 
ConfigurationSerialize
 
   private static void fromAvro(final AvroConfiguration avroConfiguration,
                                final ConfigurationBuilder 
configurationBuilder) throws BindException {
-    // Note: This code is an adapted version of 
ConfigurationFile.processConfigFile();
-    // TODO: This method should implement list deserialization. Implement it 
when C# side is ready.
+    // TODO[JIRA REEF-402]: This method should implement list deserialization. 
Implement it when C# side is ready.
     final Map<String, String> importedNames = new HashMap<>();
 
     for (final ConfigurationEntry entry : avroConfiguration.getBindings()) {
@@ -82,7 +81,7 @@ public final class AvroConfigurationSerializer implements 
ConfigurationSerialize
       final Object rawValue = entry.getValue();
 
       try {
-        // TODO: Implement list deserialization
+        // TODO[JIRA REEF-402]: Implement list deserialization
         // rawValue is String.
         final String value = rawValue.toString();
         if (key.equals(ConfigurationBuilderImpl.IMPORT)) {
@@ -136,8 +135,7 @@ public final class AvroConfigurationSerializer implements 
ConfigurationSerialize
   }
 
   public AvroConfiguration toAvro(final Configuration configuration) {
-    // Note: This code is an adapted version of 
ConfiurationFile.toConfigurationStringList();
-    // TODO: This method should implement list serialization. Implement it 
when C# side is ready.
+    // TODO[JIRA REEF-402]: This method should implement list serialization. 
Implement it when C# side is ready.
 
     final List<ConfigurationEntry> configurationEntries = new ArrayList<>();
 
@@ -181,7 +179,7 @@ public final class AvroConfigurationSerializer implements 
ConfigurationSerialize
           .setValue(val)
           .build());
     }
-    // TODO: Implement list serialization
+    // TODO[JIRA REEF-402]: Implement list serialization
     if (configuration.getBoundLists() != null && 
!configuration.getBoundLists().isEmpty()) {
       throw new NotImplementedException("List serialization/deserialization is 
not supported");
     }
@@ -321,4 +319,16 @@ public final class AvroConfigurationSerializer implements 
ConfigurationSerialize
     return fromAvro(avroFromString(theString), classHierarchy);
   }
 
+  /**
+   * Converts a given serialized string to ConfigurationBuilder from which 
Configuration can be produced.
+   *
+   * @param theString
+   * @param configBuilder
+   * @throws IOException
+   * @throws BindException
+   */
+  public void configurationBuilderFromString(final String theString, final 
ConfigurationBuilder configBuilder)
+      throws IOException, BindException {
+    fromAvro(avroFromString(theString), configBuilder);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f9c4d4e5/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/ConfigurationFile.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/ConfigurationFile.java
 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/ConfigurationFile.java
deleted file mode 100644
index 615df69..0000000
--- 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/ConfigurationFile.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.reef.tang.formats;
-
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.reef.tang.Configuration;
-import org.apache.reef.tang.ConfigurationBuilder;
-import org.apache.reef.tang.exceptions.BindException;
-import org.apache.reef.tang.exceptions.ClassHierarchyException;
-import org.apache.reef.tang.implementation.ConfigurationBuilderImpl;
-import org.apache.reef.tang.implementation.ConfigurationImpl;
-import org.apache.reef.tang.types.ClassNode;
-import org.apache.reef.tang.types.ConstructorArg;
-import org.apache.reef.tang.types.NamedParameterNode;
-import org.apache.reef.tang.types.Node;
-import org.apache.reef.tang.util.ReflectionUtilities;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.*;
-import java.util.Map.Entry;
-
-/**
- * @deprecated in Tang 0.2 Use AvroConfigurationSerializer instead.
- */
-@Deprecated
-public final class ConfigurationFile {
-
-  /**
-   * Write Configuration to the given File.
-   *
-   * @throws IOException
-   * @deprecated in Tang 0.2 Use AvroConfigurationSerializer instead.
-   */
-  @Deprecated
-  public static void writeConfigurationFile(
-      final Configuration conf, final File confFile) throws IOException {
-    try (final PrintStream printStream = new PrintStream(new 
FileOutputStream(confFile))) {
-      printStream.print(toConfigurationString(conf));
-    }
-  }
-
-  /**
-   * @deprecated in Tang 0.2 Use AvroConfigurationSerializer instead.
-   */
-  @Deprecated
-  public static void addConfiguration(final ConfigurationBuilder conf,
-                                      final File tmpConfFile) throws 
IOException, BindException {
-    final PropertiesConfiguration confFile;
-    try {
-      confFile = new PropertiesConfiguration(tmpConfFile);
-    } catch (final ConfigurationException e) {
-      throw new BindException("Problem parsing config file: " + tmpConfFile, 
e);
-    }
-    processConfigFile(conf, confFile);
-  }
-
-  /**
-   * @param conf     This configuration builder will be modified to 
incorporate the
-   *                 contents of the configuration file.
-   * @param contents A string containing the contents of the configuration 
file.
-   * @throws BindException
-   * @deprecated in Tang 0.2 Use AvroConfigurationSerializer instead.
-   */
-  @Deprecated
-  public static void addConfiguration(final ConfigurationBuilder conf,
-                                      final String contents) throws 
BindException {
-    File tmpConfFile = null;
-    try {
-      tmpConfFile = File.createTempFile("tang", "tmp");
-      try (final FileOutputStream outStream = new 
FileOutputStream(tmpConfFile)) {
-        outStream.write(contents.getBytes());
-      }
-      addConfiguration(conf, tmpConfFile);
-    } catch (final IOException ex) {
-      throw new BindException("Error writing config file: " + tmpConfFile, ex);
-    } finally {
-      if (tmpConfFile != null) {
-        tmpConfFile.delete();
-      }
-    }
-  }
-
-  private static void processConfigFile(final ConfigurationBuilder conf,
-                                        final PropertiesConfiguration 
confFile) throws IOException, BindException {
-    final ConfigurationBuilderImpl ci = (ConfigurationBuilderImpl) conf;
-    final Iterator<String> it = confFile.getKeys();
-    final Map<String, String> importedNames = new HashMap<>();
-
-    while (it.hasNext()) {
-      String key = it.next();
-      final String longName = importedNames.get(key);
-      final String[] values = confFile.getStringArray(key);
-      if (longName != null) {
-        // System.err.println("Mapped " + key + " to " + longName);
-        key = longName;
-      }
-      for (final String value : values) {
-        try {
-          if (key.equals(ConfigurationBuilderImpl.IMPORT)) {
-            ci.getClassHierarchy().getNode(value);
-            final String[] tok = value.split(ReflectionUtilities.REGEXP);
-            final String lastTok = tok[tok.length - 1];
-            try {
-              // ci.namespace.getNode(lastTok);
-              ci.getClassHierarchy().getNode(lastTok);
-              throw new IllegalArgumentException("Conflict on short name: " + 
lastTok);
-            } catch (final BindException e) {
-              final String oldValue = importedNames.put(lastTok, value);
-              if (oldValue != null) {
-                throw new IllegalArgumentException("Name conflict: "
-                    + lastTok + " maps to " + oldValue + " and " + value);
-              }
-            }
-          } else if (value.startsWith(ConfigurationBuilderImpl.INIT)) {
-            String parseValue = value.substring(
-                ConfigurationBuilderImpl.INIT.length(), value.length());
-            parseValue = parseValue.replaceAll("^[\\s\\(]+", "");
-            parseValue = parseValue.replaceAll("[\\s\\)]+$", "");
-            final String[] classes = parseValue.split("[\\s\\-]+");
-            ci.registerLegacyConstructor(key, classes);
-          } else {
-            ci.bind(key, value);
-          }
-        } catch (final BindException e) {
-          throw new BindException("Failed to process configuration tuple: [" + 
key + "=" + value + "]", e);
-        } catch (final ClassHierarchyException e) {
-          throw new ClassHierarchyException("Failed to process configuration 
tuple: [" + key + "=" + value + "]", e);
-        }
-      }
-    }
-  }
-
-  /**
-   * Replace any \'s in the input string with \\. and any "'s with \".
-   *
-   * @param in
-   * @return
-   */
-  private static String escape(final String in) {
-    // After regexp escaping \\\\ = 1 slash, \\\\\\\\ = 2 slashes.
-
-    // Also, the second args of replaceAll are neither strings nor regexps, and
-    // are instead a special DSL used by Matcher. Therefore, we need to double
-    // escape slashes (4 slashes) and quotes (3 slashes + ") in those strings.
-    // Since we need to write \\ and \", we end up with 8 and 7 slashes,
-    // respectively.
-    return in.replaceAll("\\\\", "\\\\\\\\").replaceAll("\"", "\\\\\\\"");
-  }
-
-  /**
-   * Obtain the effective configuration of this ConfigurationBuilderImpl
-   * instance. This consists of string-string pairs that could be written
-   * directly to a Properties file, for example. Currently, this method does 
not
-   * return information about default parameter values that were specified by
-   * parameter annotations, or about the auto-discovered stuff in 
TypeHierarchy.
-   * All of that should be automatically imported as these keys are parsed on
-   * the other end.
-   *
-   * @return A string containing enough information to rebuild this
-   * configuration object (assuming the same classes / jars are
-   * available when the string is parsed by Tang).
-   * @deprecated in Tang 0.2 Use AvroConfigurationSerializer instead.
-   */
-  @Deprecated
-  public static String toConfigurationString(final Configuration c) {
-    final StringBuilder sb = new StringBuilder();
-    for (final String s : toConfigurationStringList(c)) {
-      sb.append(s);
-      sb.append('\n');
-    }
-    return sb.toString();
-  }
-
-  /**
-   * @deprecated in Tang 0.2 Use AvroConfigurationSerializer instead.
-   */
-  @Deprecated
-  static List<String> toConfigurationStringList(final Configuration c) {
-    final ConfigurationImpl conf = (ConfigurationImpl) c;
-    final List<String> l = new ArrayList<>();
-    for (final ClassNode<?> opt : conf.getBoundImplementations()) {
-      l.add(opt.getFullName()
-          + '='
-          + escape(conf.getBoundImplementation(opt).getFullName()));
-    }
-    for (final ClassNode<?> opt : conf.getBoundConstructors()) {
-      l.add(opt.getFullName()
-          + '='
-          + escape(conf.getBoundConstructor(opt).getFullName()));
-    }
-    for (final NamedParameterNode<?> opt : conf.getNamedParameters()) {
-      l.add(opt.getFullName()
-          + '='
-          + escape(conf.getNamedParameter(opt)));
-    }
-    for (final ClassNode<?> cn : conf.getLegacyConstructors()) {
-      final StringBuilder sb = new StringBuilder();
-      join(sb, "-", conf.getLegacyConstructor(cn).getArgs());
-      l.add(cn.getFullName()
-          + escape('='
-              + ConfigurationBuilderImpl.INIT
-              + '('
-              + sb.toString()
-              + ')'
-      ));
-      
//s.append(cn.getFullName()).append('=').append(ConfigurationBuilderImpl.INIT).append('(');
-//      .append(")\n");
-    }
-    for (final Entry<NamedParameterNode<Set<?>>, Object> e : 
conf.getBoundSets()) {
-      final String val;
-      if (e.getValue() instanceof String) {
-        val = (String) e.getValue();
-      } else if (e.getValue() instanceof Node) {
-        val = ((Node) e.getValue()).getFullName();
-      } else {
-        throw new IllegalStateException();
-      }
-      l.add(e.getKey().getFullName() + '=' + escape(val));
-//      
s.append(e.getKey().getFullName()).append('=').append(val).append("\n");
-    }
-    return l; //s.toString();
-  }
-
-  private static StringBuilder join(final StringBuilder sb, final String sep, 
final ConstructorArg[] types) {
-    if (types.length > 0) {
-      sb.append(types[0].getType());
-      for (int i = 1; i < types.length; i++) {
-        sb.append(sep).append(types[i].getType());
-      }
-    }
-    return sb;
-  }
-
-  /**
-   * Empty private constructor to prohibit instantiation of utility class.
-   */
-  private ConfigurationFile() {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f9c4d4e5/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/ConfigurationModule.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/ConfigurationModule.java
 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/ConfigurationModule.java
index bb8206d..4e746a9 100644
--- 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/ConfigurationModule.java
+++ 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/ConfigurationModule.java
@@ -23,7 +23,12 @@ import org.apache.reef.tang.annotations.Name;
 import org.apache.reef.tang.exceptions.BindException;
 import org.apache.reef.tang.exceptions.ClassHierarchyException;
 import org.apache.reef.tang.exceptions.NameResolutionException;
+import org.apache.reef.tang.implementation.ConfigurationBuilderImpl;
+import org.apache.reef.tang.implementation.ConfigurationImpl;
+import org.apache.reef.tang.types.ClassNode;
+import org.apache.reef.tang.types.ConstructorArg;
 import org.apache.reef.tang.types.NamedParameterNode;
+import org.apache.reef.tang.types.Node;
 import org.apache.reef.tang.util.*;
 
 import java.lang.reflect.Field;
@@ -265,6 +270,82 @@ public class ConfigurationModule {
     return nps;
   }
 
+  /**
+   * Replace any \'s in the input string with \\. and any "'s with \".
+   *
+   * @param in
+   * @return
+   */
+  private static String escape(final String in) {
+    // After regexp escaping \\\\ = 1 slash, \\\\\\\\ = 2 slashes.
+
+    // Also, the second args of replaceAll are neither strings nor regexps, and
+    // are instead a special DSL used by Matcher. Therefore, we need to double
+    // escape slashes (4 slashes) and quotes (3 slashes + ") in those strings.
+    // Since we need to write \\ and \", we end up with 8 and 7 slashes,
+    // respectively.
+    return in.replaceAll("\\\\", "\\\\\\\\").replaceAll("\"", "\\\\\\\"");
+  }
+
+  private static StringBuilder join(final StringBuilder sb, final String sep, 
final ConstructorArg[] types) {
+    if (types.length > 0) {
+      sb.append(types[0].getType());
+      for (int i = 1; i < types.length; i++) {
+        sb.append(sep).append(types[i].getType());
+      }
+    }
+    return sb;
+  }
+
+  /**
+   * Convert Configuration to a list of strings formatted as "param=value".
+   *
+   * @param c
+   * @return
+   */
+  private static List<String> toConfigurationStringList(final Configuration c) 
{
+    final ConfigurationImpl conf = (ConfigurationImpl) c;
+    final List<String> l = new ArrayList<>();
+    for (final ClassNode<?> opt : conf.getBoundImplementations()) {
+      l.add(opt.getFullName()
+          + '='
+          + escape(conf.getBoundImplementation(opt).getFullName()));
+    }
+    for (final ClassNode<?> opt : conf.getBoundConstructors()) {
+      l.add(opt.getFullName()
+          + '='
+          + escape(conf.getBoundConstructor(opt).getFullName()));
+    }
+    for (final NamedParameterNode<?> opt : conf.getNamedParameters()) {
+      l.add(opt.getFullName()
+          + '='
+          + escape(conf.getNamedParameter(opt)));
+    }
+    for (final ClassNode<?> cn : conf.getLegacyConstructors()) {
+      final StringBuilder sb = new StringBuilder();
+      join(sb, "-", conf.getLegacyConstructor(cn).getArgs());
+      l.add(cn.getFullName()
+          + escape('='
+              + ConfigurationBuilderImpl.INIT
+              + '('
+              + sb.toString()
+              + ')'
+      ));
+    }
+    for (final Entry<NamedParameterNode<Set<?>>, Object> e : 
conf.getBoundSets()) {
+      final String val;
+      if (e.getValue() instanceof String) {
+        val = (String) e.getValue();
+      } else if (e.getValue() instanceof Node) {
+        val = ((Node) e.getValue()).getFullName();
+      } else {
+        throw new IllegalStateException();
+      }
+      l.add(e.getKey().getFullName() + '=' + escape(val));
+    }
+    return l;
+  }
+
   public List<Entry<String, String>> toStringPairs() {
     final List<Entry<String, String>> ret = new ArrayList<>();
     class MyEntry implements Entry<String, String> {
@@ -300,7 +381,7 @@ public class ConfigurationModule {
       ret.add(new MyEntry(ReflectionUtilities.getFullName(c),
           this.builder.map.get(this.builder.freeImpls.get(c)).getName()));
     }
-    for (final String s : 
ConfigurationFile.toConfigurationStringList(builder.b.build())) {
+    for (final String s : toConfigurationStringList(builder.b.build())) {
       final String[] tok = s.split("=", 2);
       ret.add(new MyEntry(tok[0], tok[1]));
     }

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f9c4d4e5/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/util/ValidateConfiguration.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/util/ValidateConfiguration.java
 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/util/ValidateConfiguration.java
index 331f384..bb74c19 100644
--- 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/util/ValidateConfiguration.java
+++ 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/util/ValidateConfiguration.java
@@ -24,8 +24,8 @@ import org.apache.reef.tang.annotations.NamedParameter;
 import org.apache.reef.tang.annotations.Parameter;
 import org.apache.reef.tang.exceptions.BindException;
 import org.apache.reef.tang.exceptions.InjectionException;
+import org.apache.reef.tang.formats.AvroConfigurationSerializer;
 import org.apache.reef.tang.formats.CommandLine;
-import org.apache.reef.tang.formats.ConfigurationFile;
 import org.apache.reef.tang.implementation.InjectionPlan;
 import 
org.apache.reef.tang.implementation.protobuf.ProtocolBufferClassHierarchy;
 import org.apache.reef.tang.proto.ClassHierarchyProto;
@@ -36,14 +36,11 @@ import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
-// TODO Clean up the code which are deprecated and commented out.
 public class ValidateConfiguration {
   private final String target;
   private final File ch;
   private final File inConfig;
   private final File outConfig;
-//  @NamedParameter(short_name="ip")
-//  public class InjectionPlanOut implements Name<File> { }
 
   @Inject
   public ValidateConfiguration(
@@ -54,7 +51,6 @@ public class ValidateConfiguration {
     this.ch = ch;
     this.inConfig = inConfig;
     this.outConfig = outConfig;
-//    this.injectionPlan = injectionPlan;
   }
 
   @Inject
@@ -87,36 +83,30 @@ public class ValidateConfiguration {
 
     final Tang t = Tang.Factory.getTang();
 
-    // TODO Use the AvroClassHierarchySerializer
+    // TODO[JIRA REEF-400] Use the AvroClassHierarchySerializer
     final ClassHierarchyProto.Node root;
     try (final InputStream chin = new FileInputStream(this.ch)) {
       root = ClassHierarchyProto.Node.parseFrom(chin);
     }
 
     final ClassHierarchy classHierarchy = new 
ProtocolBufferClassHierarchy(root);
-    final ConfigurationBuilder cb = t.newConfigurationBuilder(classHierarchy);
 
     if (!inConfig.canRead()) {
       throw new IOException("Cannot read input config file: " + inConfig);
     }
 
-    ConfigurationFile.addConfiguration(cb, inConfig);
+    final AvroConfigurationSerializer avroSerializer = new 
AvroConfigurationSerializer();
+    final Configuration conf = avroSerializer.fromFile(inConfig, 
classHierarchy);
 
     if (target != null) {
-      final Injector i = t.newInjector(cb.build());
+      final Injector i = t.newInjector(conf);
       final InjectionPlan<?> ip = i.getInjectionPlan(target);
       if (!ip.isInjectable()) {
         throw new InjectionException(target + " is not injectable: " + 
ip.toCantInjectString());
       }
     }
 
-    ConfigurationFile.writeConfigurationFile(cb.build(), outConfig);
-
-//    Injector i = t.newInjector(cb.build());
-//    InjectionPlan<?> ip = i.getInjectionPlan(target);
-//    try (final OutputStream ipout = new FileOutputStream(injectionPlan)) {
-//      new ProtocolBufferInjectionPlan().serialize(ip).writeTo(ipout);
-//    }
+    avroSerializer.toFile(conf, outConfig);
   }
 
   public static class FileParser implements ExternalConstructor<File> {
@@ -133,7 +123,6 @@ public class ValidateConfiguration {
     }
 
   }
-//  private final File injectionPlan;
 
   @NamedParameter(short_name = "class")
   public class Target implements Name<String> {

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f9c4d4e5/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestBindSingleton.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestBindSingleton.java
 
b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestBindSingleton.java
index 43dedec..6de8aa7 100644
--- 
a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestBindSingleton.java
+++ 
b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestBindSingleton.java
@@ -20,13 +20,15 @@ package org.apache.reef.tang;
 
 import org.apache.reef.tang.exceptions.BindException;
 import org.apache.reef.tang.exceptions.InjectionException;
-import org.apache.reef.tang.formats.ConfigurationFile;
+import org.apache.reef.tang.formats.AvroConfigurationSerializer;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
 import javax.inject.Inject;
 
+import java.io.IOException;
+
 import static org.junit.Assert.assertTrue;
 
 public class TestBindSingleton {
@@ -49,16 +51,16 @@ public class TestBindSingleton {
   }
 
   @Test
-  public void testSingletonRoundTrip() throws BindException, 
InjectionException {
+  public void testSingletonRoundTrip() throws BindException, 
InjectionException, IOException {
 
     final JavaConfigurationBuilder b = Tang.Factory.getTang()
         .newConfigurationBuilder();
     b.bindImplementation(A.class, B.class);
     final Configuration src = b.build();
 
-    final JavaConfigurationBuilder dest = Tang.Factory.getTang()
-        .newConfigurationBuilder();
-    ConfigurationFile.addConfiguration(dest, 
ConfigurationFile.toConfigurationString(src));
+    final JavaConfigurationBuilder dest = 
Tang.Factory.getTang().newConfigurationBuilder();
+    final AvroConfigurationSerializer avroSerializer = new 
AvroConfigurationSerializer();
+    
avroSerializer.configurationBuilderFromString(avroSerializer.toString(src), 
dest);
     final Injector i = Tang.Factory.getTang().newInjector(dest.build());
     final A a1 = i.getInstance(A.class);
     final A a2 = i.getInstance(A.class);

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f9c4d4e5/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestConfFileParser.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestConfFileParser.java
 
b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestConfFileParser.java
deleted file mode 100644
index d11a98e..0000000
--- 
a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestConfFileParser.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.reef.tang;
-
-import org.apache.reef.tang.annotations.Name;
-import org.apache.reef.tang.annotations.NamedParameter;
-import org.apache.reef.tang.exceptions.BindException;
-import org.apache.reef.tang.exceptions.InjectionException;
-import org.apache.reef.tang.formats.ConfigurationFile;
-import org.apache.reef.tang.implementation.TangImpl;
-import org.apache.reef.tang.util.ReflectionUtilities;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import javax.inject.Inject;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-public class TestConfFileParser {
-
-  @Before
-  public void setUp() {
-    TangImpl.reset();
-  }
-
-  @Test
-  public void testRoundTrip() throws BindException {
-    // TODO: This likely only passes on windows, as it relies on newlines
-    // being \r\n, and on java.lang.Object having a lower hash code than
-    // org.apache.reef.tang.TestConfFileParser
-    final Tang t = Tang.Factory.getTang();
-    final JavaConfigurationBuilder cb = t.newConfigurationBuilder();
-    final String in = 
"org.apache.reef.tang.TestConfFileParser=org.apache.reef.tang.TestConfFileParser\n";
-    ConfigurationFile.addConfiguration(cb, in);
-    final String out = ConfigurationFile.toConfigurationString(cb.build());
-    Assert.assertEquals(in, out);
-  }
-
-  @Test
-  public void testBindSingleton() throws BindException {
-    // TODO: This likely only passes on windows, as it relies on newlines
-    // being \r\n, and on java.lang.Object having a lower hash code than
-    // org.apache.reef.tang.TestConfFileParser
-    final Tang t = Tang.Factory.getTang();
-    final JavaConfigurationBuilder cb = t.newConfigurationBuilder();
-    cb.bindImplementation(SingleTest.A.class, SingleTest.B.class);
-
-    final String out = ConfigurationFile.toConfigurationString(cb.build());
-    final String in = 
"org.apache.reef.tang.SingleTest$A=org.apache.reef.tang.SingleTest$B\n";
-    Assert.assertEquals(in, out);
-  }
-
-  @Test
-  public void testNamedParameter() throws BindException {
-    final Tang t = Tang.Factory.getTang();
-    final String conf = "org.apache.reef.tang.TestConfFileParser$Foo=woot";
-    final ConfigurationBuilder cb = t.newConfigurationBuilder();
-    ConfigurationFile.addConfiguration(cb, conf);
-    Assert.assertTrue(t.newInjector(cb.build()).isParameterSet(Foo.class));
-  }
-
-  @Test
-  public void testNamedParameter2() throws BindException, IOException, 
InjectionException {
-
-    final String value = "socket://131.179.176.216:19278";
-    final File tmp = File.createTempFile("test", "conf");
-
-    try (final FileOutputStream fout = new FileOutputStream(tmp)) {
-      final String line = 
ReflectionUtilities.getFullName(RemoteIdentifier.class) + "=" + value;
-      fout.write(line.getBytes());
-    }
-
-    final JavaConfigurationBuilder cb = 
Tang.Factory.getTang().newConfigurationBuilder();
-    ConfigurationFile.addConfiguration(cb, tmp);
-    final Injector i = Tang.Factory.getTang().newInjector(cb.build());
-    Assert.assertEquals(value, i.getNamedInstance(RemoteIdentifier.class));
-  }
-
-  @NamedParameter(doc = "remote id.")
-  private static final class RemoteIdentifier implements Name<String> {
-  }
-
-  @NamedParameter()
-  class Foo implements Name<String> {
-  }
-}
-
-@NamedParameter
-final class Foo implements Name<String> {
-}
-
-class SingleTest {
-  static class A {
-  }
-
-  static class B extends A {
-    @Inject
-    B() {
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f9c4d4e5/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestImplicitConversions.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestImplicitConversions.java
 
b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestImplicitConversions.java
index f39a1cb..98883c0 100644
--- 
a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestImplicitConversions.java
+++ 
b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestImplicitConversions.java
@@ -22,26 +22,29 @@ import org.apache.reef.tang.annotations.Name;
 import org.apache.reef.tang.annotations.NamedParameter;
 import org.apache.reef.tang.exceptions.BindException;
 import org.apache.reef.tang.exceptions.InjectionException;
-import org.apache.reef.tang.formats.ConfigurationFile;
+import org.apache.reef.tang.formats.AvroConfigurationSerializer;
 import org.apache.reef.tang.types.NamedParameterNode;
 import org.apache.reef.tang.util.ReflectionUtilities;
 import org.junit.Assert;
 import org.junit.Test;
 
 import javax.inject.Inject;
+import java.io.IOException;
 
 public class TestImplicitConversions {
+  private final AvroConfigurationSerializer avroSerializer = new 
AvroConfigurationSerializer();
+
   @SuppressWarnings("unchecked")
   @Test
-  public void testBindFromString() throws BindException, InjectionException {
+  public void testBindFromString() throws BindException, InjectionException, 
IOException {
     final JavaConfigurationBuilder b = 
Tang.Factory.getTang().newConfigurationBuilder(IdentifierParser.class);
     b.bindNamedParameter(IdName.class, "b://b");
 
     final Configuration c = b.build();
-    final String s = ConfigurationFile.toConfigurationString(c);
+    final String s = avroSerializer.toString(c);
 
     final JavaConfigurationBuilder b2 = 
Tang.Factory.getTang().newConfigurationBuilder(IdentifierParser.class);
-    ConfigurationFile.addConfiguration(b2, s);
+    avroSerializer.configurationBuilderFromString(s, b2);
     final Configuration c2 = b2.build();
 
     Assert.assertEquals("b://b", c2.getNamedParameter(
@@ -55,16 +58,16 @@ public class TestImplicitConversions {
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testBindSubclassFromString() throws BindException, 
InjectionException {
+  public void testBindSubclassFromString() throws BindException, 
InjectionException, IOException {
     final JavaConfigurationBuilder b = 
Tang.Factory.getTang().newConfigurationBuilder(IdentifierParser.class);
     b.bindNamedParameter(AIdName.class, "a://a");
     b.bindNamedParameter(BIdName.class, "b://b");
 
     final Configuration c = b.build();
-    final String s = ConfigurationFile.toConfigurationString(c);
+    final String s = avroSerializer.toString(c);
 
     final JavaConfigurationBuilder b2 = 
Tang.Factory.getTang().newConfigurationBuilder(IdentifierParser.class);
-    ConfigurationFile.addConfiguration(b2, s);
+    avroSerializer.configurationBuilderFromString(s, b2);
     final Configuration c2 = b2.build();
 
     Assert.assertEquals("b://b", c2.getNamedParameter(

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f9c4d4e5/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestNamedParameterRoundTrip.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestNamedParameterRoundTrip.java
 
b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestNamedParameterRoundTrip.java
index f3706ec..e2b94ea 100644
--- 
a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestNamedParameterRoundTrip.java
+++ 
b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestNamedParameterRoundTrip.java
@@ -22,15 +22,17 @@ import org.apache.reef.tang.annotations.Name;
 import org.apache.reef.tang.annotations.NamedParameter;
 import org.apache.reef.tang.exceptions.BindException;
 import org.apache.reef.tang.exceptions.InjectionException;
-import org.apache.reef.tang.formats.ConfigurationFile;
+import org.apache.reef.tang.formats.AvroConfigurationSerializer;
 import org.junit.Test;
 
+import java.io.IOException;
+
 import static org.junit.Assert.assertEquals;
 
 public class TestNamedParameterRoundTrip {
 
   @Test
-  public void testRoundTrip() throws BindException, InjectionException {
+  public void testRoundTrip() throws BindException, InjectionException, 
IOException {
     final int d = 10;
     final double eps = 1e-5;
     final JavaConfigurationBuilder b = 
Tang.Factory.getTang().newConfigurationBuilder();
@@ -46,9 +48,10 @@ public class TestNamedParameterRoundTrip {
     assertEquals(eps, readEps1, 1e-12);
     assertEquals(d, readD1);
 
+    final AvroConfigurationSerializer avroSerializer = new 
AvroConfigurationSerializer();
 
     final JavaConfigurationBuilder roundTrip2 = 
Tang.Factory.getTang().newConfigurationBuilder();
-    ConfigurationFile.addConfiguration(roundTrip2, 
ConfigurationFile.toConfigurationString(conf));
+    
avroSerializer.configurationBuilderFromString(avroSerializer.toString(conf), 
roundTrip2);
     final Injector i2 = Tang.Factory.getTang().newInjector(roundTrip2.build());
 
     final int readD2 = i2.getNamedInstance(Dimensionality.class).intValue();
@@ -72,8 +75,7 @@ public class TestNamedParameterRoundTrip {
     final Injector parent4 =
         
Tang.Factory.getTang().newInjector(Tang.Factory.getTang().newConfigurationBuilder().build());
     final JavaConfigurationBuilder roundTrip4 = 
Tang.Factory.getTang().newConfigurationBuilder();
-    ConfigurationFile.addConfiguration(roundTrip4,
-        ConfigurationFile.toConfigurationString(conf));
+    
avroSerializer.configurationBuilderFromString(avroSerializer.toString(conf), 
roundTrip4);
     final Injector i4 = parent4.forkInjector(roundTrip4.build());
 
     final int readD4 = i4.getNamedInstance(Dimensionality.class).intValue();

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f9c4d4e5/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestTang.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestTang.java 
b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestTang.java
index 55b043f..697c291 100644
--- a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestTang.java
+++ b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/TestTang.java
@@ -26,7 +26,7 @@ import org.apache.reef.tang.exceptions.BindException;
 import org.apache.reef.tang.exceptions.ClassHierarchyException;
 import org.apache.reef.tang.exceptions.InjectionException;
 import org.apache.reef.tang.exceptions.NameResolutionException;
-import org.apache.reef.tang.formats.ConfigurationFile;
+import org.apache.reef.tang.formats.AvroConfigurationSerializer;
 import org.apache.reef.tang.util.ReflectionUtilities;
 import org.junit.Assert;
 import org.junit.Before;
@@ -35,6 +35,7 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
 import javax.inject.Inject;
+import java.io.IOException;
 
 interface SMC {
 }
@@ -307,17 +308,17 @@ public class TestTang {
   }
 
   @Test
-  public void testLegacyConstructor() throws BindException, InjectionException 
{
+  public void testLegacyConstructor() throws BindException, 
InjectionException, IOException {
     final JavaConfigurationBuilder cb = tang.newConfigurationBuilder();
     cb.registerLegacyConstructor(
         ReflectionUtilities.getFullName(LegacyConstructor.class),
         ReflectionUtilities.getFullName(Integer.class),
         ReflectionUtilities.getFullName(String.class));
     cb.bind(LegacyConstructor.class, LegacyConstructor.class);
-    final String confString = 
ConfigurationFile.toConfigurationString(cb.build());
+    final AvroConfigurationSerializer avroSerializer = new 
AvroConfigurationSerializer();
+    final String confString = avroSerializer.toString(cb.build());
     final JavaConfigurationBuilder cb2 = tang.newConfigurationBuilder();
-    // System.err.println(confString);
-    ConfigurationFile.addConfiguration(cb2, confString);
+    avroSerializer.configurationBuilderFromString(confString, cb2);
     final Injector i = tang.newInjector(cb2.build());
     i.bindVolatileInstance(Integer.class, 42);
     i.bindVolatileInstance(String.class, "The meaning of life is ");
@@ -1225,6 +1226,10 @@ class MyEventHandler<T> implements EventHandler<T> {
   }
 }
 
+@NamedParameter
+final class Foo implements Name<String> {
+}
+
 @NamedParameter(default_class = MyEventHandler.class)
 class FooEventHandler implements Name<EventHandler<Foo>> {
 }

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f9c4d4e5/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/formats/ConfigurationFileTest.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/formats/ConfigurationFileTest.java
 
b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/formats/ConfigurationFileTest.java
index a793a11..b4a0527 100644
--- 
a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/formats/ConfigurationFileTest.java
+++ 
b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/formats/ConfigurationFileTest.java
@@ -27,7 +27,7 @@ import org.apache.reef.tang.test.RoundTripTest;
 import java.io.File;
 
 /**
- * Tests the file writing routines in ConfigurationFile.
+ * Tests the file writing routines in AvroConfigurationSerializer.
  */
 public final class ConfigurationFileTest extends RoundTripTest {
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f9c4d4e5/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/formats/TestConfigurationModule.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/formats/TestConfigurationModule.java
 
b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/formats/TestConfigurationModule.java
index 32226a7..6891234 100644
--- 
a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/formats/TestConfigurationModule.java
+++ 
b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/formats/TestConfigurationModule.java
@@ -312,13 +312,14 @@ public class TestConfigurationModule {
   }
 
   @Test
-  public void setClassRoundTripTest() throws BindException, InjectionException 
{
+  public void setClassRoundTripTest() throws BindException, 
InjectionException, IOException {
     final Configuration c = SetClassConfigurationModule.CONF
         .set(SetClassConfigurationModule.P, SubA.class)
         .set(SetClassConfigurationModule.P, SubB.class)
         .build();
     final ConfigurationBuilder cb = 
Tang.Factory.getTang().newConfigurationBuilder();
-    ConfigurationFile.addConfiguration(cb, 
ConfigurationFile.toConfigurationString(c));
+    final AvroConfigurationSerializer avroSerializer = new 
AvroConfigurationSerializer();
+    avroSerializer.configurationBuilderFromString(avroSerializer.toString(c), 
cb);
     final Set<Super> s = 
Tang.Factory.getTang().newInjector(cb.build()).getNamedInstance(SetClass.class);
     Assert.assertEquals(2, s.size());
     boolean sawA = false, sawB = false;

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/f9c4d4e5/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/WakeConfiguration.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/WakeConfiguration.java
 
b/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/WakeConfiguration.java
index 3c8d787..5c97e0f 100644
--- 
a/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/WakeConfiguration.java
+++ 
b/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/WakeConfiguration.java
@@ -18,13 +18,12 @@
  */
 package org.apache.reef.wake;
 
-import org.apache.reef.tang.JavaConfigurationBuilder;
-import org.apache.reef.tang.Tang;
+import org.apache.reef.tang.Configuration;
 import org.apache.reef.tang.annotations.Name;
 import org.apache.reef.tang.annotations.NamedParameter;
 import org.apache.reef.tang.annotations.Parameter;
 import org.apache.reef.tang.exceptions.BindException;
-import org.apache.reef.tang.formats.ConfigurationFile;
+import org.apache.reef.tang.formats.AvroConfigurationSerializer;
 import org.apache.reef.wake.exception.WakeRuntimeException;
 
 import javax.inject.Inject;
@@ -35,7 +34,9 @@ import java.util.logging.Logger;
 
 /**
  * Wake parameter configuration.
+ * @deprecated in 0.12 Unused
  */
+@Deprecated
 public final class WakeConfiguration {
   private static final Logger LOG = 
Logger.getLogger(WakeConfiguration.class.getName());
 
@@ -44,13 +45,10 @@ public final class WakeConfiguration {
     if (confFileName.equals("")) {
       LOG.log(Level.WARNING, "The Wake configuration file is not specified.");
     } else {
-      final Tang t = Tang.Factory.getTang();
-      final JavaConfigurationBuilder cb = t.newConfigurationBuilder();
+      final AvroConfigurationSerializer avroSerializer = new 
AvroConfigurationSerializer();
       try {
-        ConfigurationFile.addConfiguration(cb, new File(confFileName));
-      } catch (final BindException e) {
-        throw new WakeRuntimeException(e);
-      } catch (final IOException e) {
+        final Configuration conf = avroSerializer.fromFile(new 
File(confFileName));
+      } catch (final BindException | IOException e) {
         throw new WakeRuntimeException(e);
       }
     }


Reply via email to