Author: markt
Date: Thu Mar 21 10:55:59 2013
New Revision: 1459223

URL: http://svn.apache.org/r1459223
Log:
Add the ability to decode a subset of a byte array as this will enable Tomcat 
to use the decoder more efficiently.

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/codec/binary/Base64.java
    tomcat/trunk/java/org/apache/tomcat/util/codec/binary/BaseNCodec.java

Modified: tomcat/trunk/java/org/apache/tomcat/util/codec/binary/Base64.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/codec/binary/Base64.java?rev=1459223&r1=1459222&r2=1459223&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/codec/binary/Base64.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/codec/binary/Base64.java Thu Mar 
21 10:55:59 2013
@@ -693,7 +693,12 @@ public class Base64 extends BaseNCodec {
      * @return Array containing decoded data.
      */
     public static byte[] decodeBase64(final byte[] base64Data) {
-        return new Base64().decode(base64Data);
+        return decodeBase64(base64Data, 0, base64Data.length);
+    }
+
+    public  static byte[] decodeBase64(
+            final byte[] base64Data, final int off, final int len) {
+        return new Base64().decode(base64Data, off, len);
     }
 
     // Implementation of the Encoder Interface

Modified: tomcat/trunk/java/org/apache/tomcat/util/codec/binary/BaseNCodec.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/codec/binary/BaseNCodec.java?rev=1459223&r1=1459222&r2=1459223&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/codec/binary/BaseNCodec.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/codec/binary/BaseNCodec.java Thu 
Mar 21 10:55:59 2013
@@ -377,12 +377,16 @@ public abstract class BaseNCodec impleme
      */
     @Override
     public byte[] decode(final byte[] pArray) {
-        if (pArray == null || pArray.length == 0) {
-            return pArray;
+        return decode(pArray, 0, pArray.length);
+    }
+
+    public byte[] decode(final byte[] pArray, final int off, final int len) {
+        if (pArray == null || len == 0) {
+            return new byte[0];
         }
         final Context context = new Context();
-        decode(pArray, 0, pArray.length, context);
-        decode(pArray, 0, EOF, context); // Notify decoder of EOF.
+        decode(pArray, off, len, context);
+        decode(pArray, off, EOF, context); // Notify decoder of EOF.
         final byte[] result = new byte[context.pos];
         readResults(result, 0, result.length, context);
         return result;



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to