Repository: reef
Updated Branches:
  refs/heads/master 24ea116ab -> 59b766e87


[REEF-1633] Implement Configurations.getDefaultSerializer() and .toString() 
methods

Also, use Tang.toString() in REEF examples

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

Pull Request:
  This closes #1149


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

Branch: refs/heads/master
Commit: 59b766e87ac55c87cf88b2fb8a8ed029b52e417a
Parents: 24ea116
Author: Sergiy Matusevych <[email protected]>
Authored: Thu Oct 6 12:02:56 2016 -0700
Committer: Markus Weimer <[email protected]>
Committed: Thu Oct 6 17:26:55 2016 -0700

----------------------------------------------------------------------
 .../reef/runtime/common/REEFEnvironment.java    |  5 +--
 .../group/bgd/utils/SubConfiguration.java       | 12 ++-----
 .../examples/group/broadcast/BroadcastREEF.java | 12 +++----
 .../org/apache/reef/examples/pool/Launch.java   | 22 +++++-------
 .../apache/reef/examples/suspend/Launch.java    | 15 +++-----
 .../org/apache/reef/tang/Configurations.java    | 37 +++++++++++++++++++-
 6 files changed, 59 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/reef/blob/59b766e8/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/REEFEnvironment.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/REEFEnvironment.java
 
b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/REEFEnvironment.java
index 2809d44..c8a3d0e 100644
--- 
a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/REEFEnvironment.java
+++ 
b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/REEFEnvironment.java
@@ -27,7 +27,6 @@ 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.exceptions.InjectionException;
-import org.apache.reef.tang.formats.AvroConfigurationSerializer;
 import org.apache.reef.util.EnvironmentUtils;
 import org.apache.reef.util.REEFVersion;
 import org.apache.reef.wake.profiler.WakeProfiler;
