diff --git a/nbactions.xml b/nbactions.xml
new file mode 100644
index 0000000..8190b10
--- /dev/null
+++ b/nbactions.xml
@@ -0,0 +1,14 @@
+
+
+
+ CUSTOM-install skip tests
+ install skip tests
+
+ clean
+ install
+
+
+ true
+
+
+
diff --git a/pom.xml b/pom.xml
index 01017d3..e90d7d8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,9 +1,9 @@
4.0.0
- com.github.greengerong
+ com.github.greengerong.wesbank
prerender-java
- 1.6.5-SNAPSHOT
+ 1.6.5
jar
prerender-java
@@ -75,6 +75,11 @@
${servlet-api.version}
provided
+
+ za.wesbank
+ wol-properties
+ 1.0.9
+
org.apache.httpcomponents
httpclient
diff --git a/src/main/java/com/github/greengerong/PrerenderSeoService.java b/src/main/java/com/github/greengerong/PrerenderSeoService.java
index 043a4a9..3cdeea7 100644
--- a/src/main/java/com/github/greengerong/PrerenderSeoService.java
+++ b/src/main/java/com/github/greengerong/PrerenderSeoService.java
@@ -28,9 +28,11 @@
import java.util.regex.Pattern;
import static com.google.common.collect.FluentIterable.from;
+import java.util.concurrent.ExecutionException;
import static org.apache.commons.lang.StringUtils.isNotBlank;
import static org.apache.http.HttpHeaders.CONTENT_LENGTH;
import static org.apache.http.HttpHeaders.HOST;
+import za.wesbank.wbo.service.properties.PropertiesLoader;
public class PrerenderSeoService {
private final static Logger log = LoggerFactory.getLogger(PrerenderSeoService.class);
@@ -69,6 +71,7 @@ public void destroy() {
}
public boolean prerenderIfEligible(HttpServletRequest servletRequest, HttpServletResponse servletResponse) {
+ log.debug("PrerendderSEO: In prerender if eligible");
try {
if (handlePrerender(servletRequest, servletResponse)) {
return true;
@@ -80,13 +83,15 @@ public boolean prerenderIfEligible(HttpServletRequest servletRequest, HttpServle
}
private boolean handlePrerender(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
- throws URISyntaxException, IOException {
+ throws URISyntaxException, IOException, ExecutionException, Exception {
if (shouldShowPrerenderedPage(servletRequest)) {
+ log.debug("PrerendderSEO: In should show prerendered page = true");
this.preRenderEventHandler = prerenderConfig.getEventHandler();
if (beforeRender(servletRequest, servletResponse) || proxyPrerenderedPageResponse(servletRequest, servletResponse)) {
return true;
}
}
+ log.debug("PrerendderSEO: In prerender if eligible = false");
return false;
}
@@ -95,15 +100,15 @@ private boolean shouldShowPrerenderedPage(HttpServletRequest request) throws URI
final String url = getRequestURL(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.debug(String.format("checking request for %s from User-Agent %s and referer %s", url, userAgent, referer));
if (!HttpGet.METHOD_NAME.equals(request.getMethod())) {
- log.trace("Request is not HTTP GET; intercept: no");
+ log.debug("Request is not HTTP GET; intercept: no");
return false;
}
if (isInResources(url)) {
- log.trace("request is for a (static) resource; intercept: no");
+ log.debug("request is for a (static) resource; intercept: no");
return false;
}
@@ -114,32 +119,33 @@ 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.debug("Whitelist is enabled, but this request is not listed; intercept: no");
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.debug("Blacklist is enabled, and this request is listed; intercept: no");
return false;
}
if (hasEscapedFragment(request)) {
- log.trace("Request Has _escaped_fragment_; intercept: yes");
+ log.debug("Request Has _escaped_fragment_; intercept: yes");
return true;
}
if (StringUtils.isBlank(userAgent)) {
- log.trace("Request has blank userAgent; intercept: no");
+ log.debug("Request has blank userAgent; intercept: no");
return false;
}
if (!isInSearchUserAgent(userAgent)) {
- log.trace("Request User-Agent is not a search bot; intercept: no");
+ log.debug("Request User-Agent is not a search bot; intercept: no");
return false;
}
- log.trace(String.format("Defaulting to request intercept(user-agent=%s): yes", userAgent));
+ log.debug(String.format("Defaulting to request intercept(user-agent=%s): yes", userAgent));
+ log.debug("returning true for prerender for request: " + url);
return true;
}
@@ -197,13 +203,16 @@ private String getRequestURL(HttpServletRequest request) {
return request.getRequestURL().toString();
}
- private String getApiUrl(String url) {
- String prerenderServiceUrl = prerenderConfig.getPrerenderServiceUrl();
+ private String getApiUrl(String url) throws ExecutionException {
+ //String prerenderServiceUrl = prerenderConfig.getPrerenderServiceUrl();
+ String prerenderServiceUrl = PropertiesLoader.CONFIG_PARAMS_MAP.get("PRERENDERURL");
if (!prerenderServiceUrl.endsWith("/")) {
prerenderServiceUrl += "/";
}
- return prerenderServiceUrl + url;
+ return prerenderServiceUrl + url.replaceFirst("http", "https").replaceFirst(":80", "");
}
+
+
/**
* Copy proxied response headers back to the servlet client.
@@ -320,7 +329,9 @@ public boolean apply(String regex) {
}
private boolean beforeRender(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ log.debug("PrerendderSEO: In before render");
if (preRenderEventHandler != null) {
+ log.debug("PrerendderSEO: In before render prerendereventhandler is not null");
final String html = preRenderEventHandler.beforeRender(request);
if (isNotBlank(html)) {
final PrintWriter writer = response.getWriter();
@@ -330,12 +341,14 @@ private boolean beforeRender(HttpServletRequest request, HttpServletResponse res
return true;
}
}
+ log.debug("PrerendderSEO: In before render prerendereventhandler is null");
return false;
}
private boolean proxyPrerenderedPageResponse(HttpServletRequest request, HttpServletResponse response)
- throws IOException, URISyntaxException {
+ throws IOException, URISyntaxException, ExecutionException, Exception {
final String apiUrl = getApiUrl(getFullUrl(request));
+ log.debug("Full API URL : " + apiUrl);
log.trace(String.format("Prerender proxy will send request to:%s", apiUrl));
final HttpGet getMethod = getHttpGet(apiUrl);
copyRequestHeaders(request, getMethod);
@@ -350,7 +363,12 @@ private boolean proxyPrerenderedPageResponse(HttpServletRequest request, HttpSer
html = afterRender(request, response, prerenderServerResponse, html);
responseEntity(html, response);
return true;
- } finally {
+ }
+ catch(Exception e) {
+ log.debug("Prerender : Error occured during prefetch " ,e);
+ throw e;
+ }
+ finally {
closeQuietly(prerenderServerResponse);
}
}