fix missing logging of requests
This commit is contained in:
parent
52cbe69651
commit
27852389d6
|
@ -44,6 +44,7 @@ public class HTMLClientLogger extends BaseLogger implements ToolingClientLogger
|
||||||
|
|
||||||
private static final boolean DEBUG = false;
|
private static final boolean DEBUG = false;
|
||||||
|
|
||||||
|
private boolean req = false;
|
||||||
private PrintStream file;
|
private PrintStream file;
|
||||||
|
|
||||||
public HTMLClientLogger(String log) {
|
public HTMLClientLogger(String log) {
|
||||||
|
@ -80,6 +81,7 @@ public class HTMLClientLogger extends BaseLogger implements ToolingClientLogger
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file.println("</pre>");
|
file.println("</pre>");
|
||||||
|
req = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -87,6 +89,10 @@ public class HTMLClientLogger extends BaseLogger implements ToolingClientLogger
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
System.out.println(" txlog resp: " +outcome+" "+present(body));
|
System.out.println(" txlog resp: " +outcome+" "+present(body));
|
||||||
}
|
}
|
||||||
|
if (!req) {
|
||||||
|
System.out.println("Record Response without request");
|
||||||
|
}
|
||||||
|
req = false;
|
||||||
if (file == null)
|
if (file == null)
|
||||||
return;
|
return;
|
||||||
file.println("<pre>");
|
file.println("<pre>");
|
||||||
|
|
|
@ -21,6 +21,7 @@ public class Client {
|
||||||
private ToolingClientLogger logger;
|
private ToolingClientLogger logger;
|
||||||
private int retryCount;
|
private int retryCount;
|
||||||
private long timeout = DEFAULT_TIMEOUT;
|
private long timeout = DEFAULT_TIMEOUT;
|
||||||
|
private byte[] payload;
|
||||||
|
|
||||||
public ToolingClientLogger getLogger() {
|
public ToolingClientLogger getLogger() {
|
||||||
return logger;
|
return logger;
|
||||||
|
@ -50,6 +51,7 @@ public class Client {
|
||||||
String resourceFormat,
|
String resourceFormat,
|
||||||
String message,
|
String message,
|
||||||
long timeout) throws IOException {
|
long timeout) throws IOException {
|
||||||
|
this.payload = null;
|
||||||
Request.Builder request = new Request.Builder()
|
Request.Builder request = new Request.Builder()
|
||||||
.method("OPTIONS", null)
|
.method("OPTIONS", null)
|
||||||
.url(optionsUri.toURL());
|
.url(optionsUri.toURL());
|
||||||
|
@ -62,6 +64,7 @@ public class Client {
|
||||||
Headers headers,
|
Headers headers,
|
||||||
String message,
|
String message,
|
||||||
long timeout) throws IOException {
|
long timeout) throws IOException {
|
||||||
|
this.payload = null;
|
||||||
Request.Builder request = new Request.Builder()
|
Request.Builder request = new Request.Builder()
|
||||||
.url(resourceUri.toURL());
|
.url(resourceUri.toURL());
|
||||||
|
|
||||||
|
@ -86,6 +89,7 @@ public class Client {
|
||||||
String message,
|
String message,
|
||||||
long timeout) throws IOException {
|
long timeout) throws IOException {
|
||||||
if (payload == null) throw new EFhirClientException("PUT requests require a non-null payload");
|
if (payload == null) throw new EFhirClientException("PUT requests require a non-null payload");
|
||||||
|
this.payload = payload;
|
||||||
RequestBody body = RequestBody.create(payload);
|
RequestBody body = RequestBody.create(payload);
|
||||||
Request.Builder request = new Request.Builder()
|
Request.Builder request = new Request.Builder()
|
||||||
.url(resourceUri.toURL())
|
.url(resourceUri.toURL())
|
||||||
|
@ -109,6 +113,7 @@ public class Client {
|
||||||
String message,
|
String message,
|
||||||
long timeout) throws IOException {
|
long timeout) throws IOException {
|
||||||
if (payload == null) throw new EFhirClientException("POST requests require a non-null payload");
|
if (payload == null) throw new EFhirClientException("POST requests require a non-null payload");
|
||||||
|
this.payload = payload;
|
||||||
RequestBody body = RequestBody.create(MediaType.parse(resourceFormat + ";charset=" + DEFAULT_CHARSET), payload);
|
RequestBody body = RequestBody.create(MediaType.parse(resourceFormat + ";charset=" + DEFAULT_CHARSET), payload);
|
||||||
Request.Builder request = new Request.Builder()
|
Request.Builder request = new Request.Builder()
|
||||||
.url(resourceUri.toURL())
|
.url(resourceUri.toURL())
|
||||||
|
@ -174,7 +179,7 @@ public class Client {
|
||||||
.withMessage(message)
|
.withMessage(message)
|
||||||
.withHeaders(headers == null ? new Headers.Builder().build() : headers)
|
.withHeaders(headers == null ? new Headers.Builder().build() : headers)
|
||||||
.withTimeout(timeout, TimeUnit.MILLISECONDS)
|
.withTimeout(timeout, TimeUnit.MILLISECONDS)
|
||||||
.executeAsBatch();
|
.executeAsBatch(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T extends Resource> ResourceRequest<T> executeFhirRequest(Request.Builder request,
|
public <T extends Resource> ResourceRequest<T> executeFhirRequest(Request.Builder request,
|
||||||
|
@ -190,6 +195,6 @@ public class Client {
|
||||||
.withMessage(message)
|
.withMessage(message)
|
||||||
.withHeaders(headers == null ? new Headers.Builder().build() : headers)
|
.withHeaders(headers == null ? new Headers.Builder().build() : headers)
|
||||||
.withTimeout(timeout, TimeUnit.MILLISECONDS)
|
.withTimeout(timeout, TimeUnit.MILLISECONDS)
|
||||||
.execute();
|
.execute(payload);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package org.hl7.fhir.r5.utils.client.network;
|
package org.hl7.fhir.r5.utils.client.network;
|
||||||
|
|
||||||
import okhttp3.*;
|
import okhttp3.*;
|
||||||
|
import okio.RealBufferedSink;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.hl7.fhir.r5.formats.IParser;
|
import org.hl7.fhir.r5.formats.IParser;
|
||||||
import org.hl7.fhir.r5.formats.JsonParser;
|
import org.hl7.fhir.r5.formats.JsonParser;
|
||||||
|
@ -201,18 +203,30 @@ public class FhirRequestBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Request buildRequest() {
|
protected Request buildRequest() {
|
||||||
return httpRequest.build();
|
Request req = httpRequest.build();
|
||||||
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T extends Resource> ResourceRequest<T> execute() throws IOException {
|
public <T extends Resource> ResourceRequest<T> execute(byte[] payload) throws IOException {
|
||||||
formatHeaders(httpRequest, resourceFormat, headers);
|
formatHeaders(httpRequest, resourceFormat, headers);
|
||||||
|
logRequest(payload);
|
||||||
Response response = getHttpClient().newCall(httpRequest.build()).execute();
|
Response response = getHttpClient().newCall(httpRequest.build()).execute();
|
||||||
T resource = unmarshalReference(response, resourceFormat);
|
T resource = unmarshalReference(response, resourceFormat);
|
||||||
return new ResourceRequest<T>(resource, response.code(), getLocationHeader(response.headers()));
|
return new ResourceRequest<T>(resource, response.code(), getLocationHeader(response.headers()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Bundle executeAsBatch() throws IOException {
|
public void logRequest(byte[] payload) {
|
||||||
|
if (logger != null) {
|
||||||
|
List<String> headerList = new ArrayList<>(Collections.emptyList());
|
||||||
|
Map<String, List<String>> headerMap = headers.toMultimap();
|
||||||
|
headerMap.keySet().forEach(key -> headerMap.get(key).forEach(value -> headerList.add(key + ":" + value)));
|
||||||
|
logger.logRequest(httpRequest.getMethod$okhttp().toString(), httpRequest.getUrl$okhttp().toString(), headerList, payload);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Bundle executeAsBatch(byte[] payload) throws IOException {
|
||||||
formatHeaders(httpRequest, resourceFormat, null);
|
formatHeaders(httpRequest, resourceFormat, null);
|
||||||
|
logRequest(payload);
|
||||||
Response response = getHttpClient().newCall(httpRequest.build()).execute();
|
Response response = getHttpClient().newCall(httpRequest.build()).execute();
|
||||||
return unmarshalFeed(response, resourceFormat);
|
return unmarshalFeed(response, resourceFormat);
|
||||||
}
|
}
|
||||||
|
@ -302,6 +316,7 @@ public class FhirRequestBuilder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logs the given {@link Response}, using the current {@link ToolingClientLogger}. If the current
|
* Logs the given {@link Response}, using the current {@link ToolingClientLogger}. If the current
|
||||||
* {@link FhirRequestBuilder#logger} is null, no action is taken.
|
* {@link FhirRequestBuilder#logger} is null, no action is taken.
|
||||||
|
|
Loading…
Reference in New Issue