[2/3] hadoop git commit: HADOOP-13628. Support to retrieve specific property from configuration via REST API. Contributed by Weiwei Yang

2017-08-11 Thread jzhuge
HADOOP-13628. Support to retrieve specific property from configuration via REST 
API. Contributed by Weiwei Yang

(cherry picked from commit 00160f71b6d98244fcb1cb58b2db9fc24f1cd672)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/407bbe39
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/407bbe39
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/407bbe39

Branch: refs/heads/branch-2.8
Commit: 407bbe39facf308a6c954e5b901860eacdfd4707
Parents: 8fdcf86
Author: John Zhuge 
Authored: Fri Aug 11 11:02:14 2017 -0700
Committer: John Zhuge 
Committed: Fri Aug 11 11:02:14 2017 -0700

--
 .../org/apache/hadoop/conf/ConfServlet.java |  19 +-
 .../org/apache/hadoop/conf/Configuration.java   | 284 +++
 .../org/apache/hadoop/conf/TestConfServlet.java | 122 +++-
 .../apache/hadoop/conf/TestConfiguration.java   | 139 -
 4 files changed, 491 insertions(+), 73 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/407bbe39/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/ConfServlet.java
--
diff --git 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/ConfServlet.java
 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/ConfServlet.java
index f9a2535..cfd7b97 100644
--- 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/ConfServlet.java
+++ 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/ConfServlet.java
@@ -76,11 +76,14 @@ public class ConfServlet extends HttpServlet {
   response.setContentType("application/json; charset=utf-8");
 }
 
+String name = request.getParameter("name");
 Writer out = response.getWriter();
 try {
-  writeResponse(getConfFromContext(), out, format);
+  writeResponse(getConfFromContext(), out, format, name);
 } catch (BadFormatException bfe) {
   response.sendError(HttpServletResponse.SC_BAD_REQUEST, bfe.getMessage());
+} catch (IllegalArgumentException iae) {
+  response.sendError(HttpServletResponse.SC_NOT_FOUND, iae.getMessage());
 }
 out.close();
   }
