diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 009e042ba9..f928c3328c 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -746,6 +746,9 @@ Release 0.23.0 - Unreleased HADOOP-7744. Ensure failed tests exit with proper error code. (Jonathan Eagles via acmurthy) + HADOOP-7764. Allow HttpServer to set both ACL list and path spec filters. + (Jonathan Eagles via acmurthy) + Release 0.22.0 - Unreleased INCOMPATIBLE CHANGES diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer.java index 37b89f4f89..ccc72edacf 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer.java @@ -123,7 +123,7 @@ public HttpServer(String name, String bindAddress, int port, boolean findPort public HttpServer(String name, String bindAddress, int port, boolean findPort, Configuration conf, Connector connector) throws IOException { - this(name, bindAddress, port, findPort, conf, null, connector); + this(name, bindAddress, port, findPort, conf, null, connector, null); } /** @@ -142,11 +142,7 @@ public HttpServer(String name, String bindAddress, int port, */ public HttpServer(String name, String bindAddress, int port, boolean findPort, Configuration conf, String[] pathSpecs) throws IOException { - this(name, bindAddress, port, findPort, conf, null, null); - for (String path : pathSpecs) { - LOG.info("adding path spec: " + path); - addFilterPathMapping(path, webAppContext); - } + this(name, bindAddress, port, findPort, conf, null, null, pathSpecs); } /** @@ -160,19 +156,20 @@ public HttpServer(String name, String bindAddress, int port, */ public HttpServer(String name, String bindAddress, int port, boolean findPort, Configuration conf) throws IOException { - this(name, bindAddress, port, findPort, conf, null, null); + this(name, bindAddress, port, findPort, conf, null, null, null); } public HttpServer(String name, String bindAddress, int port, boolean findPort, Configuration conf, AccessControlList adminsAcl) throws IOException { - this(name, bindAddress, port, findPort, conf, adminsAcl, null); + this(name, bindAddress, port, findPort, conf, adminsAcl, null, null); } - + /** * Create a status server on the given port. * The jsp scripts are taken from src/webapps/. * @param name The name of the server + * @param bindAddress The address for this server * @param port The port to use on the server * @param findPort whether the server should start at the given port and * increment by 1 until it finds a free port. @@ -182,6 +179,26 @@ public HttpServer(String name, String bindAddress, int port, public HttpServer(String name, String bindAddress, int port, boolean findPort, Configuration conf, AccessControlList adminsAcl, Connector connector) throws IOException { + this(name, bindAddress, port, findPort, conf, adminsAcl, connector, null); + } + + /** + * Create a status server on the given port. + * The jsp scripts are taken from src/webapps/. + * @param name The name of the server + * @param bindAddress The address for this server + * @param port The port to use on the server + * @param findPort whether the server should start at the given port and + * increment by 1 until it finds a free port. + * @param conf Configuration + * @param adminsAcl {@link AccessControlList} of the admins + * @param connector A jetty connection listener + * @param pathSpecs Path specifications that this httpserver will be serving. + * These will be added to any filters. + */ + public HttpServer(String name, String bindAddress, int port, + boolean findPort, Configuration conf, AccessControlList adminsAcl, + Connector connector, String[] pathSpecs) throws IOException { webServer = new Server(); this.findPort = findPort; this.adminsAcl = adminsAcl; @@ -230,7 +247,15 @@ public HttpServer(String name, String bindAddress, int port, c.initFilter(this, conf); } } + addDefaultServlets(); + + if (pathSpecs != null) { + for (String path : pathSpecs) { + LOG.info("adding path spec: " + path); + addFilterPathMapping(path, webAppContext); + } + } } /**