SLING-10825 : better logging and close resourcs
diff --git a/src/main/java/org/apache/sling/testing/clients/interceptors/FormBasedAuthInterceptor.java b/src/main/java/org/apache/sling/testing/clients/interceptors/FormBasedAuthInterceptor.java
index 409a328..8211cb7 100644
--- a/src/main/java/org/apache/sling/testing/clients/interceptors/FormBasedAuthInterceptor.java
+++ b/src/main/java/org/apache/sling/testing/clients/interceptors/FormBasedAuthInterceptor.java
@@ -16,6 +16,7 @@
*/
package org.apache.sling.testing.clients.interceptors;
+import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpException;
import org.apache.http.HttpHost;
@@ -24,9 +25,11 @@
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
+import org.apache.http.StatusLine;
import org.apache.http.auth.AuthScope;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.cookie.Cookie;
@@ -39,11 +42,16 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.BufferedReader;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
import java.net.URI;
+import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
+import java.util.stream.Collectors;
public class FormBasedAuthInterceptor implements HttpRequestInterceptor, HttpRequestResponseInterceptor {
static final Logger LOG = LoggerFactory.getLogger(FormBasedAuthInterceptor.class);
@@ -59,13 +67,13 @@
public void process(HttpRequest request, HttpContext context) throws HttpException, IOException {
final URI uri = URI.create(request.getRequestLine().getUri());
if (uri.getPath().endsWith(loginPath)) {
- LOG.debug("Request ends with {} so I'm not intercepting the request", loginPath);
+ LOG.trace("Request ends with {} so I'm not intercepting the request", loginPath);
return;
}
Cookie loginCookie = getLoginCookie(context, loginTokenName);
if (loginCookie != null) {
- LOG.debug("Request has cookie {} so I'm not intercepting the request", loginCookie.getName());
+ LOG.trace("Request has cookie {} so I'm not intercepting the request", loginCookie.getName());
return;
}
@@ -79,7 +87,7 @@
}
if (URI.create(HttpClientContext.adapt(context).getRequest().getRequestLine().getUri()).getPath().endsWith(loginPath)) {
- LOG.debug("Request ends with {} so I'm not intercepting the request", loginPath);
+ LOG.trace("Request ends with {} so I'm not intercepting the request", loginPath);
return;
}
@@ -120,14 +128,44 @@
parameters.add(new BasicNameValuePair("j_password", password));
HttpEntity httpEntity = new UrlEncodedFormEntity(parameters, "utf-8");
- HttpPost loginPost = new HttpPost(URI.create(request.getRequestLine().getUri()).resolve(loginPath));
+ URI loginURI = URI.create(request.getRequestLine().getUri()).resolve(loginPath);
+ HttpPost loginPost = new HttpPost(loginURI);
loginPost.setEntity(httpEntity);
- final CloseableHttpClient client = HttpClientBuilder.create()
+ try (CloseableHttpClient client = HttpClientBuilder.create()
.setServiceUnavailableRetryStrategy(new ServerErrorRetryStrategy())
.disableRedirectHandling()
- .build();
-
- client.execute(host, loginPost, context);
+ .build()) {
+
+ try (CloseableHttpResponse response = client.execute(host, loginPost, context)){
+ StatusLine sl = response.getStatusLine();
+
+ if (sl.getStatusCode()>=400) {
+ LOG.error("doLogin : got error login response code {} from '{}'", sl.getStatusCode(), loginURI.toString());
+
+ LOG.error("doLogin : dumping headers: ");
+ for(Header header : response.getAllHeaders()) {
+ LOG.error("doLogin : \t '{}' = '{}'", header.getName(), header.getValue());
+ }
+
+ try (InputStream inputStream = response.getEntity().getContent()){
+ String responseText = new BufferedReader(
+ new InputStreamReader(inputStream, StandardCharsets.UTF_8))
+ .lines()
+ .collect(Collectors.joining("\n"));
+
+ LOG.error("doLogin : error response body was : '{}'", responseText);
+
+
+
+ }
+
+ } else if (getLoginCookie(context, loginTokenName) == null) {
+ LOG.error("doLogin : login response {} from '{}' did not include cookie '{}'.", sl.getStatusCode(), loginURI.toString(), loginTokenName);
+ } else {
+ LOG.debug("doLogin : login response {} from '{}'", sl.getStatusCode(), loginURI.toString());
+ }
+ }
+ }
}
}