@@ -95,17 +98,23 @@ public class ConfServlet extends HttpServlet {
   /**
* Guts of the servlet - extracted for easy testing.
*/
-  static void writeResponse(Configuration conf, Writer out, String format)
-throws IOException, BadFormatException {
+  static void writeResponse(Configuration conf,
+  Writer out, String format, String propertyName)
+  throws IOException, IllegalArgumentException, BadFormatException {
 if (FORMAT_JSON.equals(format)) {
-  Configuration.dumpConfiguration(conf, out);
+  Configuration.dumpConfiguration(conf, propertyName, out);
 } else if (FORMAT_XML.equals(format)) {
-  conf.writeXml(out);
+  conf.writeXml(propertyName, out);
 } else {
   throw new BadFormatException("Bad format: " + format);
 }
   }
 
+  static void writeResponse(Configuration conf, Writer out, String format)
+  throws IOException, BadFormatException {
+writeResponse(conf, out, format, null);
+  }
+
   public static class BadFormatException extends Exception {
 private static final long serialVersionUID = 1L;
 

http://git-wip-us.apache.org/repos/asf/hadoop/blob/407bbe39/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
--
diff --git 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
index a746119..cf02070 100644
--- 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
+++ 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
@@ -101,8 +101,9 @@ import org.w3c.dom.Text;
 import org.xml.sax.SAXException;
 
 import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 
-/** 
+/**
  * Provides access to configuration parameters.
  *
  * Resources
@@ -2756,14 +2757,37 @@ public class Configuration implements 
Iterable>,
 writeXml(new OutputStreamWriter(out, "UTF-8"));
   }
 
-  /** 
-   * Write out the non-default properties in this configuration to the given
-   * {@link Writer}.
-   * 
+  public void writeXml(Writer out) throws IOException {
+writeXml(null, out);
+  }
+
+  /**
+   * Write out the non-default properties in this configuration to the
+   * given {@link Writer}.
+   *
+   * 
+   * When property name is not empty and the property exists in the
+   * configuration, this method writes the property and its attr

[2/3] hadoop git commit: HADOOP-13628. Support to retrieve specific property from configuration via REST API. Contributed by Weiwei Yang

2017-08-11 Thread jzhuge
HADOOP-13628. Support to retrieve specific property from configuration via REST 
API. Contributed by Weiwei Yang

(cherry picked from commit 00160f71b6d98244fcb1cb58b2db9fc24f1cd672)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/76c4aee2
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/76c4aee2
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/76c4aee2

Branch: refs/heads/branch-2
Commit: 76c4aee2e3fd66750df94efd4e5b7504a6c1e6fa
Parents: 9ba3268
Author: John Zhuge 
Authored: Fri Aug 11 10:54:30 2017 -0700
Committer: John Zhuge 
Committed: Fri Aug 11 10:54:30 2017 -0700

--
 .../org/apache/hadoop/conf/ConfServlet.java |  19 +-
 .../org/apache/hadoop/conf/Configuration.java   | 284 +++
 .../org/apache/hadoop/conf/TestConfServlet.java | 122 +++-
 .../apache/hadoop/conf/TestConfiguration.java   | 139 -
 4 files changed, 491 insertions(+), 73 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/76c4aee2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/ConfServlet.java
--
diff --git 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/ConfServlet.java
 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/ConfServlet.java
index f9a2535..cfd7b97 100644
--- 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/ConfServlet.java
+++ 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/ConfServlet.java
@@ -76,11 +76,14 @@ public class ConfServlet extends HttpServlet {
   response.setContentType("application/json; charset=utf-8");
 }
 
+String name = request.getParameter("name");
 Writer out = response.getWriter();
 try {
-  writeResponse(getConfFromContext(), out, format);
+  writeResponse(getConfFromContext(), out, format, name);
 } catch (BadFormatException bfe) {
   response.sendError(HttpServletResponse.SC_BAD_REQUEST, bfe.getMessage());
+} catch (IllegalArgumentException iae) {
+  response.sendError(HttpServletResponse.SC_NOT_FOUND, iae.getMessage());
 }
 out.close();
   }
@@ -95,17 +98,23 @@ public class ConfServlet extends HttpServlet {
   /**
* Guts of the servlet - extracted for easy testing.
*/
-  static void writeResponse(Configuration conf, Writer out, String format)
-throws IOException, BadFormatException {
+  static void writeResponse(Configuration conf,
+  Writer out, String format, String propertyName)
+  throws IOException, IllegalArgumentException, BadFormatException {
 if (FORMAT_JSON.equals(format)) {
-  Configuration.dumpConfiguration(conf, out);
+  Configuration.dumpConfiguration(conf, propertyName, out);
 } else if (FORMAT_XML.equals(format)) {
-  conf.writeXml(out);
+  conf.writeXml(propertyName, out);
 } else {
   throw new BadFormatException("Bad format: " + format);
 }
   }
 
+  static void writeResponse(Configuration conf, Writer out, String format)
+  throws IOException, BadFormatException {
+writeResponse(conf, out, format, null);
+  }
+
   public static class BadFormatException extends Exception {
 private static final long serialVersionUID = 1L;
 

http://git-wip-us.apache.org/repos/asf/hadoop/blob/76c4aee2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
--
diff --git 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
index 40509c1..89714bf 100644
--- 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
+++ 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
@@ -103,8 +103,9 @@ import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 
-/** 
+/**
  * Provides access to configuration parameters.
  *
  * Resources
@@ -2866,14 +2867,37 @@ public class Configuration implements 
Iterable>,
 writeXml(new OutputStreamWriter(out, "UTF-8"));
   }
 
-  /** 
-   * Write out the non-default properties in this configuration to the given
-   * {@link Writer}.
-   * 
+  public void writeXml(Writer out) throws IOException {
+writeXml(null, out);
+  }
+
+  /**
+   * Write out the non-default properties in this configuration to the
+   * given {@link Writer}.
+   *
+   * 
+   * When property name is not empty and the property exists in the
+   * configuration, this method writes the property and its attribu