From 385b21fc27e8570af974b167621b3b51e006acf1 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 9 Aug 2010 15:58:07 +0000 Subject: [PATCH] changed contentLength() from int to long git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3550 50f2f4bb-b051-0410-bef5-90022cba6387 --- .../core/io/AbstractFileResolvingResource.java | 2 +- .../java/org/springframework/core/io/AbstractResource.java | 4 ++-- .../src/main/java/org/springframework/core/io/Resource.java | 2 +- .../web/servlet/resource/ResourceHttpRequestHandler.java | 6 +++++- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/org.springframework.core/src/main/java/org/springframework/core/io/AbstractFileResolvingResource.java b/org.springframework.core/src/main/java/org/springframework/core/io/AbstractFileResolvingResource.java index a7857a7460d..d285503697f 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/io/AbstractFileResolvingResource.java +++ b/org.springframework.core/src/main/java/org/springframework/core/io/AbstractFileResolvingResource.java @@ -129,7 +129,7 @@ public abstract class AbstractFileResolvingResource extends AbstractResource { } @Override - public int contentLength() throws IOException { + public long contentLength() throws IOException { URL url = getURL(); if (ResourceUtils.isFileURL(url)) { // Proceed with file system resolution... diff --git a/org.springframework.core/src/main/java/org/springframework/core/io/AbstractResource.java b/org.springframework.core/src/main/java/org/springframework/core/io/AbstractResource.java index 6cd0acdd01f..fd5b62f932c 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/io/AbstractResource.java +++ b/org.springframework.core/src/main/java/org/springframework/core/io/AbstractResource.java @@ -112,8 +112,8 @@ public abstract class AbstractResource implements Resource { * if available. * @see #getFile() */ - public int contentLength() throws IOException { - return (int) getFile().length(); + public long contentLength() throws IOException { + return getFile().length(); } /** diff --git a/org.springframework.core/src/main/java/org/springframework/core/io/Resource.java b/org.springframework.core/src/main/java/org/springframework/core/io/Resource.java index f8ba779db40..e57a9776449 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/io/Resource.java +++ b/org.springframework.core/src/main/java/org/springframework/core/io/Resource.java @@ -96,7 +96,7 @@ public interface Resource extends InputStreamSource { * @throws IOException if the resource cannot be resolved * (in the file system or as some other known physical resource type) */ - int contentLength() throws IOException; + long contentLength() throws IOException; /** * Determine the last-modified timestamp for this resource. diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java index 8b9b9ea2ccc..fdf47d0a058 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java @@ -148,7 +148,11 @@ public class ResourceHttpRequestHandler extends WebContentGenerator implements H if (mediaType != null) { response.setContentType(mediaType.toString()); } - response.setContentLength(resource.contentLength()); + long length = resource.contentLength(); + if (length > Integer.MAX_VALUE) { + throw new IOException("Resource content too long (beyond Integer.MAX_VALUE): " + resource); + } + response.setContentLength((int) length); FileCopyUtils.copy(resource.getInputStream(), response.getOutputStream()); }