atlas git commit: ATLAS-1985: fix incorrect URL-encoding while redirecting to active instance in HA

2017-07-25 Thread madhan
Repository: atlas
Updated Branches:
  refs/heads/0.8-incubating 8cc62810d -> bc2d39d10


ATLAS-1985: fix incorrect URL-encoding while redirecting to active instance in 
HA

Change-Id: I919fcef66368c10b1f8a752043c422a333835508

Signed-off-by: Madhan Neethiraj 
(cherry picked from commit 6547af2d035fae7402d7a4d77e640e0599fb1075)


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

Branch: refs/heads/0.8-incubating
Commit: bc2d39d1066a01599509c4aa366f4fbdc0c51f4c
Parents: 8cc6281
Author: nixonrodrigues 
Authored: Mon Jul 24 18:43:31 2017 +0530
Committer: Madhan Neethiraj 
Committed: Tue Jul 25 07:27:01 2017 -0700

--
 .../atlas/web/filters/ActiveServerFilter.java   | 15 +-
 .../web/filters/ActiveServerFilterTest.java | 21 +++-
 2 files changed, 30 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/atlas/blob/bc2d39d1/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java
--
diff --git 
a/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java 
b/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java
index 29d829f..c68c4b2 100644
--- a/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java
+++ b/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java
@@ -20,7 +20,6 @@ package org.apache.atlas.web.filters;
 
 import org.apache.atlas.web.service.ActiveInstanceState;
 import org.apache.atlas.web.service.ServiceState;
-import org.apache.hadoop.http.HtmlQuoting;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
@@ -37,6 +36,7 @@ import javax.servlet.http.HttpServletResponse;
 import javax.ws.rs.HttpMethod;
 import javax.ws.rs.core.HttpHeaders;
 import java.io.IOException;
