SLIDER-619 registry list and listconf commands to save output to --out file
diff --git a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
index d9100e4..fcc6ef6 100644
--- a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
+++ b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
@@ -153,7 +153,9 @@
 
 import java.io.File;
 import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.PrintStream;
 import java.io.StringWriter;
 import java.io.Writer;
 import java.net.InetSocketAddress;
@@ -3000,16 +3002,28 @@
     RegistryRetriever retriever = new RegistryRetriever(instance);
     PublishedConfigSet configurations =
         retriever.getConfigurations(!registryArgs.internal);
-
-    for (String configName : configurations.keys()) {
-      if (!registryArgs.verbose) {
-        log.info("{}", configName);
+    PrintStream out = null;
+    try {
+      if (registryArgs.out != null) {
+        out = new PrintStream(new FileOutputStream(registryArgs.out));
       } else {
-        PublishedConfiguration published =
-            configurations.get(configName);
-        log.info("{} : {}",
-            configName,
-            published.description);
+        out = System.out;
+      }
+      for (String configName : configurations.keys()) {
+        if (!registryArgs.verbose) {
+          out.println(configName);
+        } else {
+          PublishedConfiguration published =
+              configurations.get(configName);
+          out.printf("%s: %s\n",
+              configName,
+              published.description);
+        }
+      }
+    } finally {
+      if (registryArgs.out != null && out != null) {
+        out.flush();
+        out.close();
       }
     }
   }
@@ -3028,16 +3042,34 @@
     RegistryRetriever retriever = new RegistryRetriever(instance);
     PublishedExportsSet exports =
         retriever.getExports(!registryArgs.internal);
-
-    for (String exportName : exports.keys()) {
-      if (!registryArgs.verbose) {
-        log.info("{}", exportName);
+    PrintStream out = null;
+    boolean streaming = false;
+    try {
+      if (registryArgs.out != null) {
+        out = new PrintStream(new FileOutputStream(registryArgs.out));
+        streaming = true;
+        log.debug("Saving output to {}", registryArgs.out);
       } else {
-        PublishedExports published =
-            exports.get(exportName);
-        log.info("{} : {}",
-                 exportName,
-                 published.description);
+        out = System.out;
+      }
+      log.debug("Number of exports: {}", exports.keys().size());
+      for (String exportName : exports.keys()) {
+        if (streaming) {
+          log.debug(exportName);
+        }
+        if (!registryArgs.verbose) {
+          out.println(exportName);
+        } else {
+          PublishedExports published = exports.get(exportName);
+          out.printf("%s: %s\n",
+              exportName,
+              published.description);
+        }
+      }
+    } finally {
+      if (streaming) {
+        out.flush();
+        out.close();
       }
     }
   }
diff --git a/slider-core/src/main/java/org/apache/slider/common/params/ActionRegistryArgs.java b/slider-core/src/main/java/org/apache/slider/common/params/ActionRegistryArgs.java
index 4b4c30a..da1b0e5 100644
--- a/slider-core/src/main/java/org/apache/slider/common/params/ActionRegistryArgs.java
+++ b/slider-core/src/main/java/org/apache/slider/common/params/ActionRegistryArgs.java
@@ -97,6 +97,7 @@
   @Parameter(names = {ARG_LISTEXP},
              description = "list exports")
   public boolean listExports;
+
   @Parameter(names = {ARG_GETEXP},
              description = "get export")
   public String getExport;
@@ -154,7 +155,7 @@
       throw new UsageException(USAGE);
     }
 
-    if (out != null && (lists > 0 || set == 0)) {
+    if (out != null && ( set == 0)) {
       throw new UsageException("output path"
            + " is only supported on 'get' operations: ");
     }