diff --git a/source/java/org/alfresco/repo/content/AbstractContentWriter.java b/source/java/org/alfresco/repo/content/AbstractContentWriter.java index 1ac28b67d4..2e514745f8 100644 --- a/source/java/org/alfresco/repo/content/AbstractContentWriter.java +++ b/source/java/org/alfresco/repo/content/AbstractContentWriter.java @@ -492,13 +492,12 @@ public abstract class AbstractContentWriter extends AbstractContentAccessor impl *
* Both streams are closed but any IOExceptions are thrown */ - private final int copyStreams(InputStream in, OutputStream out) throws IOException + private final long copyStreams(InputStream in, OutputStream out) throws IOException { ContentLimitProvider contentLimitProvider = getContentLimitProvider(); final long sizeLimit = contentLimitProvider.getSizeLimit(); - int byteCount = sizeLimitedStreamCopier.copyStreams(in, out, sizeLimit); - + long byteCount = sizeLimitedStreamCopier.copyStreamsLong(in, out, sizeLimit); return byteCount; } diff --git a/source/java/org/alfresco/repo/content/LimitedStreamCopier.java b/source/java/org/alfresco/repo/content/LimitedStreamCopier.java index d53f161f89..9756e7249c 100644 --- a/source/java/org/alfresco/repo/content/LimitedStreamCopier.java +++ b/source/java/org/alfresco/repo/content/LimitedStreamCopier.java @@ -51,7 +51,18 @@ public final class LimitedStreamCopier */ public final int copyStreams(InputStream in, OutputStream out, long sizeLimit) throws IOException { - int byteCount = 0; + long bytes = copyStreamsLong(in, out, sizeLimit); + if (bytes > Integer.MAX_VALUE) + { + throw new IllegalArgumentException(bytes + " cannot be cast to int."); + } + + return (int) bytes; + } + + public final long copyStreamsLong(InputStream in, OutputStream out, long sizeLimit) throws IOException + { + long byteCount = 0; IOException error = null; long totalBytesRead = 0;