diff --git a/pom.xml b/pom.xml
index 01017d3..7f4e839 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.greengerong
prerender-java
- 1.6.5-SNAPSHOT
+ 1.6.7
jar
prerender-java
@@ -32,20 +32,54 @@
UTF-8
4.11
1.9.5
- 15.0
+ 27.0-jre
2.6
- 2.4
- 2.5
- 4.3.1
- 1.7.5
+ 2.6
+ 3.1.0
+ 4.5.6
+ 1.7.25
+
+
+ authx-nexus
+ http://nexus.authxlab.com/repository/releases/
+
+
+ authx-nexus
+ http://nexus.authxlab.com/repository/snapshots/
+
+
+
+
+
+ hippo
+ Hippo maven 2 repository.
+ https://maven.onehippo.com/maven2/
+
+
+
+ hippo-maven2-enterprise
+ Hippo Enterprise Maven 2
+ https://maven.onehippo.com/maven2-enterprise
+
+ never
+ fail
+
+
+
+
+ authxlab-nexus
+ http://nexus.authxlab.com/repository/releases/
+
+
+
com.google.guava
guava
${guava.version}
- cdi1.0
+
junit
@@ -71,7 +105,7 @@
javax.servlet
- servlet-api
+ javax.servlet-api
${servlet-api.version}
provided
@@ -87,19 +121,6 @@
-
-
- sonatype-nexus-snapshots
- Sonatype Nexus Snapshots
- https://oss.sonatype.org/content/repositories/snapshots
-
-
- sonatype-nexus-staging
- Nexus Release Repository
- https://oss.sonatype.org/service/local/staging/deploy/maven2/
-
-
-
diff --git a/prerender-java.iml b/prerender-java.iml
deleted file mode 100644
index f74aa01..0000000
--- a/prerender-java.iml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/java/com/github/greengerong/PreRenderSEOFilter.java b/src/main/java/com/github/greengerong/PreRenderSEOFilter.java
index 39195f9..59a4d19 100644
--- a/src/main/java/com/github/greengerong/PreRenderSEOFilter.java
+++ b/src/main/java/com/github/greengerong/PreRenderSEOFilter.java
@@ -1,37 +1,42 @@
package com.github.greengerong;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import org.apache.commons.lang.ArrayUtils;
+
+import javax.servlet.*;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
public class PreRenderSEOFilter implements Filter {
public static final List PARAMETER_NAMES = Lists.newArrayList("preRenderEventHandler", "proxy", "proxyPort",
"prerenderToken", "forwardedURLHeader", "crawlerUserAgents", "extensionsToIgnore", "whitelist",
- "blacklist", "prerenderServiceUrl", "protocol");
+ "blacklist", "prerenderServiceUrl", "protocol", "pathsToIgnore", "qsappend", "requestTimeOut", "socketTimeout");
private PrerenderSeoService prerenderSeoService;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
- this.prerenderSeoService = new PrerenderSeoService(toMap(filterConfig));
+ this.prerenderSeoService = new PrerenderSeoService(toMap(filterConfig),java.util.UUID.randomUUID().toString());
}
@Override
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
- throws IOException, ServletException {
- boolean isPrerendered = prerenderSeoService.prerenderIfEligible(
- (HttpServletRequest) servletRequest, (HttpServletResponse) servletResponse);
- if (!isPrerendered) {
- filterChain.doFilter(servletRequest, servletResponse);
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+ String token = java.util.UUID.randomUUID().toString();
+
+ HttpServletRequest request = (HttpServletRequest) servletRequest;
+ HttpServletResponse response = (HttpServletResponse) servletResponse;
+
+ try {
+ boolean isPrerendered = prerenderSeoService.prerenderIfEligible(request, response, token);
+ if (!isPrerendered) {
+ filterChain.doFilter(servletRequest, servletResponse);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.out.printf("Token: %s Exception: %s \n StackTrace: \n%s%n", token, e, ArrayUtils.toString(e.getStackTrace()));
}
}
diff --git a/src/main/java/com/github/greengerong/PrerenderConfig.java b/src/main/java/com/github/greengerong/PrerenderConfig.java
index a18d314..e17346e 100644
--- a/src/main/java/com/github/greengerong/PrerenderConfig.java
+++ b/src/main/java/com/github/greengerong/PrerenderConfig.java
@@ -20,7 +20,8 @@
public class PrerenderConfig {
private final static Logger log = LoggerFactory.getLogger(PrerenderConfig.class);
- public static final String PRERENDER_IO_SERVICE_URL = "http://service.prerender.io/";
+ private final static int REQUEST_TIME_OUT = 3000;
+ public static final String PRERENDER_IO_SERVICE_URL = "https://service.prerender.io/";
private Map config;
public PrerenderConfig(Map config) {
@@ -135,4 +136,28 @@ private String getDefaultPrerenderIoServiceUrl() {
final String prerenderServiceUrlInEnv = System.getProperty("PRERENDER_SERVICE_URL");
return isNotBlank(prerenderServiceUrlInEnv) ? prerenderServiceUrlInEnv : PRERENDER_IO_SERVICE_URL;
}
+
+ public List getPathsToRemove(){
+ final String pathsToIgnoreFromConfig = config.get("pathsToIgnore");
+ if (isNotBlank(pathsToIgnoreFromConfig)) {
+ return Arrays.asList(pathsToIgnoreFromConfig.trim().split(","));
+ }
+ return null;
+ }
+ public boolean getQSAppend(){
+ final String qsappend = config.get("qsappend");
+ if (isNotBlank(qsappend) && qsappend.trim().toLowerCase().equals("true")) {
+ return true;
+ }
+ return false;
+ }
+ public int getRequestTimeOut(){
+ final String requestTimeOut = config.get("requestTimeOut");
+ if (isNotBlank(requestTimeOut)) {
+ try{ return Integer.parseInt(requestTimeOut);}finally {
+ return REQUEST_TIME_OUT;
+ }
+ }
+ return REQUEST_TIME_OUT;
+ }
}
diff --git a/src/main/java/com/github/greengerong/PrerenderSeoService.java b/src/main/java/com/github/greengerong/PrerenderSeoService.java
index 043a4a9..7cff00b 100644
--- a/src/main/java/com/github/greengerong/PrerenderSeoService.java
+++ b/src/main/java/com/github/greengerong/PrerenderSeoService.java
@@ -2,8 +2,10 @@
import com.google.common.base.Function;
import com.google.common.base.Predicate;
+import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.http.*;
+import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIUtils;
@@ -11,6 +13,7 @@
import org.apache.http.message.BasicHeader;
import org.apache.http.message.HeaderGroup;
import org.apache.http.util.EntityUtils;
+import org.checkerframework.checker.nullness.qual.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,12 +44,16 @@ public class PrerenderSeoService {
* approach does case insensitive lookup faster.
*/
private static final HeaderGroup hopByHopHeaders;
+ private static final String ACCEPT_VALUE = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
+ private static final String ACCEPT_HEADER = "accept";
public static final String ESCAPED_FRAGMENT_KEY = "_escaped_fragment_";
private CloseableHttpClient httpClient;
+
private PrerenderConfig prerenderConfig;
private PreRenderEventHandler preRenderEventHandler;
+ private static final String EMPTY_STRING = "";
- public PrerenderSeoService(Map config) {
+ public PrerenderSeoService(Map config,String token) {
this.prerenderConfig = new PrerenderConfig(config);
this.httpClient = getHttpClient();
}
@@ -68,42 +75,48 @@ public void destroy() {
closeQuietly(httpClient);
}
- public boolean prerenderIfEligible(HttpServletRequest servletRequest, HttpServletResponse servletResponse) {
+ public boolean prerenderIfEligible(HttpServletRequest servletRequest, HttpServletResponse servletResponse, String token) {
try {
- if (handlePrerender(servletRequest, servletResponse)) {
+ if (handlePrerender(servletRequest, servletResponse, token)) {
return true;
}
} catch (Exception e) {
log.error("Prerender service error", e);
+ log.error(String.format("token: %s Exception: %s \n StackTrace: \n%s", token, e, ArrayUtils.toString(e.getStackTrace())));
}
return false;
}
- private boolean handlePrerender(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
- throws URISyntaxException, IOException {
- if (shouldShowPrerenderedPage(servletRequest)) {
+ protected boolean handlePrerender(HttpServletRequest servletRequest, HttpServletResponse servletResponse, String token) throws URISyntaxException, IOException {
+ if (shouldShowPrerenderedPage(token,servletRequest)) {
+ log.trace(String.format("token: %s Request is Prerendered",token));
this.preRenderEventHandler = prerenderConfig.getEventHandler();
- if (beforeRender(servletRequest, servletResponse) || proxyPrerenderedPageResponse(servletRequest, servletResponse)) {
+ if (beforeRender(servletRequest, servletResponse) || proxyPrerenderedPageResponse(token,servletRequest, servletResponse)) {
return true;
}
}
+ log.trace(String.format("token: %s Request is not Prerendered",token));
+
return false;
}
- private boolean shouldShowPrerenderedPage(HttpServletRequest request) throws URISyntaxException {
+ protected boolean shouldShowPrerenderedPage(String token, HttpServletRequest request) throws URISyntaxException {
final String userAgent = request.getHeader("User-Agent");
- final String url = getRequestURL(request);
+ final String url = getRequestURL(token, request);
final String referer = request.getHeader("Referer");
- log.trace(String.format("checking request for %s from User-Agent %s and referer %s", url, userAgent, referer));
+ log.trace(String.format("token: %s checking request for %s from User-Agent %s and referer %s",token, url, userAgent, referer));
+ //System.out.println(String.format("token: %s checking request for %s from User-Agent %s and referer %s",token, url, userAgent, referer));
if (!HttpGet.METHOD_NAME.equals(request.getMethod())) {
- log.trace("Request is not HTTP GET; intercept: no");
+ log.trace(String.format("token: %s Request is not HTTP GET; intercept: no",token));
+ //System.out.println(String.format("token: %s Request is not HTTP GET; intercept: no",token));
return false;
}
if (isInResources(url)) {
- log.trace("request is for a (static) resource; intercept: no");
+ log.trace(String.format("token: %s request is for a (static) resource; intercept: no",token));
+ //System.out.println(String.format("token: %s request is for a (static) resource; intercept: no",token));
return false;
}
@@ -114,32 +127,38 @@ private boolean shouldShowPrerenderedPage(HttpServletRequest request) throws URI
final List whiteList = prerenderConfig.getWhitelist();
if (whiteList != null && !isInWhiteList(url, whiteList)) {
- log.trace("Whitelist is enabled, but this request is not listed; intercept: no");
+ log.trace(String.format("token: %s Whitelist is enabled, but this request is not listed; intercept: no",token));
+ //System.out.println(String.format("token: %s Whitelist is enabled, but this request is not listed; intercept: no",token));
return false;
}
final List blacklist = prerenderConfig.getBlacklist();
if (blacklist != null && isInBlackList(url, referer, blacklist)) {
- log.trace("Blacklist is enabled, and this request is listed; intercept: no");
+ log.trace(String.format("token: %s Blacklist is enabled, and this request is listed; intercept: no",token));
+ //System.out.println(String.format("token: %s Blacklist is enabled, and this request is listed; intercept: no",token));
return false;
}
if (hasEscapedFragment(request)) {
- log.trace("Request Has _escaped_fragment_; intercept: yes");
+ log.trace(String.format("token: %s Request Has _escaped_fragment_; intercept: yes",token));
+ //System.out.println(String.format("token: %s Request Has _escaped_fragment_; intercept: yes",token));
return true;
}
if (StringUtils.isBlank(userAgent)) {
- log.trace("Request has blank userAgent; intercept: no");
+ log.trace(String.format("token: %s Request has blank userAgent; intercept: no",token));
+ //System.out.println(String.format("token: %s Request has blank userAgent; intercept: no",token));
return false;
}
if (!isInSearchUserAgent(userAgent)) {
- log.trace("Request User-Agent is not a search bot; intercept: no");
+ log.trace(String.format("token: %s Request User-Agent is not a search bot; intercept: no",token));
+ //System.out.println(String.format("token: %s Request User-Agent is not a search bot; intercept: no",token));
return false;
}
- log.trace(String.format("Defaulting to request intercept(user-agent=%s): yes", userAgent));
+ log.trace(String.format("token: %s Defaulting to request intercept(user-agent=%s): yes",token, userAgent));
+ //System.out.println(String.format("token: %s Defaulting to request intercept(user-agent=%s): yes",token, userAgent));
return true;
}
@@ -156,10 +175,11 @@ protected CloseableHttpClient getHttpClient() {
*
* @throws java.net.URISyntaxException
*/
- private void copyRequestHeaders(HttpServletRequest servletRequest, HttpRequest proxyRequest)
+ private void copyRequestHeaders(String token, HttpServletRequest servletRequest, HttpRequest proxyRequest)
throws URISyntaxException {
// Get an Enumeration of all of the header names sent by the client
Enumeration> enumerationOfHeaderNames = servletRequest.getHeaderNames();
+ List headersName;
while (enumerationOfHeaderNames.hasMoreElements()) {
String headerName = (String) enumerationOfHeaderNames.nextElement();
//Instead the content-length is effectively set via InputStreamEntity
@@ -177,22 +197,40 @@ private void copyRequestHeaders(HttpServletRequest servletRequest, HttpRequest p
headerValue += ":" + host.getPort();
}
}
+ // Added to avoid 301 loops due to edit-connect asking json
+ if (headerName.toLowerCase().equals(ACCEPT_HEADER)){
+ //System.out.println(String.format("token %s Setting up the ACCEPT header",token));
+ log.trace(String.format("token %s Setting up the ACCEPT header",token));
+ headerValue = ACCEPT_VALUE;
+ }
proxyRequest.addHeader(headerName, headerValue);
}
}
}
}
- private String getRequestURL(HttpServletRequest request) {
+ private String getRequestURL(String token, HttpServletRequest request) {
if (StringUtils.isNotEmpty(prerenderConfig.getForwardedURLHeader())) {
String url = request.getHeader(prerenderConfig.getForwardedURLHeader());
if (StringUtils.isNotEmpty(url)) {
return url;
}
}
+ String url = "";
if (StringUtils.isNotEmpty(prerenderConfig.getProtocol())) {
- String url = request.getRequestURL().toString();
- return url.replace(request.getScheme(), prerenderConfig.getProtocol());
+ url = request.getRequestURL().toString();
+ url = url.replace(request.getScheme(), prerenderConfig.getProtocol());
+ }
+ if (prerenderConfig.getPathsToRemove() != null){
+ url = StringUtils.isNotEmpty(url)?url:request.getRequestURL().toString();
+ for(String path: prerenderConfig.getPathsToRemove()){
+ url = url.replace(path,EMPTY_STRING);
+ }
+ }
+ if(StringUtils.isNotBlank(url)){
+ //System.out.println(String.format("token: %s OriginalUrl %s / NewUrl: %s",token,request.getRequestURL().toString(),url));
+ log.trace(String.format("token: %s OriginalUrl %s / NewUrl: %s",token,request.getRequestURL().toString(),url));
+ return url;
}
return request.getRequestURL().toString();
}
@@ -215,6 +253,11 @@ private void copyResponseHeaders(HttpResponse proxyResponse, final HttpServletRe
public boolean apply(Header header) {
return !hopByHopHeaders.containsHeader(header.getName());
}
+
+ @Override
+ public boolean test(@Nullable Header input) {
+ return false;
+ }
}).transform(new Function() {
@Override
public Boolean apply(Header header) {
@@ -287,6 +330,11 @@ public boolean apply(String regex) {
return pattern.matcher(url).matches() ||
(!StringUtils.isBlank(referer) && pattern.matcher(referer).matches());
}
+
+ @Override
+ public boolean test(@Nullable String input) {
+ return false;
+ }
});
}
@@ -296,6 +344,11 @@ private boolean isInSearchUserAgent(final String userAgent) {
public boolean apply(String item) {
return userAgent.toLowerCase().contains(item.toLowerCase());
}
+
+ @Override
+ public boolean test(@Nullable String input) {
+ return false;
+ }
});
}
@@ -307,6 +360,11 @@ public boolean apply(String item) {
return (url.indexOf('?') >= 0 ? url.substring(0, url.indexOf('?')) : url)
.toLowerCase().endsWith(item);
}
+
+ @Override
+ public boolean test(@Nullable String input) {
+ return false;
+ }
});
}
@@ -316,10 +374,15 @@ private boolean isInWhiteList(final String url, List whitelist) {
public boolean apply(String regex) {
return Pattern.compile(regex).matcher(url).matches();
}
+
+ @Override
+ public boolean test(@Nullable String input) {
+ return false;
+ }
});
}
- private boolean beforeRender(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ protected boolean beforeRender(HttpServletRequest request, HttpServletResponse response) throws IOException {
if (preRenderEventHandler != null) {
final String html = preRenderEventHandler.beforeRender(request);
if (isNotBlank(html)) {
@@ -333,13 +396,16 @@ private boolean beforeRender(HttpServletRequest request, HttpServletResponse res
return false;
}
- private boolean proxyPrerenderedPageResponse(HttpServletRequest request, HttpServletResponse response)
- throws IOException, URISyntaxException {
- final String apiUrl = getApiUrl(getFullUrl(request));
- log.trace(String.format("Prerender proxy will send request to:%s", apiUrl));
+ protected boolean proxyPrerenderedPageResponse(String token, HttpServletRequest request, HttpServletResponse response) throws IOException, URISyntaxException {
+ final String apiUrl = getApiUrl(getFullUrl(token, request));
+ log.trace(String.format("token %s Prerender proxy will send request to:%s",token, apiUrl));
+
final HttpGet getMethod = getHttpGet(apiUrl);
- copyRequestHeaders(request, getMethod);
+ copyRequestHeaders(token,request, getMethod);
withPrerenderToken(getMethod);
+
+ //Added logic to set timeout on request
+ withRequestConfig(getMethod);
CloseableHttpResponse prerenderServerResponse = null;
try {
@@ -350,12 +416,17 @@ private boolean proxyPrerenderedPageResponse(HttpServletRequest request, HttpSer
html = afterRender(request, response, prerenderServerResponse, html);
responseEntity(html, response);
return true;
- } finally {
+ }
+ catch (IOException ex) {
+ response.setStatus(504);
+ throw new IOException(ex);
+ }
+ finally {
closeQuietly(prerenderServerResponse);
}
}
- private String afterRender(HttpServletRequest clientRequest, HttpServletResponse clientResponse, CloseableHttpResponse prerenderServerResponse, String responseHtml) {
+ protected String afterRender(HttpServletRequest clientRequest, HttpServletResponse clientResponse, CloseableHttpResponse prerenderServerResponse, String responseHtml) {
if (preRenderEventHandler != null) {
return preRenderEventHandler.afterRender(clientRequest, clientResponse, prerenderServerResponse, responseHtml);
}
@@ -369,10 +440,22 @@ private void withPrerenderToken(HttpRequest proxyRequest) {
proxyRequest.addHeader("X-Prerender-Token", token);
}
}
+ private void withRequestConfig(HttpGet proxyRequest){
+ RequestConfig.Builder requestConfig = RequestConfig.custom();
+ requestConfig.setConnectTimeout(prerenderConfig.getRequestTimeOut());
+ requestConfig.setConnectionRequestTimeout(prerenderConfig.getRequestTimeOut());
+ requestConfig.setSocketTimeout(prerenderConfig.getRequestTimeOut());
+ proxyRequest.setConfig(requestConfig.build());
+ }
- private String getFullUrl(HttpServletRequest request) {
- final String url = getRequestURL(request);
+ private String getFullUrl(String token, HttpServletRequest request) {
+ final String url = getRequestURL(token, request);
final String queryString = request.getQueryString();
- return isNotBlank(queryString) ? String.format("%s?%s", url, queryString) : url;
+ //Added by RPO
+ //If we ask to provide the querystring
+ if(prerenderConfig.getQSAppend()) {
+ return isNotBlank(queryString) ? String.format("%s?%s", url, queryString) : url;
+ }
+ return url;
}
}
diff --git a/src/test/java/com/github/greengerong/PreRenderSEOFilterTest.java b/src/test/java/com/github/greengerong/PreRenderSEOFilterTest.java
index ba81d67..4114e60 100644
--- a/src/test/java/com/github/greengerong/PreRenderSEOFilterTest.java
+++ b/src/test/java/com/github/greengerong/PreRenderSEOFilterTest.java
@@ -58,7 +58,7 @@ public void setUp() throws Exception {
preRenderSEOFilter = new PreRenderSEOFilter() {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
- setPrerenderSeoService(new PrerenderSeoService(toMap(filterConfig)) {
+ setPrerenderSeoService(new PrerenderSeoService(toMap(filterConfig),"") {
@Override
protected CloseableHttpClient getHttpClient() {
return httpClient;
@@ -100,8 +100,8 @@ public void should_handle_when_url_with_escaped_fragment_() throws Exception {
when(servletRequest.getHeaderNames()).thenReturn(mock(Enumeration.class));
when(httpClient.execute(httpGet)).thenReturn(httpResponse);
when(httpResponse.getStatusLine()).thenReturn(statusLine);
- final HashMap map = Maps.newHashMap();
- map.put(ESCAPED_FRAGMENT_KEY, "");
+ final HashMap map = Maps.newHashMap();
+ map.put(ESCAPED_FRAGMENT_KEY, new String[0]);
when(servletRequest.getParameterMap()).thenReturn(map);
when(statusLine.getStatusCode()).thenReturn(SC_OK);
when(httpResponse.getAllHeaders()).thenReturn(new Header[0]);
@@ -122,7 +122,7 @@ public void should_not_handle_when_user_agent_is_not_crawler() throws Exception
when(servletRequest.getRequestURL()).thenReturn(new StringBuffer("http://localhost/test"));
when(servletRequest.getMethod()).thenReturn(METHOD_NAME);
- when(servletRequest.getParameterMap()).thenReturn(Maps.newHashMap());
+ when(servletRequest.getParameterMap()).thenReturn(Maps.newHashMap());
when(servletRequest.getHeader("User-Agent")).thenReturn("no");
//when
preRenderSEOFilter.doFilter(servletRequest, servletResponse, filterChain);
@@ -140,7 +140,7 @@ public void should_not_handle_when_x_prerender_header_is_present() throws Except
when(servletRequest.getRequestURL()).thenReturn(new StringBuffer("http://localhost/test"));
when(servletRequest.getMethod()).thenReturn(METHOD_NAME);
- when(servletRequest.getParameterMap()).thenReturn(Maps.newHashMap());
+ when(servletRequest.getParameterMap()).thenReturn(Maps.newHashMap());
when(servletRequest.getHeader("User-Agent")).thenReturn("crawler1");
when(servletRequest.getHeader("X-Prerender")).thenReturn("1");
//when
@@ -159,7 +159,7 @@ public void should_not_handle_when_url_is_a_resource() throws Exception {
when(servletRequest.getRequestURL()).thenReturn(new StringBuffer("http://localhost/test.js"));
when(servletRequest.getMethod()).thenReturn(METHOD_NAME);
- when(servletRequest.getParameterMap()).thenReturn(Maps.newHashMap());
+ when(servletRequest.getParameterMap()).thenReturn(Maps.newHashMap());
when(servletRequest.getHeader("User-Agent")).thenReturn("crawler1");
//when
preRenderSEOFilter.doFilter(servletRequest, servletResponse, filterChain);
@@ -178,7 +178,7 @@ public void should_not_handle_when_white_list_is_not_empty_and_url_is_not_in_whi
when(servletRequest.getRequestURL()).thenReturn(new StringBuffer("http://localhost/test"));
when(servletRequest.getMethod()).thenReturn(METHOD_NAME);
- when(servletRequest.getParameterMap()).thenReturn(Maps.newHashMap());
+ when(servletRequest.getParameterMap()).thenReturn(Maps.newHashMap());
when(servletRequest.getHeader("User-Agent")).thenReturn("crawler1");
//when
preRenderSEOFilter.doFilter(servletRequest, servletResponse, filterChain);
@@ -197,7 +197,7 @@ public void should_not_handle_when_black_list_is_not_empty_and_url_is_in_black_l
when(servletRequest.getRequestURL()).thenReturn(new StringBuffer("http://localhost/test"));
when(servletRequest.getMethod()).thenReturn(METHOD_NAME);
- when(servletRequest.getParameterMap()).thenReturn(Maps.newHashMap());
+ when(servletRequest.getParameterMap()).thenReturn(Maps.newHashMap());
when(servletRequest.getHeader("User-Agent")).thenReturn("crawler1");
//when
preRenderSEOFilter.doFilter(servletRequest, servletResponse, filterChain);
@@ -223,8 +223,8 @@ public void should_handle_when_user_agent_is_crawler_and_url_is_not_resource_and
when(servletRequest.getHeaderNames()).thenReturn(mock(Enumeration.class));
when(httpClient.execute(httpGet)).thenReturn(httpResponse);
when(httpResponse.getStatusLine()).thenReturn(statusLine);
- final HashMap map = Maps.newHashMap();
- map.put(ESCAPED_FRAGMENT_KEY, "");
+ final HashMap map = Maps.newHashMap();
+ map.put(ESCAPED_FRAGMENT_KEY, new String[0]);
when(servletRequest.getParameterMap()).thenReturn(map);
when(statusLine.getStatusCode()).thenReturn(SC_OK);
when(httpResponse.getAllHeaders()).thenReturn(new Header[0]);
@@ -253,8 +253,8 @@ public void should_handle_when_every_thing_is_ok_but_prerender_server_response_i
when(servletRequest.getHeaderNames()).thenReturn(mock(Enumeration.class));
when(httpClient.execute(httpGet)).thenReturn(httpResponse);
when(httpResponse.getStatusLine()).thenReturn(statusLine);
- final HashMap map = Maps.newHashMap();
- map.put(ESCAPED_FRAGMENT_KEY, "");
+ final HashMap map = Maps.newHashMap();
+ map.put(ESCAPED_FRAGMENT_KEY, new String[0]);
when(servletRequest.getParameterMap()).thenReturn(map);
when(statusLine.getStatusCode()).thenReturn(SC_NOT_FOUND);
when(httpResponse.getAllHeaders()).thenReturn(new Header[0]);
@@ -290,8 +290,8 @@ public void should_handle_when_user_agent_is_crawler_and_url_is_not_resource_and
when(servletRequest.getHeaderNames()).thenReturn(mock(Enumeration.class));
when(httpClient.execute(httpGet)).thenReturn(httpResponse);
when(httpResponse.getStatusLine()).thenReturn(statusLine);
- final HashMap map = Maps.newHashMap();
- map.put(ESCAPED_FRAGMENT_KEY, "");
+ final HashMap map = Maps.newHashMap();
+ map.put(ESCAPED_FRAGMENT_KEY, new String[0]);
when(servletRequest.getParameterMap()).thenReturn(map);
when(statusLine.getStatusCode()).thenReturn(SC_OK);
when(httpResponse.getAllHeaders()).thenReturn(new Header[0]);
@@ -324,8 +324,8 @@ public void should_use_request_url_from_custom_header_if_available() throws Exce
when(servletRequest.getHeaderNames()).thenReturn(mock(Enumeration.class));
when(httpClient.execute(httpGet)).thenReturn(httpResponse);
when(httpResponse.getStatusLine()).thenReturn(statusLine);
- final HashMap map = Maps.newHashMap();
- map.put(ESCAPED_FRAGMENT_KEY, "");
+ final HashMap map = Maps.newHashMap();
+ map.put(ESCAPED_FRAGMENT_KEY, new String[0]);
when(servletRequest.getParameterMap()).thenReturn(map);
when(statusLine.getStatusCode()).thenReturn(SC_OK);
when(httpResponse.getAllHeaders()).thenReturn(new Header[0]);