Author: markt Date: Wed Sep 12 20:04:01 2012 New Revision: 1384104 URL: http://svn.apache.org/viewvc?rev=1384104&view=rev Log: Implement a TODO: - getContent()
Modified: tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/FileResource.java tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/JarResource.java tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/LocalStrings.properties tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/ResourceBase.java Modified: tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/FileResource.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/FileResource.java?rev=1384104&r1=1384103&r2=1384104&view=diff ============================================================================== --- tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/FileResource.java (original) +++ tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/FileResource.java Wed Sep 12 20:04:01 2012 @@ -122,12 +122,6 @@ public class FileResource extends Resour } @Override - public byte[] getContent() { - // TODO Auto-generated method stub - return null; - } - - @Override public long getCreation() { try { BasicFileAttributes attrs = Files.readAttributes(resource.toPath(), @@ -162,4 +156,9 @@ public class FileResource extends Resour protected File getResourceInternal() { return resource; } + + @Override + protected Log getLog() { + return log; + } } Modified: tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/JarResource.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/JarResource.java?rev=1384104&r1=1384103&r2=1384104&view=diff ============================================================================== --- tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/JarResource.java (original) +++ tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/JarResource.java Wed Sep 12 20:04:01 2012 @@ -121,12 +121,6 @@ public class JarResource extends Resourc } @Override - public byte[] getContent() { - // TODO Auto-generated method stub - return null; - } - - @Override public long getCreation() { return resource.getTime(); } @@ -143,4 +137,9 @@ public class JarResource extends Resourc return null; } } + + @Override + protected Log getLog() { + return log; + } } Modified: tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/LocalStrings.properties?rev=1384104&r1=1384103&r2=1384104&view=diff ============================================================================== --- tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/LocalStrings.properties (original) +++ tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/LocalStrings.properties Wed Sep 12 20:04:01 2012 @@ -19,3 +19,6 @@ fileResource.getUrlFail=Unable to determ jarResource.getInputStreamFail=Unable to obtain an InputStream for the resource [{0}] located in the JAR [{1}] jarResource.getUrlFail=Unable to determine a URL for the resource [{0}] located in the JAR [{1}] + +resourceBase.getContentFail=Unable to return [{0}] as a byte array +resourceBase.getContentTooLarge=Unable to return [{0}] as a byte array since the resource is [{1}] bytes in size which is larger than the maximum size of a byte array \ No newline at end of file Modified: tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/ResourceBase.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/ResourceBase.java?rev=1384104&r1=1384103&r2=1384104&view=diff ============================================================================== --- tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/ResourceBase.java (original) +++ tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/ResourceBase.java Wed Sep 12 20:04:01 2012 @@ -16,8 +16,12 @@ */ package org.apache.catalina.webresources; +import java.io.IOException; +import java.io.InputStream; + import org.apache.catalina.WebResource; import org.apache.catalina.WebResourceRoot; +import org.apache.juli.logging.Log; import org.apache.tomcat.util.res.StringManager; public abstract class ResourceBase implements WebResource { @@ -59,4 +63,47 @@ public abstract class ResourceBase imple public final String getMimeType() { return mimeType; } + + + @Override + public final byte[] getContent() { + long len = getContentLength(); + + if (len > Integer.MAX_VALUE) { + // Can't create an array that big + throw new ArrayIndexOutOfBoundsException(sm.getString( + "resourceBase.getContentTooLarge", getWebappPath(), + Long.valueOf(len))); + } + + int size = (int) len; + byte[] result = new byte[size]; + + InputStream is = getInputStream(); + + if (is == null) { + return null; + } + + int pos = 0; + try { + while (pos < size) { + int n = is.read(result, pos, size - pos); + if (n < 0) { + break; + } + pos += n; + } + } catch (IOException ioe) { + if (getLog().isDebugEnabled()) { + getLog().debug(sm.getString("resourceBase.getContentFail", + getWebappPath()), ioe); + } + } + + return result; + } + + + protected abstract Log getLog(); } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org