Author: mgrigorov
Date: Thu Jun 30 09:09:19 2011
New Revision: 1141452

URL: http://svn.apache.org/viewvc?rev=1141452&view=rev
Log:
WICKET-3846 Use Bytes for the buffer size to disallow negative values


Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java?rev=1141452&r1=1141451&r2=1141452&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java
 Thu Jun 30 09:09:19 2011
@@ -26,6 +26,7 @@ import org.apache.wicket.request.resourc
 import org.apache.wicket.request.resource.PackageResourceReference;
 import org.apache.wicket.util.io.IOUtils;
 import org.apache.wicket.util.lang.Args;
+import org.apache.wicket.util.lang.Bytes;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
 import org.apache.wicket.util.string.Strings;
@@ -34,9 +35,9 @@ import org.slf4j.LoggerFactory;
 
 /**
  * uses the message digest of a {@link PackageResource} as a version string
- *
+ * 
  * @author Peter Ertl
- *
+ * 
  * @since 1.5
  */
 public class MessageDigestResourceVersion implements IResourceVersion
@@ -44,13 +45,13 @@ public class MessageDigestResourceVersio
        private static final Logger log = 
LoggerFactory.getLogger(MessageDigestResourceVersion.class);
 
        private static final String DEFAULT_ALGORITHM = "MD5";
-       private static final int DEFAULT_BUFFER_SIZE = 8192;
+       private static final Bytes DEFAULT_BUFFER_SIZE = Bytes.bytes(8192);
 
        /** message digest algorithm for computing hashes */
        private final String algorithm;
 
        /** buffer size for computing the digest */
-       private final int bufferSize;
+       private final Bytes bufferSize;
 
        /**
         * create an instance using {@value #DEFAULT_ALGORITHM}
@@ -61,14 +62,12 @@ public class MessageDigestResourceVersio
        }
 
        /**
-        * create an instance using an algorihm that can be 
-        * retrieved by Java Cryptography Architecture (JCA) 
-        * using {@link MessageDigest#getInstance(String)} and 
-        * using an fixed-size internal buffer for digest computation of
-        * {@value #DEFAULT_BUFFER_SIZE} bytes.
-        *
+        * create an instance using an algorithm that can be retrieved by Java 
Cryptography Architecture
+        * (JCA) using {@link MessageDigest#getInstance(String)} and using an 
fixed-size internal buffer
+        * for digest computation of {@value #DEFAULT_BUFFER_SIZE} bytes.
+        * 
         * @param algorithm
-        *           digest algorithm
+        *            digest algorithm
         */
        public MessageDigestResourceVersion(String algorithm)
        {
@@ -76,20 +75,19 @@ public class MessageDigestResourceVersio
        }
 
        /**
-        * create an instance using an algorihm that can be 
-        * retrieved by Java Cryptography Architecture (JCA) 
-        * using {@link MessageDigest#getInstance(String)} and 
-        * using an specified internal buffer for digest computation.
-        *
+        * create an instance using an algorithm that can be retrieved by Java 
Cryptography Architecture
+        * (JCA) using {@link MessageDigest#getInstance(String)} and using an 
specified internal buffer
+        * for digest computation.
+        * 
         * @param algorithm
-        *           digest algorithm
+        *            digest algorithm
         * @param bufferSize
-        *           internal buffer size for digest computation
+        *            internal buffer size for digest computation
         */
-       public MessageDigestResourceVersion(String algorithm, int bufferSize)
+       public MessageDigestResourceVersion(String algorithm, Bytes bufferSize)
        {
                this.algorithm = Args.notEmpty(algorithm, "algorithm");
-               this.bufferSize = bufferSize;
+               this.bufferSize = Args.notNull(bufferSize, "bufferSize");
        }
 
        public String getVersion(PackageResourceReference resourceReference)
@@ -98,7 +96,7 @@ public class MessageDigestResourceVersio
 
                if (streamInfo == null)
                {
-                       log.debug("could not get stream info for " + 
resourceReference);
+                       log.debug("could not get stream info for '{}'", 
resourceReference);
                        return null;
                }
 
@@ -112,7 +110,7 @@ public class MessageDigestResourceVersio
                }
                catch (ResourceStreamNotFoundException e)
                {
-                       log.warn("resource stream not found for " + 
resourceReference);
+                       log.warn("resource stream not found for '{}'", 
resourceReference);
                        return null;
                }
                catch (IOException e)
@@ -143,7 +141,7 @@ public class MessageDigestResourceVersio
         * compute digest for resource stream
         * 
         * @param resourceStream
-        *           resource stream to compute message digest for
+        *            resource stream to compute message digest for
         * 
         * @return binary message digest
         * 
@@ -158,7 +156,8 @@ public class MessageDigestResourceVersio
 
                try
                {
-                       final byte[] buf = new byte[bufferSize];
+                       int bufferLen = (int)Math.min(Integer.MAX_VALUE, 
bufferSize.bytes());
+                       final byte[] buf = new byte[bufferLen];
                        int len;
 
                        while ((len = inputStream.read(buf)) != -1)


Reply via email to