hadoop-common-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From g...@apache.org
Subject hadoop git commit: YARN-1728. Workaround guice3x-undecoded pathInfo in YARN WebApp. (Yuanbo Liu via gera)
Date Tue, 28 Feb 2017 18:09:26 GMT
Repository: hadoop
Updated Branches:
  refs/heads/branch-2.7 33f426334 -> c8b1112ed


YARN-1728. Workaround guice3x-undecoded pathInfo in YARN WebApp. (Yuanbo Liu via gera)

(cherry picked from commit df35ba81fe26f526a1534b72089fbb310efccdd9)


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

Branch: refs/heads/branch-2.7
Commit: c8b1112ed977408cddea5b645ce7dfd2fe7ded51
Parents: 33f4263
Author: Gera Shegalov <gera@apache.org>
Authored: Tue Feb 28 09:41:54 2017 -0800
Committer: Gera Shegalov <gera@apache.org>
Committed: Tue Feb 28 10:07:18 2017 -0800

----------------------------------------------------------------------
 .../apache/hadoop/yarn/webapp/Dispatcher.java   | 11 +++++++
 .../apache/hadoop/yarn/webapp/TestWebApp.java   | 30 ++++++++++++++++++++
 2 files changed, 41 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/c8b1112e/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/Dispatcher.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/Dispatcher.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/Dispatcher.java
index 66dd21b..2f49922 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/Dispatcher.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/Dispatcher.java
@@ -21,6 +21,8 @@ package org.apache.hadoop.yarn.webapp;
 import static com.google.common.base.Preconditions.checkState;
 
 import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.Timer;
 import java.util.TimerTask;
 
@@ -115,6 +117,15 @@ public class Dispatcher extends HttpServlet {
     if (pathInfo == null) {
       pathInfo = "/";
     }
+    // The implementation class of HttpServletRequest in
+    // Guice-3.0 does not decode paths that are encoded,
+    // decode path info here for further operation.
+    try {
+      pathInfo = new URI(pathInfo).getPath();
+    }  catch (URISyntaxException ex) {
+      // Just leave it alone for compatibility.
+      LOG.error(pathInfo + ": Failed to decode path.", ex);
+    }
     Controller.RequestContext rc =
         injector.getInstance(Controller.RequestContext.class);
     if (setCookieParams(rc, req) > 0) {

http://git-wip-us.apache.org/repos/asf/hadoop/blob/c8b1112e/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/webapp/TestWebApp.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/webapp/TestWebApp.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/webapp/TestWebApp.java
index 6eaeb2b..99677df 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/webapp/TestWebApp.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/webapp/TestWebApp.java
@@ -33,6 +33,7 @@ import static org.junit.Assert.assertTrue;
 import java.io.InputStream;
 import java.net.HttpURLConnection;
 import java.net.URL;
+import java.net.URLEncoder;
 
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.hadoop.yarn.MockApps;
@@ -260,6 +261,35 @@ public class TestWebApp {
     }
   }
 
+  @Test public void testEncodedUrl() throws Exception {
+    WebApp app =
+        WebApps.$for("test", TestWebApp.class, this, "ws").start(new WebApp() {
+          @Override
+          public void setup() {
+            bind(MyTestJAXBContextResolver.class);
+            bind(MyTestWebService.class);
+
+            route("/:foo", FooController.class);
+          }
+        });
+    String baseUrl = baseUrl(app);
+
+    try {
+      // Test encoded url
+      String rawPath = "localhost:8080";
+      String encodedUrl = baseUrl + "test/" +
+          URLEncoder.encode(rawPath, "UTF-8");
+      assertEquals("foo" + rawPath, getContent(encodedUrl).trim());
+
+      rawPath = "@;%$";
+      encodedUrl = baseUrl + "test/" +
+          URLEncoder.encode(rawPath, "UTF-8");
+      assertEquals("foo" + rawPath, getContent(encodedUrl).trim());
+    } finally {
+      app.stop();
+    }
+  }
+
   // This is to test the GuiceFilter should only be applied to webAppContext,
   // not to staticContext  and logContext;
   @Test public void testYARNWebAppContext() throws Exception {


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org


Mime
View raw message