summaryrefslogtreecommitdiffstats
path: root/vespa-athenz
diff options
context:
space:
mode:
authorMorten Tokle <mortent@verizonmedia.com>2020-03-05 09:26:44 +0100
committerMorten Tokle <mortent@verizonmedia.com>2020-03-05 10:04:42 +0100
commit71f4f6f5663a487dc439f6d446ffc82fc8795693 (patch)
tree89c65aa4b4f9397b4df65f76ed15437ccf98f837 /vespa-athenz
parent749bb37f6e77ffa43e250799a6940bccd268dc6c (diff)
Log errors
Diffstat (limited to 'vespa-athenz')
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/ClientBase.java19
1 files changed, 16 insertions, 3 deletions
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/ClientBase.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/ClientBase.java
index 97a04e21d4b..c1ce45c35da 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/ClientBase.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/ClientBase.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.athenz.client.common;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.yahoo.vespa.athenz.client.common.bindings.ErrorResponseEntity;
@@ -16,6 +17,7 @@ import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
@@ -23,12 +25,16 @@ import java.io.IOException;
import java.io.UncheckedIOException;
import java.time.Duration;
import java.util.function.Supplier;
+import java.util.logging.Level;
+import java.util.logging.Logger;
/**
* @author bjorncs
*/
public abstract class ClientBase implements AutoCloseable {
+ private static final Logger logger = Logger.getLogger(ClientBase.class.getName());
+
private static final ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule());
private final CloseableHttpClient client;
@@ -59,15 +65,22 @@ public abstract class ClientBase implements AutoCloseable {
}
protected <T> T readEntity(HttpResponse response, Class<T> entityType) throws IOException {
- if (isSuccess(response.getStatusLine().getStatusCode())) {
+ int statusCode = response.getStatusLine().getStatusCode();
+ if (isSuccess(statusCode)) {
if (entityType.equals(Void.class)) {
return null;
} else {
return objectMapper.readValue(response.getEntity().getContent(), entityType);
}
} else {
- ErrorResponseEntity errorEntity = objectMapper.readValue(response.getEntity().getContent(), ErrorResponseEntity.class);
- throw exceptionFactory.createException(errorEntity.code, errorEntity.description);
+ byte[] entity = EntityUtils.toByteArray(response.getEntity());
+ try {
+ ErrorResponseEntity errorEntity = objectMapper.readValue(entity, ErrorResponseEntity.class);
+ throw exceptionFactory.createException(errorEntity.code, errorEntity.description);
+ } catch (JsonMappingException e) {
+ logger.log(Level.INFO, String.format("Response returned status %d, but error response not parseable: %s", statusCode, new String(entity)), e);
+ throw new RuntimeException("Non JSON response from Athenz.");
+ }
}
}