in src/main/java/com/amazonaws/services/neptune/rdf/io/NeptuneExportSparqlRepository.java [107:142]
public String getErrorMessageFromTrailers() {
if (this.lastContext == null) {
return "";
}
InputStream responseInStream = (InputStream) this.lastContext.getAttribute("raw-response-inputstream");
ChunkedInputStream chunkedInStream;
if (responseInStream instanceof ChunkedInputStream) {
chunkedInStream = (ChunkedInputStream) responseInStream;
}
else if (responseInStream instanceof EofSensorInputStream) {
// HTTPClient 4.5.13 provides no methods for accessing trailers from a wrapped stream requiring the use of
// reflection to break encapsulation. This bug is being tracked in https://issues.apache.org/jira/browse/HTTPCLIENT-2263.
try {
Method getWrappedStream = EofSensorInputStream.class.getDeclaredMethod("getWrappedStream");
getWrappedStream.setAccessible(true);
chunkedInStream = (ChunkedInputStream) getWrappedStream.invoke(responseInStream);
getWrappedStream.setAccessible(false);
} catch (Exception e) {
return "";
}
}
else {
return "";
}
Header[] trailers = chunkedInStream.getFooters();
StringBuilder messageBuilder = new StringBuilder();
for (Header trailer : trailers) {
try {
messageBuilder.append(URLDecoder.decode(trailer.toString(), "UTF-8"));
} catch (UnsupportedEncodingException e) {
messageBuilder.append(trailer);
}
messageBuilder.append('\n');
}
return messageBuilder.toString();
}