+import java.net.URLEncoder;
 
 /**
  * A servlet {@link Filter} that redirects web requests from a passive Atlas 
server instance to an active one.
@@ -127,14 +127,19 @@ public class ActiveServerFilter implements Filter {
 String activeServerAddress) throws IOException 
{
 String requestURI = servletRequest.getRequestURI();
 String queryString = servletRequest.getQueryString();
+
+if (queryString != null && (!queryString.isEmpty())) {
+queryString = URLEncoder.encode(queryString, "UTF-8");
+}
+
 if ((queryString != null) && (!queryString.isEmpty())) {
 requestURI += "?" + queryString;
 }
-String quotedUri = HtmlQuoting.quoteHtmlChars(requestURI);
-if (quotedUri == null) {
-quotedUri = "/";
+
+if (requestURI == null) {
+requestURI = "/";
 }
-String redirectLocation = activeServerAddress + quotedUri;
+String redirectLocation = activeServerAddress + requestURI;
 LOG.info("Not active. Redirecting to {}", redirectLocation);
 // A POST/PUT/DELETE require special handling by sending HTTP 307 
instead of the regular 301/302.
 // Reference: 
http://stackoverflow.com/questions/2068418/whats-the-difference-between-a-302-and-a-307-redirect

http://git-wip-us.apache.org/repos/asf/atlas/blob/bc2d39d1/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java
--
diff --git 
a/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java 
b/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java
index 3396072..60f3d48 100644
--- 
a/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java
+++ 
b/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java
@@ -137,11 +137,30 @@ public class ActiveServerFilterTest {
 
 activeServerFilter.doFilter(servletRequest, servletResponse, 
filterChain);
 
-verify(servletResponse).sendRedirect(ACTIVE_SERVER_ADDRESS + 
"types?query=TRAIT");
+verify(servletResponse).sendRedirect(ACTIVE_SERVER_ADDRESS + 
"types?query%3DTRAIT");
 
 }
 
 @Test
+public void testRedirectedRequestShouldContainEncodeQueryParameters() 
throws IOException, ServletException {
+
when(serviceState.getState()).thenReturn(ServiceState.ServiceStateValue.PASSIVE);
+
+ActiveServerFilter activeServerFilter = new 
ActiveServerFilter(activeInstanceState, serviceState);
+
+
when(activeInstanceState.getActiveServerAddress()).thenReturn(ACTIVE_SERVER_ADDRESS);
+

atlas git commit: ATLAS-1985: fix incorrect URL-encoding while redirecting to active instance in HA

2017-07-25 Thread madhan
Repository: atlas
Updated Branches:
  refs/heads/master 2e8f6013f -> 6547af2d0


ATLAS-1985: fix incorrect URL-encoding while redirecting to active instance in 
HA

Change-Id: I919fcef66368c10b1f8a752043c422a333835508

Signed-off-by: Madhan Neethiraj 


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

Branch: refs/heads/master
Commit: 6547af2d035fae7402d7a4d77e640e0599fb1075
Parents: 2e8f601
Author: nixonrodrigues 
Authored: Mon Jul 24 18:43:31 2017 +0530
Committer: Madhan Neethiraj 
Committed: Tue Jul 25 07:09:42 2017 -0700

--
 .../atlas/web/filters/ActiveServerFilter.java   | 15 +-
 .../web/filters/ActiveServerFilterTest.java | 21 +++-
 2 files changed, 30 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/atlas/blob/6547af2d/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java
--
diff --git 
a/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java 
b/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java
index 29d829f..c68c4b2 100644
--- a/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java
+++ b/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java
@@ -20,7 +20,6 @@ package org.apache.atlas.web.filters;
 
 import org.apache.atlas.web.service.ActiveInstanceState;
 import org.apache.atlas.web.service.ServiceState;
-import org.apache.hadoop.http.HtmlQuoting;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
@@ -37,6 +36,7 @@ import javax.servlet.http.HttpServletResponse;
 import javax.ws.rs.HttpMethod;
 import javax.ws.rs.core.HttpHeaders;
 import java.io.IOException;
+import java.net.URLEncoder;
 
 /**
  * A servlet {@link Filter} that redirects web requests from a passive Atlas 
server instance to an active one.
@@ -127,14 +127,19 @@ public class ActiveServerFilter implements Filter {
 String activeServerAddress) throws IOException 
{
 String requestURI = servletRequest.getRequestURI();
 String queryString = servletRequest.getQueryString();
+
+if (queryString != null && (!queryString.isEmpty())) {
+queryString = URLEncoder.encode(queryString, "UTF-8");
+}
+
 if ((queryString != null) && (!queryString.isEmpty())) {
 requestURI += "?" + queryString;
 }
-String quotedUri = HtmlQuoting.quoteHtmlChars(requestURI);
-if (quotedUri == null) {
-quotedUri = "/";
+
+if (requestURI == null) {
+requestURI = "/";
 }
-String redirectLocation = activeServerAddress + quotedUri;
+String redirectLocation = activeServerAddress + requestURI;
 LOG.info("Not active. Redirecting to {}", redirectLocation);
 // A POST/PUT/DELETE require special handling by sending HTTP 307 
instead of the regular 301/302.
 // Reference: 
http://stackoverflow.com/questions/2068418/whats-the-difference-between-a-302-and-a-307-redirect

http://git-wip-us.apache.org/repos/asf/atlas/blob/6547af2d/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java
--
diff --git 
a/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java 
b/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java
index 3396072..60f3d48 100644
--- 
a/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java
+++ 
b/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java
@@ -137,11 +137,30 @@ public class ActiveServerFilterTest {
 
 activeServerFilter.doFilter(servletRequest, servletResponse, 
filterChain);
 
-verify(servletResponse).sendRedirect(ACTIVE_SERVER_ADDRESS + 
"types?query=TRAIT");
+verify(servletResponse).sendRedirect(ACTIVE_SERVER_ADDRESS + 
"types?query%3DTRAIT");
 
 }
 
 @Test
+public void testRedirectedRequestShouldContainEncodeQueryParameters() 
throws IOException, ServletException {
+
when(serviceState.getState()).thenReturn(ServiceState.ServiceStateValue.PASSIVE);
+
+ActiveServerFilter activeServerFilter = new 
ActiveServerFilter(activeInstanceState, serviceState);
+
+
when(activeInstanceState.getActiveServerAddress()).thenReturn(ACTIVE_SERVER_ADDRESS);
+when(servletRequest.getMethod()).thenReturn(HttpMethod.GET);
+