@@ -73,9 +72,7 @@ public final class REEFEnvironment implements Runnable, 
AutoCloseable {
     final Configuration config = Configurations.merge(configurations);
 
     if (LOG.isLoggable(Level.FINEST)) {
-      // TODO[REEF-1633] Obtain default serializer from Tang, or use Tang to 
pretty print.
-      LOG.log(Level.FINEST, "Configuration:\n--\n{0}\n--",
-          new AvroConfigurationSerializer().toString(config, true));
+      LOG.log(Level.FINEST, "Configuration:\n--\n{0}\n--", 
Configurations.toString(config, true));
     }
 
     final Injector injector = TANG.newInjector(config);

http://git-wip-us.apache.org/repos/asf/reef/blob/59b766e8/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/bgd/utils/SubConfiguration.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/bgd/utils/SubConfiguration.java
 
b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/bgd/utils/SubConfiguration.java
index dff4dc3..835a130 100644
--- 
a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/bgd/utils/SubConfiguration.java
+++ 
b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/bgd/utils/SubConfiguration.java
@@ -21,14 +21,9 @@ package org.apache.reef.examples.group.bgd.utils;
 import org.apache.reef.driver.task.TaskConfiguration;
 import org.apache.reef.driver.task.TaskConfigurationOptions;
 import org.apache.reef.examples.group.bgd.MasterTask;
-import org.apache.reef.tang.Configuration;
-import org.apache.reef.tang.Injector;
-import org.apache.reef.tang.JavaConfigurationBuilder;
-import org.apache.reef.tang.Tang;
+import org.apache.reef.tang.*;
 import org.apache.reef.tang.annotations.Name;
 import org.apache.reef.tang.exceptions.InjectionException;
-import org.apache.reef.tang.formats.AvroConfigurationSerializer;
-import org.apache.reef.tang.formats.ConfigurationSerializer;
 
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -68,10 +63,9 @@ public final class SubConfiguration {
         .set(TaskConfiguration.TASK, MasterTask.class)
         .build();
 
-    final ConfigurationSerializer confSerizalizer = new 
AvroConfigurationSerializer();
     final Configuration subConf = SubConfiguration.from(conf, 
TaskConfigurationOptions.Identifier.class);
-    LOG.log(Level.INFO, "OUT: Base conf:\n{0}", 
confSerizalizer.toString(conf));
-    LOG.log(Level.INFO, "OUT: Sub conf:\n{0}", 
confSerizalizer.toString(subConf));
+    LOG.log(Level.INFO, "OUT: Base conf:\n{0}", Configurations.toString(conf));
+    LOG.log(Level.INFO, "OUT: Sub conf:\n{0}", 
Configurations.toString(subConf));
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/reef/blob/59b766e8/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/broadcast/BroadcastREEF.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/broadcast/BroadcastREEF.java
 
b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/broadcast/BroadcastREEF.java
index 3b25bdb..103cc13 100644
--- 
a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/broadcast/BroadcastREEF.java
+++ 
b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/broadcast/BroadcastREEF.java
@@ -27,14 +27,10 @@ import 
org.apache.reef.examples.group.broadcast.parameters.NumberOfReceivers;
 import org.apache.reef.io.network.group.impl.driver.GroupCommService;
 import org.apache.reef.runtime.local.client.LocalRuntimeConfiguration;
 import org.apache.reef.runtime.yarn.client.YarnClientConfiguration;
-import org.apache.reef.tang.Configuration;
-import org.apache.reef.tang.Injector;
-import org.apache.reef.tang.JavaConfigurationBuilder;
-import org.apache.reef.tang.Tang;
+import org.apache.reef.tang.*;
 import org.apache.reef.tang.annotations.Name;
 import org.apache.reef.tang.annotations.NamedParameter;
 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.util.EnvironmentUtils;
 
@@ -47,6 +43,7 @@ import java.util.logging.Logger;
  */
 @ClientSide
 public final class BroadcastREEF {
+
   private static final Logger LOG = 
Logger.getLogger(BroadcastREEF.class.getName());
 
   private static final String MAX_NUMBER_OF_EVALUATORS = "20";
@@ -139,7 +136,10 @@ public final class BroadcastREEF {
         .bindNamedParameter(NumberOfReceivers.class, 
Integer.toString(numberOfReceivers))
         .build();
 
-    LOG.info(new 
AvroConfigurationSerializer().toString(mergedDriverConfiguration));
+    if (LOG.isLoggable(Level.FINE)) {
+      LOG.log(Level.FINE, "Merged driver configuration:\n{0}",
+          Configurations.toString(mergedDriverConfiguration));
+    }
 
     return 
DriverLauncher.getLauncher(runtimeConfiguration).run(mergedDriverConfiguration, 
JOB_TIMEOUT);
   }

http://git-wip-us.apache.org/repos/asf/reef/blob/59b766e8/lang/java/reef-examples/src/main/java/org/apache/reef/examples/pool/Launch.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/pool/Launch.java
 
b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/pool/Launch.java
index 84b9f7e..0e3281c 100644
--- 
a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/pool/Launch.java
+++ 
b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/pool/Launch.java
@@ -22,15 +22,11 @@ import org.apache.reef.client.DriverConfiguration;
 import org.apache.reef.client.DriverLauncher;
 import org.apache.reef.runtime.local.client.LocalRuntimeConfiguration;
 import org.apache.reef.runtime.yarn.client.YarnClientConfiguration;
-import org.apache.reef.tang.Configuration;
-import org.apache.reef.tang.Injector;
-import org.apache.reef.tang.JavaConfigurationBuilder;
-import org.apache.reef.tang.Tang;
+import 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.AvroConfigurationSerializer;
 import org.apache.reef.tang.formats.CommandLine;
 import org.apache.reef.util.EnvironmentUtils;
 
@@ -101,9 +97,10 @@ public final class Launch {
    * @throws InjectionException if configuration commandLineInjector fails.
    */
   private static Configuration getClientConfiguration(
-      final Configuration commandLineConf, final boolean isLocal)
-      throws BindException, InjectionException {
+      final Configuration commandLineConf, final boolean isLocal) throws 
BindException, InjectionException {
+
     final Configuration runtimeConfiguration;
+
     if (isLocal) {
       LOG.log(Level.FINE, "Running on the local runtime");
       runtimeConfiguration = LocalRuntimeConfiguration.CONF
@@ -113,9 +110,8 @@ public final class Launch {
       LOG.log(Level.FINE, "Running on YARN");
       runtimeConfiguration = YarnClientConfiguration.CONF.build();
     }
-    return Tang.Factory.getTang().newConfigurationBuilder(
-        runtimeConfiguration, cloneCommandLineConfiguration(commandLineConf))
-        .build();
+
+    return Configurations.merge(runtimeConfiguration, 
cloneCommandLineConfiguration(commandLineConf));
   }
 
   /**
@@ -144,7 +140,7 @@ public final class Launch {
 
       final Configuration runtimeConfig = 
getClientConfiguration(commandLineConf, isLocal);
       LOG.log(Level.INFO, "TIME: Start Client {0} with timeout {1} sec. 
Configuration:\n--\n{2}--",
-          new Object[]{jobId, timeout / 1000, new 
AvroConfigurationSerializer().toString(runtimeConfig)});
+          new Object[] {jobId, timeout / 1000, 
Configurations.toString(runtimeConfig, true)});
 
       final Configuration driverConfig = DriverConfiguration.CONF
           .set(DriverConfiguration.GLOBAL_LIBRARIES, 
EnvironmentUtils.getClassLocation(JobDriver.class))
@@ -160,8 +156,8 @@ public final class Launch {
 
       final Configuration submittedConfiguration = Tang.Factory.getTang()
           .newConfigurationBuilder(driverConfig, commandLineConf).build();
-      DriverLauncher.getLauncher(runtimeConfig)
-          .run(submittedConfiguration, timeout);
+
+      DriverLauncher.getLauncher(runtimeConfig).run(submittedConfiguration, 
timeout);
 
       LOG.log(Level.INFO, "TIME: Stop Client {0}", jobId);
 

http://git-wip-us.apache.org/repos/asf/reef/blob/59b766e8/lang/java/reef-examples/src/main/java/org/apache/reef/examples/suspend/Launch.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/suspend/Launch.java
 
b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/suspend/Launch.java
index d05aa17..1ea8632 100644
--- 
a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/suspend/Launch.java
+++ 
b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/suspend/Launch.java
@@ -21,15 +21,11 @@ package org.apache.reef.examples.suspend;
 import org.apache.reef.client.ClientConfiguration;
 import org.apache.reef.runtime.local.client.LocalRuntimeConfiguration;
 import org.apache.reef.runtime.yarn.client.YarnClientConfiguration;
-import org.apache.reef.tang.Configuration;
-import org.apache.reef.tang.Injector;
-import org.apache.reef.tang.JavaConfigurationBuilder;
-import org.apache.reef.tang.Tang;
+import 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.AvroConfigurationSerializer;
 import org.apache.reef.tang.formats.CommandLine;
 
 import java.io.IOException;
@@ -117,10 +113,8 @@ public final class Launch {
       runtimeConfiguration = YarnClientConfiguration.CONF.build();
     }
 
-    return Tang.Factory.getTang()
-        .newConfigurationBuilder(runtimeConfiguration, clientConfiguration,
-            cloneCommandLineConfiguration(commandLineConf))
-        .build();
+    return Configurations.merge(
+        runtimeConfiguration, clientConfiguration, 
cloneCommandLineConfiguration(commandLineConf));
   }
 
   /**
@@ -132,8 +126,7 @@ public final class Launch {
     try {
       final Configuration config = getClientConfiguration(args);
 
-      LOG.log(Level.INFO, "Configuration:\n--\n{0}--",
-          new AvroConfigurationSerializer().toString(config));
+      LOG.log(Level.INFO, "Configuration:\n--\n{0}--", 
Configurations.toString(config, true));
 
       final Injector injector = Tang.Factory.getTang().newInjector(config);
       final SuspendClient client = injector.getInstance(SuspendClient.class);

http://git-wip-us.apache.org/repos/asf/reef/blob/59b766e8/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/Configurations.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/Configurations.java
 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/Configurations.java
index e7578ff..4347852 100644
--- 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/Configurations.java
+++ 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/Configurations.java
@@ -18,18 +18,22 @@
  */
 package org.apache.reef.tang;
 
+import org.apache.reef.tang.formats.AvroConfigurationSerializer;
+import org.apache.reef.tang.formats.ConfigurationSerializer;
+
 /**
  * Helper class for Configurations.
  */
 public final class Configurations {
 
+  private static final AvroConfigurationSerializer SERIALIZER = new 
AvroConfigurationSerializer();
+
   /**
    * This is a utility class that isn't meant to be instantiated.
    */
   private Configurations() {
   }
 
-
   /**
    * Merge a set of Configurations.
    *
@@ -56,4 +60,35 @@ public final class Configurations {
     return configurationBuilder.build();
   }
 
+  /**
+   * Get the default configuration serializer.
+   * Currently it is AvroConfigurationSerializer.
+   * Use Tang.toString(...) to produce a human-readable string representation 
of the config.
+   * @return configuration serializer object.
+   */
+  public static ConfigurationSerializer getDefaultSerializer() {
+    return SERIALIZER;
+  }
+
+  /**
+   * Return human-readable representation of the configuration.
+   * @param config input configuration.
+   * @return a string that contains human-readable representation of the input 
configuration.
+   */
+  public static String toString(final Configuration config) {
+    return SERIALIZER.toString(config);
+  }
+
+  /**
+   * Return human-readable representation of the configuration.
+   * If prettyPrint is true, try to produce a nicer text layout, if possible.
+   * @param config input configuration.
+   * @param prettyPrint if true, try to produce a nicer text layout, when 
possible.
+   * Otherwise, use the default options of the serializer.
+   * Default value is false as not all serializers and formats support pretty 
printing.
+   * @return a string that contains human-readable representation of the input 
configuration.
+   */
+  public static String toString(final Configuration config, final boolean 
prettyPrint) {
+    return SERIALIZER.toString(config, prettyPrint);
+  }
 }

Reply via email to