Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/HttpUtils.java URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/HttpUtils.java?rev=1029147&r1=1029146&r2=1029147&view=diff ============================================================================== --- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/HttpUtils.java (original) +++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/HttpUtils.java Sat Oct 30 18:32:15 2010 @@ -153,22 +153,23 @@ public class HttpUtils { * HTTP Response. */ public static class Response { - private int fResponseCode; - private String fResponseMessage; - private Map<String, List<String>> fHeaders; - private InputStream fStream; - private String fErrorContent; + private int responseCode; + private String responseMessage; + private Map<String, List<String>> headers; + private InputStream stream; + private String errorContent; + private BigInteger length; public Response(int responseCode, String responseMessage, Map<String, List<String>> headers, InputStream stream, InputStream errorStream) { - fResponseCode = responseCode; - fResponseMessage = responseMessage; - fStream = stream; + this.responseCode = responseCode; + this.responseMessage = responseMessage; + this.stream = stream; - fHeaders = new HashMap<String, List<String>>(); + this.headers = new HashMap<String, List<String>>(); if (headers != null) { for (Map.Entry<String, List<String>> e : headers.entrySet()) { - fHeaders.put(e.getKey() == null ? null : e.getKey().toLowerCase(), e.getValue()); + this.headers.put(e.getKey() == null ? null : e.getKey().toLowerCase(), e.getValue()); } } @@ -187,28 +188,46 @@ public class HttpUtils { } reader.close(); - fErrorContent = sb.toString(); + errorContent = sb.toString(); } catch (IOException e) { - fErrorContent = "Unable to retrieve content: " + e.getMessage(); + errorContent = "Unable to retrieve content: " + e.getMessage(); } } } + + // get the stream length + String lengthStr = getHeader("Content-Length"); + if (lengthStr != null) { + try { + length = new BigInteger(lengthStr); + } catch (NumberFormatException e) { + } + } + + // if the stream is base64 encoded, decode it + if (stream != null) { + String encoding = getContentTransferEncoding(); + if ((encoding != null) && (encoding.toLowerCase().trim().equals("base64"))) { + length = null; + this.stream = new Base64.InputStream(stream); + } + } } public int getResponseCode() { - return fResponseCode; + return responseCode; } public String getResponseMessage() { - return fResponseMessage; + return responseMessage; } public Map<String, List<String>> getHeaders() { - return fHeaders; + return headers; } public String getHeader(String name) { - List<String> list = fHeaders.get(name.toLowerCase(Locale.US)); + List<String> list = headers.get(name.toLowerCase(Locale.US)); if ((list == null) || (list.isEmpty())) { return null; } @@ -241,31 +260,25 @@ public class HttpUtils { return getHeader("Content-Location"); } - public BigInteger getContentLength() { - String lenStr = getHeader("Content-Length"); - if (lenStr == null) { - return null; - } + public String getContentTransferEncoding() { + return getHeader("Content-Transfer-Encoding"); + } - try { - return new BigInteger(lenStr); - } catch (NumberFormatException nfe) { - return null; - } + public BigInteger getContentLength() { + return length; } public InputStream getStream() { - return fStream; + return stream; } public String getErrorContent() { - return fErrorContent; + return errorContent; } } /** - * @author <a href="mailto:[email protected]">Florian Müller</a> - * + * Output interface. */ public interface Output { void write(OutputStream out) throws Exception;
