From 38525fee63dc5cdbf7323de203ccb03485388c1f Mon Sep 17 00:00:00 2001 From: Andrew Berezovskyi Date: Sun, 22 Nov 2020 00:51:58 +0100 Subject: [PATCH] Log redirects and close consumed streams Signed-off-by: Andrew Berezovskyi --- .../org/eclipse/lyo/client/OslcClient.java | 36 ++++++++++--------- .../lyo/client/RootServicesHelper.java | 29 ++++++++------- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/oslc-client/src/main/java/org/eclipse/lyo/client/OslcClient.java b/oslc-client/src/main/java/org/eclipse/lyo/client/OslcClient.java index 15e605b..b6becc6 100644 --- a/oslc-client/src/main/java/org/eclipse/lyo/client/OslcClient.java +++ b/oslc-client/src/main/java/org/eclipse/lyo/client/OslcClient.java @@ -13,23 +13,6 @@ */ package org.eclipse.lyo.client; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import java.util.Objects; -import java.util.stream.Collectors; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.Invocation.Builder; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; import org.apache.http.HttpHeaders; import org.apache.http.HttpStatus; import org.eclipse.lyo.client.exception.ResourceNotFoundException; @@ -44,6 +27,23 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.ws.rs.client.Client; +import javax.ws.rs.client.ClientBuilder; +import javax.ws.rs.client.Entity; +import javax.ws.rs.client.Invocation.Builder; +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + /** * An OSLC Client that extends the JAX-RS 2.0 REST client with OSLC specific CRUD and * discovery capabilities. Client applications would typically provide a ClientBuilder @@ -266,6 +266,8 @@ public Response getResource (String url, Map requestHeaders, Str if (handleRedirects && Response.Status.fromStatusCode(response.getStatus()).getFamily() == Status.Family.REDIRECTION) { url = response.getStringHeaders().getFirst(HttpHeaders.LOCATION); + logger.debug("Following redirect to {}", url); +// response.close(); response.readEntity(String.class); redirect = true; } else { diff --git a/oslc-client/src/main/java/org/eclipse/lyo/client/RootServicesHelper.java b/oslc-client/src/main/java/org/eclipse/lyo/client/RootServicesHelper.java index 549b1b7..b85ac51 100644 --- a/oslc-client/src/main/java/org/eclipse/lyo/client/RootServicesHelper.java +++ b/oslc-client/src/main/java/org/eclipse/lyo/client/RootServicesHelper.java @@ -13,35 +13,33 @@ */ package org.eclipse.lyo.client; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; - -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; - -import org.apache.http.StatusLine; -import org.apache.http.impl.client.DefaultRedirectStrategy; -import org.eclipse.lyo.client.exception.ResourceNotFoundException; -import org.eclipse.lyo.client.exception.RootServicesException; +import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; +import org.apache.http.StatusLine; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultRedirectStrategy; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.jena.rdf.model.Model; import org.apache.jena.rdf.model.ModelFactory; import org.apache.jena.rdf.model.Property; import org.apache.jena.rdf.model.Resource; import org.apache.jena.rdf.model.Statement; +import org.eclipse.lyo.client.exception.ResourceNotFoundException; +import org.eclipse.lyo.client.exception.RootServicesException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.fasterxml.jackson.databind.ObjectMapper; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriBuilder; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; /** * Helper class to assist in retrieval of attributes from the IBM Rational @@ -141,6 +139,7 @@ private void processRootServices(OslcClient rootServicesClient) throws RootServi InputStream is = response.readEntity(InputStream.class); rdfModel = ModelFactory.createDefaultModel(); rdfModel.read(is,rootServicesUrl); + is.close(); //get the catalog URL this.catalogUrl = getRootServicesProperty(rdfModel, this.catalogNamespace, this.catalogProperty); @@ -171,7 +170,7 @@ private void processRootServices(OslcClient rootServicesClient) throws RootServi } - } + } private String getRootServicesProperty(Model rdfModel, String namespace, String predicate) throws ResourceNotFoundException { String returnVal = null;