public String getErrorMessageFromTrailers()

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();
    }