You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sebb <se...@gmail.com> on 2012/04/01 20:07:11 UTC
Re: svn commit: r1308156 [1/2] - in /commons/proper/codec/trunk/src:
main/java/org/apache/commons/codec/ main/java/org/apache/commons/codec/binary/
main/java/org/apache/commons/codec/digest/ main/java/org/apache/commons/codec/language/
main/java/org/
On 1 April 2012 17:56, <gg...@apache.org> wrote:
> Author: ggregory
> Date: Sun Apr 1 16:56:10 2012
> New Revision: 1308156
>
> URL: http://svn.apache.org/viewvc?rev=1308156&view=rev
> Log:
> Remove @author tags.
-1
This commit mixes @author removal with other code changes.
Please revert and apply separately.
> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java
> commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java
> commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/BaseNCodecTest.java
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java Sun Apr 1 16:56:10 2012
> @@ -20,7 +20,6 @@ package org.apache.commons.codec;
> /**
> * Defines common decoding methods for byte array decoders.
> *
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public interface BinaryDecoder extends Decoder {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java Sun Apr 1 16:56:10 2012
> @@ -20,7 +20,6 @@ package org.apache.commons.codec;
> /**
> * Defines common encoding methods for byte array encoders.
> *
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public interface BinaryEncoder extends Encoder {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java Sun Apr 1 16:56:10 2012
> @@ -48,7 +48,6 @@ package org.apache.commons.codec;
> * foreseen that [codec] would be made to depend on [lang].
> *
> * @see <a href="http://download.oracle.com/javase/6/docs/api/java/nio/charset/Charset.html">Standard charsets</a>
> - * @author Apache Software Foundation
> * @since 1.4
> * @version $Id$
> */
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java Sun Apr 1 16:56:10 2012
> @@ -50,7 +50,6 @@ import java.nio.charset.UnsupportedChars
> * not foreseen that Commons Codec would be made to depend on Commons Lang.
> *
> * @see <a href="http://docs.oracle.com/javase/6/docs/api/java/nio/charset/Charset.html">Standard charsets</a>
> - * @author Apache Software Foundation
> * @since 1.7
> * @version $Id: CharEncoding.java 1173287 2011-09-20 18:16:19Z ggregory $
> */
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java Sun Apr 1 16:56:10 2012
> @@ -27,7 +27,6 @@ package org.apache.commons.codec;
> *
> * <p>One of the two interfaces at the center of the codec package.</p>
> *
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public interface Decoder {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java Sun Apr 1 16:56:10 2012
> @@ -21,7 +21,6 @@ package org.apache.commons.codec;
> * Thrown when there is a failure condition during the decoding process. This exception is thrown when a {@link Decoder}
> * encounters a decoding specific exception such as invalid data, or characters outside of the expected range.
> *
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public class DecoderException extends Exception {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java Sun Apr 1 16:56:10 2012
> @@ -23,7 +23,6 @@ package org.apache.commons.codec;
> * Encoder provides this common generic interface which allows a user to pass a
> * generic Object to any Encoder implementation in the codec package.</p>
> *
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public interface Encoder {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java Sun Apr 1 16:56:10 2012
> @@ -22,7 +22,6 @@ package org.apache.commons.codec;
> * {@link Encoder} encounters a encoding specific exception such as invalid data, inability to calculate a checksum,
> * characters outside of the expected range.
> *
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public class EncoderException extends Exception {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java Sun Apr 1 16:56:10 2012
> @@ -20,7 +20,6 @@ package org.apache.commons.codec;
> /**
> * Defines common decoding methods for String decoders.
> *
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public interface StringDecoder extends Decoder {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java Sun Apr 1 16:56:10 2012
> @@ -20,7 +20,6 @@ package org.apache.commons.codec;
> /**
> * Defines common encoding methods for String encoders.
> *
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public interface StringEncoder extends Encoder {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java Sun Apr 1 16:56:10 2012
> @@ -24,7 +24,6 @@ import java.util.Comparator;
> * Soundex, Metaphone, etc. This class can come in handy if one need to sort Strings by an encoded form of a name such
> * as Soundex.
> *
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public class StringEncoderComparator implements Comparator {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java Sun Apr 1 16:56:10 2012
> @@ -33,7 +33,7 @@ package org.apache.commons.codec.binary;
> * This class operates directly on byte streams, and not character streams.
> * </p>
> * <p>
> - * This class is not thread-safe. Each thread should use its own instance.
> + * This class is thread-safe.
> * </p>
> *
> * @see <a href="http://www.ietf.org/rfc/rfc4648.txt">RFC 4648</a>
> @@ -122,8 +122,6 @@ public class Base32 extends BaseNCodec {
> * Place holder for the bytes we're dealing with for our based logic.
> * Bitwise operations store and extract the encoding or decoding from this variable.
> */
> - private long bitWorkArea;
> -
> /**
> * Convenience variable to help us determine when our buffer is going to run out of room and needs resizing.
> * <code>decodeSize = {@link #BYTES_PER_ENCODED_BLOCK} - 1 + lineSeparator.length;</code>
> @@ -275,36 +273,37 @@ public class Base32 extends BaseNCodec {
> * Position to start reading data from.
> * @param inAvail
> * Amount of bytes available from input for encoding.
> + * @param context the context to be used
> *
> * Output is written to {@link #buffer} as 8-bit octets, using {@link #pos} as the buffer position
> */
> @Override
> - void decode(byte[] in, int inPos, int inAvail) { // package protected for access from I/O streams
> - if (eof) {
> + void decode(byte[] in, int inPos, int inAvail, Context context) { // package protected for access from I/O streams
> + if (context.eof) {
> return;
> }
> if (inAvail < 0) {
> - eof = true;
> + context.eof = true;
> }
> for (int i = 0; i < inAvail; i++) {
> byte b = in[inPos++];
> if (b == PAD) {
> // We're done.
> - eof = true;
> + context.eof = true;
> break;
> } else {
> - ensureBufferSize(decodeSize);
> + ensureBufferSize(decodeSize, context);
> if (b >= 0 && b < this.decodeTable.length) {
> int result = this.decodeTable[b];
> if (result >= 0) {
> - modulus = (modulus+1) % BYTES_PER_ENCODED_BLOCK;
> - bitWorkArea = (bitWorkArea << BITS_PER_ENCODED_BYTE) + result; // collect decoded bytes
> - if (modulus == 0) { // we can output the 5 bytes
> - buffer[pos++] = (byte) ((bitWorkArea >> 32) & MASK_8BITS);
> - buffer[pos++] = (byte) ((bitWorkArea >> 24) & MASK_8BITS);
> - buffer[pos++] = (byte) ((bitWorkArea >> 16) & MASK_8BITS);
> - buffer[pos++] = (byte) ((bitWorkArea >> 8) & MASK_8BITS);
> - buffer[pos++] = (byte) (bitWorkArea & MASK_8BITS);
> + context.modulus = (context.modulus+1) % BYTES_PER_ENCODED_BLOCK;
> + context.lbitWorkArea = (context.lbitWorkArea << BITS_PER_ENCODED_BYTE) + result; // collect decoded bytes
> + if (context.modulus == 0) { // we can output the 5 bytes
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 32) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 24) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 16) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 8) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) (context.lbitWorkArea & MASK_8BITS);
> }
> }
> }
> @@ -314,40 +313,40 @@ public class Base32 extends BaseNCodec {
> // Two forms of EOF as far as Base32 decoder is concerned: actual
> // EOF (-1) and first time '=' character is encountered in stream.
> // This approach makes the '=' padding characters completely optional.
> - if (eof && modulus >= 2) { // if modulus < 2, nothing to do
> - ensureBufferSize(decodeSize);
> + if (context.eof && context.modulus >= 2) { // if modulus < 2, nothing to do
> + ensureBufferSize(decodeSize, context);
>
> // we ignore partial bytes, i.e. only multiples of 8 count
> - switch (modulus) {
> + switch (context.modulus) {
> case 2 : // 10 bits, drop 2 and output one byte
> - buffer[pos++] = (byte) ((bitWorkArea >> 2) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 2) & MASK_8BITS);
> break;
> case 3 : // 15 bits, drop 7 and output 1 byte
> - buffer[pos++] = (byte) ((bitWorkArea >> 7) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 7) & MASK_8BITS);
> break;
> case 4 : // 20 bits = 2*8 + 4
> - bitWorkArea = bitWorkArea >> 4; // drop 4 bits
> - buffer[pos++] = (byte) ((bitWorkArea >> 8) & MASK_8BITS);
> - buffer[pos++] = (byte) ((bitWorkArea) & MASK_8BITS);
> + context.lbitWorkArea = context.lbitWorkArea >> 4; // drop 4 bits
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 8) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea) & MASK_8BITS);
> break;
> case 5 : // 25bits = 3*8 + 1
> - bitWorkArea = bitWorkArea >> 1;
> - buffer[pos++] = (byte) ((bitWorkArea >> 16) & MASK_8BITS);
> - buffer[pos++] = (byte) ((bitWorkArea >> 8) & MASK_8BITS);
> - buffer[pos++] = (byte) ((bitWorkArea) & MASK_8BITS);
> + context.lbitWorkArea = context.lbitWorkArea >> 1;
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 16) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 8) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea) & MASK_8BITS);
> break;
> case 6 : // 30bits = 3*8 + 6
> - bitWorkArea = bitWorkArea >> 6;
> - buffer[pos++] = (byte) ((bitWorkArea >> 16) & MASK_8BITS);
> - buffer[pos++] = (byte) ((bitWorkArea >> 8) & MASK_8BITS);
> - buffer[pos++] = (byte) ((bitWorkArea) & MASK_8BITS);
> + context.lbitWorkArea = context.lbitWorkArea >> 6;
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 16) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 8) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea) & MASK_8BITS);
> break;
> case 7 : // 35 = 4*8 +3
> - bitWorkArea = bitWorkArea >> 3;
> - buffer[pos++] = (byte) ((bitWorkArea >> 24) & MASK_8BITS);
> - buffer[pos++] = (byte) ((bitWorkArea >> 16) & MASK_8BITS);
> - buffer[pos++] = (byte) ((bitWorkArea >> 8) & MASK_8BITS);
> - buffer[pos++] = (byte) ((bitWorkArea) & MASK_8BITS);
> + context.lbitWorkArea = context.lbitWorkArea >> 3;
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 24) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 16) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 8) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea) & MASK_8BITS);
> break;
> }
> }
> @@ -366,93 +365,94 @@ public class Base32 extends BaseNCodec {
> * Position to start reading data from.
> * @param inAvail
> * Amount of bytes available from input for encoding.
> + * @param context the context to be used
> */
> @Override
> - void encode(byte[] in, int inPos, int inAvail) { // package protected for access from I/O streams
> - if (eof) {
> + void encode(byte[] in, int inPos, int inAvail, Context context) { // package protected for access from I/O streams
> + if (context.eof) {
> return;
> }
> // inAvail < 0 is how we're informed of EOF in the underlying data we're
> // encoding.
> if (inAvail < 0) {
> - eof = true;
> - if (0 == modulus && lineLength == 0) {
> + context.eof = true;
> + if (0 == context.modulus && lineLength == 0) {
> return; // no leftovers to process and not using chunking
> }
> - ensureBufferSize(encodeSize);
> - int savedPos = pos;
> - switch (modulus) { // % 5
> + ensureBufferSize(encodeSize, context);
> + int savedPos = context.pos;
> + switch (context.modulus) { // % 5
> case 1 : // Only 1 octet; take top 5 bits then remainder
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 3) & MASK_5BITS]; // 8-1*5 = 3
> - buffer[pos++] = encodeTable[(int)(bitWorkArea << 2) & MASK_5BITS]; // 5-3=2
> - buffer[pos++] = PAD;
> - buffer[pos++] = PAD;
> - buffer[pos++] = PAD;
> - buffer[pos++] = PAD;
> - buffer[pos++] = PAD;
> - buffer[pos++] = PAD;
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 3) & MASK_5BITS]; // 8-1*5 = 3
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea << 2) & MASK_5BITS]; // 5-3=2
> + context.buffer[context.pos++] = PAD;
> + context.buffer[context.pos++] = PAD;
> + context.buffer[context.pos++] = PAD;
> + context.buffer[context.pos++] = PAD;
> + context.buffer[context.pos++] = PAD;
> + context.buffer[context.pos++] = PAD;
> break;
>
> case 2 : // 2 octets = 16 bits to use
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 11) & MASK_5BITS]; // 16-1*5 = 11
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 6) & MASK_5BITS]; // 16-2*5 = 6
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 1) & MASK_5BITS]; // 16-3*5 = 1
> - buffer[pos++] = encodeTable[(int)(bitWorkArea << 4) & MASK_5BITS]; // 5-1 = 4
> - buffer[pos++] = PAD;
> - buffer[pos++] = PAD;
> - buffer[pos++] = PAD;
> - buffer[pos++] = PAD;
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 11) & MASK_5BITS]; // 16-1*5 = 11
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 6) & MASK_5BITS]; // 16-2*5 = 6
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 1) & MASK_5BITS]; // 16-3*5 = 1
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea << 4) & MASK_5BITS]; // 5-1 = 4
> + context.buffer[context.pos++] = PAD;
> + context.buffer[context.pos++] = PAD;
> + context.buffer[context.pos++] = PAD;
> + context.buffer[context.pos++] = PAD;
> break;
> case 3 : // 3 octets = 24 bits to use
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 19) & MASK_5BITS]; // 24-1*5 = 19
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 14) & MASK_5BITS]; // 24-2*5 = 14
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 9) & MASK_5BITS]; // 24-3*5 = 9
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 4) & MASK_5BITS]; // 24-4*5 = 4
> - buffer[pos++] = encodeTable[(int)(bitWorkArea << 1) & MASK_5BITS]; // 5-4 = 1
> - buffer[pos++] = PAD;
> - buffer[pos++] = PAD;
> - buffer[pos++] = PAD;
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 19) & MASK_5BITS]; // 24-1*5 = 19
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 14) & MASK_5BITS]; // 24-2*5 = 14
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 9) & MASK_5BITS]; // 24-3*5 = 9
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 4) & MASK_5BITS]; // 24-4*5 = 4
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea << 1) & MASK_5BITS]; // 5-4 = 1
> + context.buffer[context.pos++] = PAD;
> + context.buffer[context.pos++] = PAD;
> + context.buffer[context.pos++] = PAD;
> break;
> case 4 : // 4 octets = 32 bits to use
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 27) & MASK_5BITS]; // 32-1*5 = 27
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 22) & MASK_5BITS]; // 32-2*5 = 22
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 17) & MASK_5BITS]; // 32-3*5 = 17
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 12) & MASK_5BITS]; // 32-4*5 = 12
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 7) & MASK_5BITS]; // 32-5*5 = 7
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 2) & MASK_5BITS]; // 32-6*5 = 2
> - buffer[pos++] = encodeTable[(int)(bitWorkArea << 3) & MASK_5BITS]; // 5-2 = 3
> - buffer[pos++] = PAD;
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 27) & MASK_5BITS]; // 32-1*5 = 27
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 22) & MASK_5BITS]; // 32-2*5 = 22
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 17) & MASK_5BITS]; // 32-3*5 = 17
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 12) & MASK_5BITS]; // 32-4*5 = 12
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 7) & MASK_5BITS]; // 32-5*5 = 7
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 2) & MASK_5BITS]; // 32-6*5 = 2
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea << 3) & MASK_5BITS]; // 5-2 = 3
> + context.buffer[context.pos++] = PAD;
> break;
> }
> - currentLinePos += pos - savedPos; // keep track of current line position
> + context.currentLinePos += context.pos - savedPos; // keep track of current line position
> // if currentPos == 0 we are at the start of a line, so don't add CRLF
> - if (lineLength > 0 && currentLinePos > 0){ // add chunk separator if required
> - System.arraycopy(lineSeparator, 0, buffer, pos, lineSeparator.length);
> - pos += lineSeparator.length;
> + if (lineLength > 0 && context.currentLinePos > 0){ // add chunk separator if required
> + System.arraycopy(lineSeparator, 0, context.buffer, context.pos, lineSeparator.length);
> + context.pos += lineSeparator.length;
> }
> } else {
> for (int i = 0; i < inAvail; i++) {
> - ensureBufferSize(encodeSize);
> - modulus = (modulus+1) % BYTES_PER_UNENCODED_BLOCK;
> + ensureBufferSize(encodeSize, context);
> + context.modulus = (context.modulus+1) % BYTES_PER_UNENCODED_BLOCK;
> int b = in[inPos++];
> if (b < 0) {
> b += 256;
> }
> - bitWorkArea = (bitWorkArea << 8) + b; // BITS_PER_BYTE
> - if (0 == modulus) { // we have enough bytes to create our output
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 35) & MASK_5BITS];
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 30) & MASK_5BITS];
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 25) & MASK_5BITS];
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 20) & MASK_5BITS];
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 15) & MASK_5BITS];
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 10) & MASK_5BITS];
> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 5) & MASK_5BITS];
> - buffer[pos++] = encodeTable[(int)bitWorkArea & MASK_5BITS];
> - currentLinePos += BYTES_PER_ENCODED_BLOCK;
> - if (lineLength > 0 && lineLength <= currentLinePos) {
> - System.arraycopy(lineSeparator, 0, buffer, pos, lineSeparator.length);
> - pos += lineSeparator.length;
> - currentLinePos = 0;
> + context.lbitWorkArea = (context.lbitWorkArea << 8) + b; // BITS_PER_BYTE
> + if (0 == context.modulus) { // we have enough bytes to create our output
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 35) & MASK_5BITS];
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 30) & MASK_5BITS];
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 25) & MASK_5BITS];
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 20) & MASK_5BITS];
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 15) & MASK_5BITS];
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 10) & MASK_5BITS];
> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 5) & MASK_5BITS];
> + context.buffer[context.pos++] = encodeTable[(int)context.lbitWorkArea & MASK_5BITS];
> + context.currentLinePos += BYTES_PER_ENCODED_BLOCK;
> + if (lineLength > 0 && lineLength <= context.currentLinePos) {
> + System.arraycopy(lineSeparator, 0, context.buffer, context.pos, lineSeparator.length);
> + context.pos += lineSeparator.length;
> + context.currentLinePos = 0;
> }
> }
> }
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java Sun Apr 1 16:56:10 2012
> @@ -40,11 +40,10 @@ import java.math.BigInteger;
> * character encodings which are compatible with the lower 127 ASCII chart (ISO-8859-1, Windows-1252, UTF-8, etc).
> * </p>
> * <p>
> - * This class is not thread-safe. Each thread should use its own instance.
> + * This class is thread-safe.
> * </p>
> *
> * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>
> - * @author Apache Software Foundation
> * @since 1.0
> * @version $Revision$
> */
> @@ -157,12 +156,6 @@ public class Base64 extends BaseNCodec {
> private final int encodeSize;
>
> /**
> - * Place holder for the bytes we're dealing with for our based logic.
> - * Bitwise operations store and extract the encoding or decoding from this variable.
> - */
> - private int bitWorkArea;
> -
> - /**
> * Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.
> * <p>
> * When encoding the line length is 0 (no chunking), and the encoding table is STANDARD_ENCODE_TABLE.
> @@ -322,67 +315,68 @@ public class Base64 extends BaseNCodec {
> * Position to start reading data from.
> * @param inAvail
> * Amount of bytes available from input for encoding.
> + * @param context the context to be used
> */
> @Override
> - void encode(byte[] in, int inPos, int inAvail) {
> - if (eof) {
> + void encode(byte[] in, int inPos, int inAvail, Context context) {
> + if (context.eof) {
> return;
> }
> // inAvail < 0 is how we're informed of EOF in the underlying data we're
> // encoding.
> if (inAvail < 0) {
> - eof = true;
> - if (0 == modulus && lineLength == 0) {
> + context.eof = true;
> + if (0 == context.modulus && lineLength == 0) {
> return; // no leftovers to process and not using chunking
> }
> - ensureBufferSize(encodeSize);
> - int savedPos = pos;
> - switch (modulus) { // 0-2
> + ensureBufferSize(encodeSize, context);
> + int savedPos = context.pos;
> + switch (context.modulus) { // 0-2
> case 1 : // 8 bits = 6 + 2
> - buffer[pos++] = encodeTable[(bitWorkArea >> 2) & MASK_6BITS]; // top 6 bits
> - buffer[pos++] = encodeTable[(bitWorkArea << 4) & MASK_6BITS]; // remaining 2
> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 2) & MASK_6BITS]; // top 6 bits
> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea << 4) & MASK_6BITS]; // remaining 2
> // URL-SAFE skips the padding to further reduce size.
> if (encodeTable == STANDARD_ENCODE_TABLE) {
> - buffer[pos++] = PAD;
> - buffer[pos++] = PAD;
> + context.buffer[context.pos++] = PAD;
> + context.buffer[context.pos++] = PAD;
> }
> break;
>
> case 2 : // 16 bits = 6 + 6 + 4
> - buffer[pos++] = encodeTable[(bitWorkArea >> 10) & MASK_6BITS];
> - buffer[pos++] = encodeTable[(bitWorkArea >> 4) & MASK_6BITS];
> - buffer[pos++] = encodeTable[(bitWorkArea << 2) & MASK_6BITS];
> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 10) & MASK_6BITS];
> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 4) & MASK_6BITS];
> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea << 2) & MASK_6BITS];
> // URL-SAFE skips the padding to further reduce size.
> if (encodeTable == STANDARD_ENCODE_TABLE) {
> - buffer[pos++] = PAD;
> + context.buffer[context.pos++] = PAD;
> }
> break;
> }
> - currentLinePos += pos - savedPos; // keep track of current line position
> + context.currentLinePos += context.pos - savedPos; // keep track of current line position
> // if currentPos == 0 we are at the start of a line, so don't add CRLF
> - if (lineLength > 0 && currentLinePos > 0) {
> - System.arraycopy(lineSeparator, 0, buffer, pos, lineSeparator.length);
> - pos += lineSeparator.length;
> + if (lineLength > 0 && context.currentLinePos > 0) {
> + System.arraycopy(lineSeparator, 0, context.buffer, context.pos, lineSeparator.length);
> + context.pos += lineSeparator.length;
> }
> } else {
> for (int i = 0; i < inAvail; i++) {
> - ensureBufferSize(encodeSize);
> - modulus = (modulus+1) % BYTES_PER_UNENCODED_BLOCK;
> + ensureBufferSize(encodeSize, context);
> + context.modulus = (context.modulus+1) % BYTES_PER_UNENCODED_BLOCK;
> int b = in[inPos++];
> if (b < 0) {
> b += 256;
> }
> - bitWorkArea = (bitWorkArea << 8) + b; // BITS_PER_BYTE
> - if (0 == modulus) { // 3 bytes = 24 bits = 4 * 6 bits to extract
> - buffer[pos++] = encodeTable[(bitWorkArea >> 18) & MASK_6BITS];
> - buffer[pos++] = encodeTable[(bitWorkArea >> 12) & MASK_6BITS];
> - buffer[pos++] = encodeTable[(bitWorkArea >> 6) & MASK_6BITS];
> - buffer[pos++] = encodeTable[bitWorkArea & MASK_6BITS];
> - currentLinePos += BYTES_PER_ENCODED_BLOCK;
> - if (lineLength > 0 && lineLength <= currentLinePos) {
> - System.arraycopy(lineSeparator, 0, buffer, pos, lineSeparator.length);
> - pos += lineSeparator.length;
> - currentLinePos = 0;
> + context.ibitWorkArea = (context.ibitWorkArea << 8) + b; // BITS_PER_BYTE
> + if (0 == context.modulus) { // 3 bytes = 24 bits = 4 * 6 bits to extract
> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 18) & MASK_6BITS];
> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 12) & MASK_6BITS];
> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 6) & MASK_6BITS];
> + context.buffer[context.pos++] = encodeTable[context.ibitWorkArea & MASK_6BITS];
> + context.currentLinePos += BYTES_PER_ENCODED_BLOCK;
> + if (lineLength > 0 && lineLength <= context.currentLinePos) {
> + System.arraycopy(lineSeparator, 0, context.buffer, context.pos, lineSeparator.length);
> + context.pos += lineSeparator.length;
> + context.currentLinePos = 0;
> }
> }
> }
> @@ -411,32 +405,33 @@ public class Base64 extends BaseNCodec {
> * Position to start reading data from.
> * @param inAvail
> * Amount of bytes available from input for encoding.
> + * @param context the context to be used
> */
> @Override
> - void decode(byte[] in, int inPos, int inAvail) {
> - if (eof) {
> + void decode(byte[] in, int inPos, int inAvail, Context context) {
> + if (context.eof) {
> return;
> }
> if (inAvail < 0) {
> - eof = true;
> + context.eof = true;
> }
> for (int i = 0; i < inAvail; i++) {
> - ensureBufferSize(decodeSize);
> + ensureBufferSize(decodeSize, context);
> byte b = in[inPos++];
> if (b == PAD) {
> // We're done.
> - eof = true;
> + context.eof = true;
> break;
> } else {
> if (b >= 0 && b < DECODE_TABLE.length) {
> int result = DECODE_TABLE[b];
> if (result >= 0) {
> - modulus = (modulus+1) % BYTES_PER_ENCODED_BLOCK;
> - bitWorkArea = (bitWorkArea << BITS_PER_ENCODED_BYTE) + result;
> - if (modulus == 0) {
> - buffer[pos++] = (byte) ((bitWorkArea >> 16) & MASK_8BITS);
> - buffer[pos++] = (byte) ((bitWorkArea >> 8) & MASK_8BITS);
> - buffer[pos++] = (byte) (bitWorkArea & MASK_8BITS);
> + context.modulus = (context.modulus+1) % BYTES_PER_ENCODED_BLOCK;
> + context.ibitWorkArea = (context.ibitWorkArea << BITS_PER_ENCODED_BYTE) + result;
> + if (context.modulus == 0) {
> + context.buffer[context.pos++] = (byte) ((context.ibitWorkArea >> 16) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.ibitWorkArea >> 8) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) (context.ibitWorkArea & MASK_8BITS);
> }
> }
> }
> @@ -446,22 +441,22 @@ public class Base64 extends BaseNCodec {
> // Two forms of EOF as far as base64 decoder is concerned: actual
> // EOF (-1) and first time '=' character is encountered in stream.
> // This approach makes the '=' padding characters completely optional.
> - if (eof && modulus != 0) {
> - ensureBufferSize(decodeSize);
> + if (context.eof && context.modulus != 0) {
> + ensureBufferSize(decodeSize, context);
>
> // We have some spare bits remaining
> // Output all whole multiples of 8 bits and ignore the rest
> - switch (modulus) {
> + switch (context.modulus) {
> // case 1: // 6 bits - ignore entirely
> // break;
> case 2 : // 12 bits = 8 + 4
> - bitWorkArea = bitWorkArea >> 4; // dump the extra 4 bits
> - buffer[pos++] = (byte) ((bitWorkArea) & MASK_8BITS);
> + context.ibitWorkArea = context.ibitWorkArea >> 4; // dump the extra 4 bits
> + context.buffer[context.pos++] = (byte) ((context.ibitWorkArea) & MASK_8BITS);
> break;
> case 3 : // 18 bits = 8 + 8 + 2
> - bitWorkArea = bitWorkArea >> 2; // dump 2 bits
> - buffer[pos++] = (byte) ((bitWorkArea >> 8) & MASK_8BITS);
> - buffer[pos++] = (byte) ((bitWorkArea) & MASK_8BITS);
> + context.ibitWorkArea = context.ibitWorkArea >> 2; // dump 2 bits
> + context.buffer[context.pos++] = (byte) ((context.ibitWorkArea >> 8) & MASK_8BITS);
> + context.buffer[context.pos++] = (byte) ((context.ibitWorkArea) & MASK_8BITS);
> break;
> }
> }
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java Sun Apr 1 16:56:10 2012
> @@ -36,7 +36,6 @@ import java.io.InputStream;
> * character encodings which are compatible with the lower 127 ASCII chart (ISO-8859-1, Windows-1252, UTF-8, etc).
> * </p>
> *
> - * @author Apache Software Foundation
> * @version $Id$
> * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>
> * @since 1.4
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java Sun Apr 1 16:56:10 2012
> @@ -36,7 +36,6 @@ import java.io.OutputStream;
> * character encodings which are compatible with the lower 127 ASCII chart (ISO-8859-1, Windows-1252, UTF-8, etc).
> * </p>
> *
> - * @author Apache Software Foundation
> * @version $Id$
> * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>
> * @since 1.4
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java Sun Apr 1 16:56:10 2012
> @@ -26,13 +26,70 @@ import org.apache.commons.codec.EncoderE
> * Abstract superclass for Base-N encoders and decoders.
> *
> * <p>
> - * This class is not thread-safe.
> - * Each thread should use its own instance.
> + * This class is thread-safe.
> * </p>
> */
> public abstract class BaseNCodec implements BinaryEncoder, BinaryDecoder {
>
> /**
> + * Holds thread context so classes can be thread-safe.
> + *
> + * This class is not itself thread-safe; each thread must allocate its own copy.
> + *
> + * @since 1.7
> + */
> + static class Context {
> +
> + /**
> + * Place holder for the bytes we're dealing with for our based logic.
> + * Bitwise operations store and extract the encoding or decoding from this variable.
> + */
> + int ibitWorkArea;
> +
> + /**
> + * Place holder for the bytes we're dealing with for our based logic.
> + * Bitwise operations store and extract the encoding or decoding from this variable.
> + */
> + long lbitWorkArea;
> +
> + /**
> + * Buffer for streaming.
> + */
> + byte[] buffer;
> +
> + /**
> + * Position where next character should be written in the buffer.
> + */
> + int pos;
> +
> + /**
> + * Position where next character should be read from the buffer.
> + */
> + int readPos;
> +
> + /**
> + * Boolean flag to indicate the EOF has been reached. Once EOF has been reached, this object becomes useless,
> + * and must be thrown away.
> + */
> + boolean eof;
> +
> + /**
> + * Variable tracks how many characters have been written to the current line. Only used when encoding. We use it to
> + * make sure each encoded line never goes beyond lineLength (if lineLength > 0).
> + */
> + int currentLinePos;
> +
> + /**
> + * Writes to the buffer only occur after every 3/5 reads when encoding, and every 4/8 reads when decoding.
> + * This variable helps track that.
> + */
> + int modulus;
> +
> + Context() {
> + }
> + }
> +
> + /**
> * EOF
> *
> * @since 1.7
> @@ -100,39 +157,6 @@ public abstract class BaseNCodec impleme
> private final int chunkSeparatorLength;
>
> /**
> - * Buffer for streaming.
> - */
> - protected byte[] buffer;
> -
> - /**
> - * Position where next character should be written in the buffer.
> - */
> - protected int pos;
> -
> - /**
> - * Position where next character should be read from the buffer.
> - */
> - private int readPos;
> -
> - /**
> - * Boolean flag to indicate the EOF has been reached. Once EOF has been reached, this object becomes useless,
> - * and must be thrown away.
> - */
> - protected boolean eof;
> -
> - /**
> - * Variable tracks how many characters have been written to the current line. Only used when encoding. We use it to
> - * make sure each encoded line never goes beyond lineLength (if lineLength > 0).
> - */
> - protected int currentLinePos;
> -
> - /**
> - * Writes to the buffer only occur after every 3/5 reads when encoding, and every 4/8 reads when decoding.
> - * This variable helps track that.
> - */
> - protected int modulus;
> -
> - /**
> * Note <code>lineLength</code> is rounded down to the nearest multiple of {@link #encodedBlockSize}
> * If <code>chunkSeparatorLength</code> is zero, then chunking is disabled.
> * @param unencodedBlockSize the size of an unencoded block (e.g. Base64 = 3)
> @@ -150,19 +174,21 @@ public abstract class BaseNCodec impleme
> /**
> * Returns true if this object has buffered data for reading.
> *
> + * @param context the context to be used
> * @return true if there is data still available for reading.
> */
> - boolean hasData() { // package protected for access from I/O streams
> - return this.buffer != null;
> + boolean hasData(Context context) { // package protected for access from I/O streams
> + return context.buffer != null;
> }
>
> /**
> * Returns the amount of buffered data available for reading.
> *
> + * @param context the context to be used
> * @return The amount of buffered data available for reading.
> */
> - int available() { // package protected for access from I/O streams
> - return buffer != null ? pos - readPos : 0;
> + int available(Context context) { // package protected for access from I/O streams
> + return context.buffer != null ? context.pos - context.readPos : 0;
> }
>
> /**
> @@ -174,16 +200,19 @@ public abstract class BaseNCodec impleme
> return DEFAULT_BUFFER_SIZE;
> }
>
> - /** Increases our buffer by the {@link #DEFAULT_BUFFER_RESIZE_FACTOR}. */
> - private void resizeBuffer() {
> - if (buffer == null) {
> - buffer = new byte[getDefaultBufferSize()];
> - pos = 0;
> - readPos = 0;
> + /**
> + * Increases our buffer by the {@link #DEFAULT_BUFFER_RESIZE_FACTOR}.
> + * @param context the context to be used
> + */
> + private void resizeBuffer(Context context) {
> + if (context.buffer == null) {
> + context.buffer = new byte[getDefaultBufferSize()];
> + context.pos = 0;
> + context.readPos = 0;
> } else {
> - byte[] b = new byte[buffer.length * DEFAULT_BUFFER_RESIZE_FACTOR];
> - System.arraycopy(buffer, 0, b, 0, buffer.length);
> - buffer = b;
> + byte[] b = new byte[context.buffer.length * DEFAULT_BUFFER_RESIZE_FACTOR];
> + System.arraycopy(context.buffer, 0, b, 0, context.buffer.length);
> + context.buffer = b;
> }
> }
>
> @@ -191,10 +220,11 @@ public abstract class BaseNCodec impleme
> * Ensure that the buffer has room for <code>size</code> bytes
> *
> * @param size minimum spare space required
> + * @param context the context to be used
> */
> - protected void ensureBufferSize(int size){
> - if ((buffer == null) || (buffer.length < pos + size)){
> - resizeBuffer();
> + protected void ensureBufferSize(int size, Context context){
> + if ((context.buffer == null) || (context.buffer.length < context.pos + size)){
> + resizeBuffer(context);
> }
> }
>
> @@ -208,19 +238,20 @@ public abstract class BaseNCodec impleme
> * position in byte[] array to start extraction at.
> * @param bAvail
> * amount of bytes we're allowed to extract. We may extract fewer (if fewer are available).
> + * @param context the context to be used
> * @return The number of bytes successfully extracted into the provided byte[] array.
> */
> - int readResults(byte[] b, int bPos, int bAvail) { // package protected for access from I/O streams
> - if (buffer != null) {
> - int len = Math.min(available(), bAvail);
> - System.arraycopy(buffer, readPos, b, bPos, len);
> - readPos += len;
> - if (readPos >= pos) {
> - buffer = null; // so hasData() will return false, and this method can return -1
> + int readResults(byte[] b, int bPos, int bAvail, Context context) { // package protected for access from I/O streams
> + if (context.buffer != null) {
> + int len = Math.min(available(context), bAvail);
> + System.arraycopy(context.buffer, context.readPos, b, bPos, len);
> + context.readPos += len;
> + if (context.readPos >= context.pos) {
> + context.buffer = null; // so hasData() will return false, and this method can return -1
> }
> return len;
> }
> - return eof ? EOF : 0;
> + return context.eof ? EOF : 0;
> }
>
> /**
> @@ -243,18 +274,6 @@ public abstract class BaseNCodec impleme
> }
>
> /**
> - * Resets this object to its initial newly constructed state.
> - */
> - private void reset() {
> - buffer = null;
> - pos = 0;
> - readPos = 0;
> - currentLinePos = 0;
> - modulus = 0;
> - eof = false;
> - }
> -
> - /**
> * Encodes an Object using the Base-N algorithm. This method is provided in order to satisfy the requirements of the
> * Encoder interface, and will throw an EncoderException if the supplied object is not of type byte[].
> *
> @@ -321,14 +340,14 @@ public abstract class BaseNCodec impleme
> * @return a byte array containing binary data
> */
> public byte[] decode(byte[] pArray) {
> - reset();
> + Context context = new Context();
> if (pArray == null || pArray.length == 0) {
> return pArray;
> }
> - decode(pArray, 0, pArray.length);
> - decode(pArray, 0, EOF); // Notify decoder of EOF.
> - byte[] result = new byte[pos];
> - readResults(result, 0, result.length);
> + decode(pArray, 0, pArray.length, context);
> + decode(pArray, 0, EOF, context); // Notify decoder of EOF.
> + byte[] result = new byte[context.pos];
> + readResults(result, 0, result.length, context);
> return result;
> }
>
> @@ -340,14 +359,14 @@ public abstract class BaseNCodec impleme
> * @return A byte array containing only the basen alphabetic character data
> */
> public byte[] encode(byte[] pArray) {
> - reset();
> + Context context = new Context();
> if (pArray == null || pArray.length == 0) {
> return pArray;
> }
> - encode(pArray, 0, pArray.length);
> - encode(pArray, 0, EOF); // Notify encoder of EOF.
> - byte[] buf = new byte[pos - readPos];
> - readResults(buf, 0, buf.length);
> + encode(pArray, 0, pArray.length, context);
> + encode(pArray, 0, EOF, context); // Notify encoder of EOF.
> + byte[] buf = new byte[context.pos - context.readPos];
> + readResults(buf, 0, buf.length, context);
> return buf;
> }
>
> @@ -362,9 +381,9 @@ public abstract class BaseNCodec impleme
> return StringUtils.newStringUtf8(encode(pArray));
> }
>
> - abstract void encode(byte[] pArray, int i, int length); // package protected for access from I/O streams
> + abstract void encode(byte[] pArray, int i, int length, Context context); // package protected for access from I/O streams
>
> - abstract void decode(byte[] pArray, int i, int length); // package protected for access from I/O streams
> + abstract void decode(byte[] pArray, int i, int length, Context context); // package protected for access from I/O streams
>
> /**
> * Returns whether or not the <code>octet</code> is in the current alphabet.
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java Sun Apr 1 16:56:10 2012
> @@ -23,6 +23,8 @@ import java.io.FilterInputStream;
> import java.io.IOException;
> import java.io.InputStream;
>
> +import org.apache.commons.codec.binary.BaseNCodec.Context;
> +
> /**
> * Abstract superclass for Base-N input streams.
> *
> @@ -36,6 +38,8 @@ public class BaseNCodecInputStream exten
>
> private final byte[] singleByte = new byte[1];
>
> + private Context context = new Context();
> +
> protected BaseNCodecInputStream(InputStream in, BaseNCodec baseNCodec, boolean doEncode) {
> super(in);
> this.doEncode = doEncode;
> @@ -55,8 +59,7 @@ public class BaseNCodecInputStream exten
> // data available. As we do not know for sure how much data is left,
> // just return 1 as a safe guess.
>
> - // use the EOF flag of the underlying codec instance
> - return baseNCodec.eof ? 0 : 1;
> + return context.eof ? 0 : 1;
> }
>
> /**
> @@ -136,16 +139,16 @@ public class BaseNCodecInputStream exten
> This is a fix for CODEC-101
> */
> while (readLen == 0) {
> - if (!baseNCodec.hasData()) {
> + if (!baseNCodec.hasData(context)) {
> byte[] buf = new byte[doEncode ? 4096 : 8192];
> int c = in.read(buf);
> if (doEncode) {
> - baseNCodec.encode(buf, 0, c);
> + baseNCodec.encode(buf, 0, c, context);
> } else {
> - baseNCodec.decode(buf, 0, c);
> + baseNCodec.decode(buf, 0, c, context);
> }
> }
> - readLen = baseNCodec.readResults(b, offset, len);
> + readLen = baseNCodec.readResults(b, offset, len, context);
> }
> return readLen;
> }
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java Sun Apr 1 16:56:10 2012
> @@ -23,6 +23,8 @@ import java.io.FilterOutputStream;
> import java.io.IOException;
> import java.io.OutputStream;
>
> +import org.apache.commons.codec.binary.BaseNCodec.Context;
> +
> /**
> * Abstract superclass for Base-N output streams.
> *
> @@ -36,6 +38,9 @@ public class BaseNCodecOutputStream exte
>
> private final byte[] singleByte = new byte[1];
>
> + private Context context = new Context();
> +
> + // TODO should this be protected?
> public BaseNCodecOutputStream(OutputStream out, BaseNCodec basedCodec, boolean doEncode) {
> super(out);
> this.baseNCodec = basedCodec;
> @@ -84,9 +89,9 @@ public class BaseNCodecOutputStream exte
> throw new IndexOutOfBoundsException();
> } else if (len > 0) {
> if (doEncode) {
> - baseNCodec.encode(b, offset, len);
> + baseNCodec.encode(b, offset, len, context);
> } else {
> - baseNCodec.decode(b, offset, len);
> + baseNCodec.decode(b, offset, len, context);
> }
> flush(false);
> }
> @@ -102,10 +107,10 @@ public class BaseNCodecOutputStream exte
> * if an I/O error occurs.
> */
> private void flush(boolean propogate) throws IOException {
> - int avail = baseNCodec.available();
> + int avail = baseNCodec.available(context);
> if (avail > 0) {
> byte[] buf = new byte[avail];
> - int c = baseNCodec.readResults(buf, 0, avail);
> + int c = baseNCodec.readResults(buf, 0, avail, context);
> if (c > 0) {
> out.write(buf, 0, c);
> }
> @@ -136,9 +141,9 @@ public class BaseNCodecOutputStream exte
> public void close() throws IOException {
> // Notify encoder of EOF (-1).
> if (doEncode) {
> - baseNCodec.encode(singleByte, 0, EOF);
> + baseNCodec.encode(singleByte, 0, EOF, context);
> } else {
> - baseNCodec.decode(singleByte, 0, EOF);
> + baseNCodec.decode(singleByte, 0, EOF, context);
> }
> flush();
> out.close();
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java Sun Apr 1 16:56:10 2012
> @@ -28,7 +28,6 @@ import org.apache.commons.codec.EncoderE
> * TODO: may want to add more bit vector functions like and/or/xor/nand
> * TODO: also might be good to generate boolean[] from byte[] et cetera.
> *
> - * @author Apache Software Foundation
> * @since 1.3
> * @version $Id$
> */
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java Sun Apr 1 16:56:10 2012
> @@ -32,7 +32,6 @@ import org.apache.commons.codec.EncoderE
> * {@link #DEFAULT_CHARSET_NAME}
> *
> * @since 1.1
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public class Hex implements BinaryEncoder, BinaryDecoder {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java Sun Apr 1 16:56:10 2012
> @@ -29,7 +29,6 @@ import org.apache.commons.codec.Charsets
> *
> * @see CharEncoding
> * @see <a href="http://download.oracle.com/javase/6/docs/api/java/nio/charset/Charset.html">Standard charsets</a>
> - * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
> * @version $Id$
> * @since 1.4
> */
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java Sun Apr 1 16:56:10 2012
> @@ -28,7 +28,6 @@ import org.apache.commons.codec.binary.S
> /**
> * Operations to simplify common {@link java.security.MessageDigest} tasks. This class is thread safe.
> *
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public class DigestUtils {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java Sun Apr 1 16:56:10 2012
> @@ -26,7 +26,6 @@ import org.apache.commons.codec.StringEn
> * This is an algorithm created by the Caversham Project at the University of Otago. It implements the Caverphone 2.0
> * algorithm:
> *
> - * @author Apache Software Foundation
> * @version $Id: Caverphone.java 1075947 2011-03-01 17:56:14Z ggregory $
> * @see <a href="http://en.wikipedia.org/wiki/Caverphone">Wikipedia - Caverphone</a>
> * @since 1.5
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java Sun Apr 1 16:56:10 2012
> @@ -26,7 +26,6 @@ import org.apache.commons.codec.StringEn
> * This is an algorithm created by the Caversham Project at the University of Otago. It implements the Caverphone 2.0
> * algorithm:
> *
> - * @author Apache Software Foundation
> * @version $Id: Caverphone.java 1079535 2011-03-08 20:54:37Z ggregory $
> * @see <a href="http://en.wikipedia.org/wiki/Caverphone">Wikipedia - Caverphone</a>
> * @see <a href="http://caversham.otago.ac.nz/files/working/ctp150804.pdf">Caverphone 2.0 specification</a>
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java Sun Apr 1 16:56:10 2012
> @@ -23,7 +23,6 @@ package org.apache.commons.codec.languag
> * This is an algorithm created by the Caversham Project at the University of Otago. It implements the Caverphone 1.0
> * algorithm:
> *
> - * @author Apache Software Foundation
> * @version $Id: Caverphone.java 1075947 2011-03-01 17:56:14Z ggregory $
> * @see <a href="http://en.wikipedia.org/wiki/Caverphone">Wikipedia - Caverphone</a>
> * @see <a href="http://caversham.otago.ac.nz/files/working/ctp060902.pdf">Caverphone 1.0 specification</a>
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java Sun Apr 1 16:56:10 2012
> @@ -23,7 +23,6 @@ package org.apache.commons.codec.languag
> * This is an algorithm created by the Caversham Project at the University of Otago. It implements the Caverphone 2.0
> * algorithm:
> *
> - * @author Apache Software Foundation
> * @version $Id: Caverphone.java 1075947 2011-03-01 17:56:14Z ggregory $
> * @see <a href="http://en.wikipedia.org/wiki/Caverphone">Wikipedia - Caverphone</a>
> * @see <a href="http://caversham.otago.ac.nz/files/working/ctp150804.pdf">Caverphone 2.0 specification</a>
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java Sun Apr 1 16:56:10 2012
> @@ -177,7 +177,6 @@ import org.apache.commons.codec.StringEn
> * </ul>
> *
> * @see <a href="http://de.wikipedia.org/wiki/K%C3%B6lner_Phonetik">Wikipedia (de): Kölner Phonetik (in German)</a>
> - * @author Apache Software Foundation
> * @since 1.5
> */
> public class ColognePhonetic implements StringEncoder {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java Sun Apr 1 16:56:10 2012
> @@ -27,7 +27,6 @@ import org.apache.commons.codec.StringEn
> * @see <a href="http://drdobbs.com/184401251?pgno=2">Original Article</a>
> * @see <a href="http://en.wikipedia.org/wiki/Metaphone">http://en.wikipedia.org/wiki/Metaphone</a>
> *
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public class DoubleMetaphone implements StringEncoder {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java Sun Apr 1 16:56:10 2012
> @@ -37,7 +37,6 @@ import org.apache.commons.codec.StringEn
> * For more information, see <a href="https://issues.apache.org/jira/browse/CODEC-57">CODEC-57</a>.
> * </p>
> *
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public class Metaphone implements StringEncoder {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java Sun Apr 1 16:56:10 2012
> @@ -25,7 +25,6 @@ import org.apache.commons.codec.StringEn
> * optimized for spell checking words. Soundex method originally developed by
> * <CITE>Margaret Odell</CITE> and <CITE>Robert Russell</CITE>.
> *
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public class RefinedSoundex implements StringEncoder {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java Sun Apr 1 16:56:10 2012
> @@ -24,7 +24,6 @@ import org.apache.commons.codec.StringEn
> * Encodes a string into a Soundex value. Soundex is an encoding used to relate similar names, but can also be used as a
> * general purpose scheme to find word with similar phonemes.
> *
> - * @author Apache Software Foundation
> * @version $Id$
> */
> public class Soundex implements StringEncoder {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java Sun Apr 1 16:56:10 2012
> @@ -23,7 +23,6 @@ import org.apache.commons.codec.StringEn
> /**
> * Utility methods for {@link Soundex} and {@link RefinedSoundex} classes.
> *
> - * @author Apache Software Foundation
> * @version $Id$
> * @since 1.3
> */
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java Sun Apr 1 16:56:10 2012
> @@ -74,7 +74,6 @@ import org.apache.commons.codec.StringEn
> * splitting on pipe (<code>|</code>) and indexing under each of these alternatives.
> * </p>
> *
> - * @author Apache Software Foundation
> * @since 1.6
> */
> public class BeiderMorseEncoder implements StringEncoder {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java Sun Apr 1 16:56:10 2012
> @@ -67,7 +67,6 @@ import java.util.regex.Pattern;
> * <p/>
> * Port of lang.php
> *
> - * @author Apache Software Foundation
> * @since 1.6
> */
> public class Lang {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java Sun Apr 1 16:56:10 2012
> @@ -49,7 +49,6 @@ import java.util.Set;
> * Ported from language.php
> * </p>
> *
> - * @author Apache Software Foundation
> * @since 1.6
> */
> public class Languages {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java Sun Apr 1 16:56:10 2012
> @@ -22,7 +22,6 @@ package org.apache.commons.codec.languag
> * <code>GENERIC</code> NameType should work reasonably well for non-name words. The other encodings are specifically
> * tuned to family names, and may not work well at all for general text.
> *
> - * @author Apache Software Foundation
> * @since 1.6
> */
> public enum NameType {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java Sun Apr 1 16:56:10 2012
> @@ -47,7 +47,6 @@ import java.util.TreeSet;
> * Ported from phoneticengine.php
> * </p>
> *
> - * @author Apache Software Foundation
> * @since 1.6
> */
> public class PhoneticEngine {
> @@ -56,7 +55,6 @@ public class PhoneticEngine {
> * Utility for manipulating a set of phonemes as they are being built up. Not intended for use outside this package,
> * and probably not outside the {@link PhoneticEngine} class.
> *
> - * @author Apache Software Foundation
> * @since 1.6
> */
> static final class PhonemeBuilder {
> @@ -165,7 +163,6 @@ public class PhoneticEngine {
> * matching rule was found, <code>phonemeBuilder</code> is replaced with a new buidler containing the phonemes
> * updated by the matching rule.
> *
> - * @author Apache Software Foundation
> * @since 1.6
> */
> private static final class RulesApplication {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java Sun Apr 1 16:56:10 2012
> @@ -22,7 +22,6 @@ import org.apache.commons.codec.CharEnco
> /**
> * Constants used to process resource files.
> *
> - * @author Apache Software Foundation
> * @since 1.6
> */
> class ResourceConstants {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java Sun Apr 1 16:56:10 2012
> @@ -76,7 +76,6 @@ import java.util.regex.Pattern;
> * </ul>
> * </p>
> *
> - * @author Apache Software Foundation
> * @since 1.6
> */
> public class Rule {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java Sun Apr 1 16:56:10 2012
> @@ -20,7 +20,6 @@ package org.apache.commons.codec.languag
> /**
> * Types of rule.
> *
> - * @author Apache Software Foundation
> * @since 1.6
> */
> public enum RuleType {
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java Sun Apr 1 16:56:10 2012
> @@ -43,7 +43,6 @@ import org.apache.commons.codec.binary.B
> * @see <a href="http://www.ietf.org/rfc/rfc1522.txt">MIME (Multipurpose Internet Mail Extensions) Part Two: Message
> * Header Extensions for Non-ASCII Text</a>
> *
> - * @author Apache Software Foundation
> * @since 1.3
> * @version $Id$
> */
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java Sun Apr 1 16:56:10 2012
> @@ -44,7 +44,6 @@ import org.apache.commons.codec.StringEn
> * @see <a href="http://www.ietf.org/rfc/rfc1522.txt">MIME (Multipurpose Internet Mail Extensions) Part Two: Message
> * Header Extensions for Non-ASCII Text</a>
> *
> - * @author Apache Software Foundation
> * @since 1.3
> * @version $Id$
> */
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java Sun Apr 1 16:56:10 2012
> @@ -58,7 +58,6 @@ import org.apache.commons.codec.binary.S
> * @see <a href="http://www.ietf.org/rfc/rfc1521.txt"> RFC 1521 MIME (Multipurpose Internet Mail Extensions) Part One:
> * Mechanisms for Specifying and Describing the Format of Internet Message Bodies </a>
> *
> - * @author Apache Software Foundation
> * @since 1.3
> * @version $Id$
> */
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java Sun Apr 1 16:56:10 2012
> @@ -41,7 +41,6 @@ import org.apache.commons.codec.binary.S
> * Message Header Extensions for Non-ASCII Text</a>
> * </p>
> *
> - * @author Apache Software Foundation
> * @since 1.3
> * @version $Id$
> */
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java Sun Apr 1 16:56:10 2012
> @@ -46,7 +46,6 @@ import org.apache.commons.codec.binary.S
> * 1.4 rely on the platform's default charset encoding.
> * </p>
> *
> - * @author Apache Software Foundation
> * @since 1.2
> * @version $Id$
> */
>
> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java (original)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java Sun Apr 1 16:56:10 2012
> @@ -22,7 +22,6 @@ import org.apache.commons.codec.DecoderE
> /**
> * Utility methods for this package.
> *
> - * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
> * @version $Id$
> * @since 1.4
> */
>
> Modified: commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java (original)
> +++ commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java Sun Apr 1 16:56:10 2012
> @@ -87,15 +87,16 @@ public class Base32Test {
> public void testSingleCharEncoding() {
> for (int i = 0; i < 20; i++) {
> Base32 codec = new Base32();
> + BaseNCodec.Context context = new BaseNCodec.Context();
> byte unencoded[] = new byte[i];
> byte allInOne[] = codec.encode(unencoded);
> codec = new Base32();
> for (int j=0; j< unencoded.length; j++) {
> - codec.encode(unencoded, j, 1);
> + codec.encode(unencoded, j, 1, context);
> }
> - codec.encode(unencoded, 0, -1);
> + codec.encode(unencoded, 0, -1, context);
> byte singly[] = new byte[allInOne.length];
> - codec.readResults(singly, 0, 100);
> + codec.readResults(singly, 0, 100, context);
> if (!Arrays.equals(allInOne, singly)){
> fail();
> }
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org
Re: svn commit: r1308156 [1/2] - in /commons/proper/codec/trunk/src:
main/java/org/apache/commons/codec/ main/java/org/apache/commons/codec/binary/
main/java/org/apache/commons/codec/digest/ main/java/org/apache/commons/codec/language/
main/java/org/
Posted by Gary Gregory <ga...@gmail.com>.
On Sun, Apr 1, 2012 at 2:34 PM, Gary Gregory <ga...@gmail.com> wrote:
> On Apr 1, 2012, at 14:07, sebb <se...@gmail.com> wrote:
>
> > On 1 April 2012 17:56, <gg...@apache.org> wrote:
> >> Author: ggregory
> >> Date: Sun Apr 1 16:56:10 2012
> >> New Revision: 1308156
> >>
> >> URL: http://svn.apache.org/viewvc?rev=1308156&view=rev
> >> Log:
> >> Remove @author tags.
> >
> > -1
> >
> > This commit mixes @author removal with other code changes.
> >
> > Please revert and apply separately.
>
>
> I know. That was an inadvertent mistake. Will do.
>
>
Done.
Gary
Gary
>
> >
> >> Modified:
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java
> >>
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java
> >>
> commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java
> >>
> commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/BaseNCodecTest.java
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java
> Sun Apr 1 16:56:10 2012
> >> @@ -20,7 +20,6 @@ package org.apache.commons.codec;
> >> /**
> >> * Defines common decoding methods for byte array decoders.
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public interface BinaryDecoder extends Decoder {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java
> Sun Apr 1 16:56:10 2012
> >> @@ -20,7 +20,6 @@ package org.apache.commons.codec;
> >> /**
> >> * Defines common encoding methods for byte array encoders.
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public interface BinaryEncoder extends Encoder {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java
> Sun Apr 1 16:56:10 2012
> >> @@ -48,7 +48,6 @@ package org.apache.commons.codec;
> >> * foreseen that [codec] would be made to depend on [lang].
> >> *
> >> * @see <a href="
> http://download.oracle.com/javase/6/docs/api/java/nio/charset/Charset.html">Standard
> charsets</a>
> >> - * @author Apache Software Foundation
> >> * @since 1.4
> >> * @version $Id$
> >> */
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java
> Sun Apr 1 16:56:10 2012
> >> @@ -50,7 +50,6 @@ import java.nio.charset.UnsupportedChars
> >> * not foreseen that Commons Codec would be made to depend on Commons
> Lang.
> >> *
> >> * @see <a href="
> http://docs.oracle.com/javase/6/docs/api/java/nio/charset/Charset.html">Standard
> charsets</a>
> >> - * @author Apache Software Foundation
> >> * @since 1.7
> >> * @version $Id: CharEncoding.java 1173287 2011-09-20 18:16:19Z
> ggregory $
> >> */
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java
> Sun Apr 1 16:56:10 2012
> >> @@ -27,7 +27,6 @@ package org.apache.commons.codec;
> >> *
> >> * <p>One of the two interfaces at the center of the codec package.</p>
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public interface Decoder {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java
> Sun Apr 1 16:56:10 2012
> >> @@ -21,7 +21,6 @@ package org.apache.commons.codec;
> >> * Thrown when there is a failure condition during the decoding
> process. This exception is thrown when a {@link Decoder}
> >> * encounters a decoding specific exception such as invalid data, or
> characters outside of the expected range.
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public class DecoderException extends Exception {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java
> Sun Apr 1 16:56:10 2012
> >> @@ -23,7 +23,6 @@ package org.apache.commons.codec;
> >> * Encoder provides this common generic interface which allows a user
> to pass a
> >> * generic Object to any Encoder implementation in the codec
> package.</p>
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public interface Encoder {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java
> Sun Apr 1 16:56:10 2012
> >> @@ -22,7 +22,6 @@ package org.apache.commons.codec;
> >> * {@link Encoder} encounters a encoding specific exception such as
> invalid data, inability to calculate a checksum,
> >> * characters outside of the expected range.
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public class EncoderException extends Exception {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java
> Sun Apr 1 16:56:10 2012
> >> @@ -20,7 +20,6 @@ package org.apache.commons.codec;
> >> /**
> >> * Defines common decoding methods for String decoders.
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public interface StringDecoder extends Decoder {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java
> Sun Apr 1 16:56:10 2012
> >> @@ -20,7 +20,6 @@ package org.apache.commons.codec;
> >> /**
> >> * Defines common encoding methods for String encoders.
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public interface StringEncoder extends Encoder {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java
> Sun Apr 1 16:56:10 2012
> >> @@ -24,7 +24,6 @@ import java.util.Comparator;
> >> * Soundex, Metaphone, etc. This class can come in handy if one need to
> sort Strings by an encoded form of a name such
> >> * as Soundex.
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public class StringEncoderComparator implements Comparator {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java
> Sun Apr 1 16:56:10 2012
> >> @@ -33,7 +33,7 @@ package org.apache.commons.codec.binary;
> >> * This class operates directly on byte streams, and not character
> streams.
> >> * </p>
> >> * <p>
> >> - * This class is not thread-safe. Each thread should use its own
> instance.
> >> + * This class is thread-safe.
> >> * </p>
> >> *
> >> * @see <a href="http://www.ietf.org/rfc/rfc4648.txt">RFC 4648</a>
> >> @@ -122,8 +122,6 @@ public class Base32 extends BaseNCodec {
> >> * Place holder for the bytes we're dealing with for our based
> logic.
> >> * Bitwise operations store and extract the encoding or decoding
> from this variable.
> >> */
> >> - private long bitWorkArea;
> >> -
> >> /**
> >> * Convenience variable to help us determine when our buffer is
> going to run out of room and needs resizing.
> >> * <code>decodeSize = {@link #BYTES_PER_ENCODED_BLOCK} - 1 +
> lineSeparator.length;</code>
> >> @@ -275,36 +273,37 @@ public class Base32 extends BaseNCodec {
> >> * Position to start reading data from.
> >> * @param inAvail
> >> * Amount of bytes available from input for encoding.
> >> + * @param context the context to be used
> >> *
> >> * Output is written to {@link #buffer} as 8-bit octets, using
> {@link #pos} as the buffer position
> >> */
> >> @Override
> >> - void decode(byte[] in, int inPos, int inAvail) { // package
> protected for access from I/O streams
> >> - if (eof) {
> >> + void decode(byte[] in, int inPos, int inAvail, Context context) {
> // package protected for access from I/O streams
> >> + if (context.eof) {
> >> return;
> >> }
> >> if (inAvail < 0) {
> >> - eof = true;
> >> + context.eof = true;
> >> }
> >> for (int i = 0; i < inAvail; i++) {
> >> byte b = in[inPos++];
> >> if (b == PAD) {
> >> // We're done.
> >> - eof = true;
> >> + context.eof = true;
> >> break;
> >> } else {
> >> - ensureBufferSize(decodeSize);
> >> + ensureBufferSize(decodeSize, context);
> >> if (b >= 0 && b < this.decodeTable.length) {
> >> int result = this.decodeTable[b];
> >> if (result >= 0) {
> >> - modulus = (modulus+1) %
> BYTES_PER_ENCODED_BLOCK;
> >> - bitWorkArea = (bitWorkArea <<
> BITS_PER_ENCODED_BYTE) + result; // collect decoded bytes
> >> - if (modulus == 0) { // we can output the 5
> bytes
> >> - buffer[pos++] = (byte) ((bitWorkArea >>
> 32) & MASK_8BITS);
> >> - buffer[pos++] = (byte) ((bitWorkArea >>
> 24) & MASK_8BITS);
> >> - buffer[pos++] = (byte) ((bitWorkArea >>
> 16) & MASK_8BITS);
> >> - buffer[pos++] = (byte) ((bitWorkArea >> 8)
> & MASK_8BITS);
> >> - buffer[pos++] = (byte) (bitWorkArea &
> MASK_8BITS);
> >> + context.modulus = (context.modulus+1) %
> BYTES_PER_ENCODED_BLOCK;
> >> + context.lbitWorkArea = (context.lbitWorkArea
> << BITS_PER_ENCODED_BYTE) + result; // collect decoded bytes
> >> + if (context.modulus == 0) { // we can output
> the 5 bytes
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea >> 32) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea >> 24) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea >> 16) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea >> 8) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> (context.lbitWorkArea & MASK_8BITS);
> >> }
> >> }
> >> }
> >> @@ -314,40 +313,40 @@ public class Base32 extends BaseNCodec {
> >> // Two forms of EOF as far as Base32 decoder is concerned:
> actual
> >> // EOF (-1) and first time '=' character is encountered in
> stream.
> >> // This approach makes the '=' padding characters completely
> optional.
> >> - if (eof && modulus >= 2) { // if modulus < 2, nothing to do
> >> - ensureBufferSize(decodeSize);
> >> + if (context.eof && context.modulus >= 2) { // if modulus < 2,
> nothing to do
> >> + ensureBufferSize(decodeSize, context);
> >>
> >> // we ignore partial bytes, i.e. only multiples of 8 count
> >> - switch (modulus) {
> >> + switch (context.modulus) {
> >> case 2 : // 10 bits, drop 2 and output one byte
> >> - buffer[pos++] = (byte) ((bitWorkArea >> 2) &
> MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea >> 2) & MASK_8BITS);
> >> break;
> >> case 3 : // 15 bits, drop 7 and output 1 byte
> >> - buffer[pos++] = (byte) ((bitWorkArea >> 7) &
> MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea >> 7) & MASK_8BITS);
> >> break;
> >> case 4 : // 20 bits = 2*8 + 4
> >> - bitWorkArea = bitWorkArea >> 4; // drop 4 bits
> >> - buffer[pos++] = (byte) ((bitWorkArea >> 8) &
> MASK_8BITS);
> >> - buffer[pos++] = (byte) ((bitWorkArea) &
> MASK_8BITS);
> >> + context.lbitWorkArea = context.lbitWorkArea >> 4;
> // drop 4 bits
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea >> 8) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea) & MASK_8BITS);
> >> break;
> >> case 5 : // 25bits = 3*8 + 1
> >> - bitWorkArea = bitWorkArea >> 1;
> >> - buffer[pos++] = (byte) ((bitWorkArea >> 16) &
> MASK_8BITS);
> >> - buffer[pos++] = (byte) ((bitWorkArea >> 8) &
> MASK_8BITS);
> >> - buffer[pos++] = (byte) ((bitWorkArea) &
> MASK_8BITS);
> >> + context.lbitWorkArea = context.lbitWorkArea >> 1;
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea >> 16) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea >> 8) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea) & MASK_8BITS);
> >> break;
> >> case 6 : // 30bits = 3*8 + 6
> >> - bitWorkArea = bitWorkArea >> 6;
> >> - buffer[pos++] = (byte) ((bitWorkArea >> 16) &
> MASK_8BITS);
> >> - buffer[pos++] = (byte) ((bitWorkArea >> 8) &
> MASK_8BITS);
> >> - buffer[pos++] = (byte) ((bitWorkArea) &
> MASK_8BITS);
> >> + context.lbitWorkArea = context.lbitWorkArea >> 6;
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea >> 16) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea >> 8) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea) & MASK_8BITS);
> >> break;
> >> case 7 : // 35 = 4*8 +3
> >> - bitWorkArea = bitWorkArea >> 3;
> >> - buffer[pos++] = (byte) ((bitWorkArea >> 24) &
> MASK_8BITS);
> >> - buffer[pos++] = (byte) ((bitWorkArea >> 16) &
> MASK_8BITS);
> >> - buffer[pos++] = (byte) ((bitWorkArea >> 8) &
> MASK_8BITS);
> >> - buffer[pos++] = (byte) ((bitWorkArea) &
> MASK_8BITS);
> >> + context.lbitWorkArea = context.lbitWorkArea >> 3;
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea >> 24) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea >> 16) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea >> 8) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.lbitWorkArea) & MASK_8BITS);
> >> break;
> >> }
> >> }
> >> @@ -366,93 +365,94 @@ public class Base32 extends BaseNCodec {
> >> * Position to start reading data from.
> >> * @param inAvail
> >> * Amount of bytes available from input for encoding.
> >> + * @param context the context to be used
> >> */
> >> @Override
> >> - void encode(byte[] in, int inPos, int inAvail) { // package
> protected for access from I/O streams
> >> - if (eof) {
> >> + void encode(byte[] in, int inPos, int inAvail, Context context) {
> // package protected for access from I/O streams
> >> + if (context.eof) {
> >> return;
> >> }
> >> // inAvail < 0 is how we're informed of EOF in the underlying
> data we're
> >> // encoding.
> >> if (inAvail < 0) {
> >> - eof = true;
> >> - if (0 == modulus && lineLength == 0) {
> >> + context.eof = true;
> >> + if (0 == context.modulus && lineLength == 0) {
> >> return; // no leftovers to process and not using
> chunking
> >> }
> >> - ensureBufferSize(encodeSize);
> >> - int savedPos = pos;
> >> - switch (modulus) { // % 5
> >> + ensureBufferSize(encodeSize, context);
> >> + int savedPos = context.pos;
> >> + switch (context.modulus) { // % 5
> >> case 1 : // Only 1 octet; take top 5 bits then remainder
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 3) & MASK_5BITS]; // 8-1*5 = 3
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea <<
> 2) & MASK_5BITS]; // 5-3=2
> >> - buffer[pos++] = PAD;
> >> - buffer[pos++] = PAD;
> >> - buffer[pos++] = PAD;
> >> - buffer[pos++] = PAD;
> >> - buffer[pos++] = PAD;
> >> - buffer[pos++] = PAD;
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 3) & MASK_5BITS]; // 8-1*5 = 3
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea << 2) & MASK_5BITS]; // 5-3=2
> >> + context.buffer[context.pos++] = PAD;
> >> + context.buffer[context.pos++] = PAD;
> >> + context.buffer[context.pos++] = PAD;
> >> + context.buffer[context.pos++] = PAD;
> >> + context.buffer[context.pos++] = PAD;
> >> + context.buffer[context.pos++] = PAD;
> >> break;
> >>
> >> case 2 : // 2 octets = 16 bits to use
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 11) & MASK_5BITS]; // 16-1*5 = 11
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 6) & MASK_5BITS]; // 16-2*5 = 6
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 1) & MASK_5BITS]; // 16-3*5 = 1
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea <<
> 4) & MASK_5BITS]; // 5-1 = 4
> >> - buffer[pos++] = PAD;
> >> - buffer[pos++] = PAD;
> >> - buffer[pos++] = PAD;
> >> - buffer[pos++] = PAD;
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 11) & MASK_5BITS]; // 16-1*5 = 11
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 6) & MASK_5BITS]; // 16-2*5 = 6
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 1) & MASK_5BITS]; // 16-3*5 = 1
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea << 4) & MASK_5BITS]; // 5-1 = 4
> >> + context.buffer[context.pos++] = PAD;
> >> + context.buffer[context.pos++] = PAD;
> >> + context.buffer[context.pos++] = PAD;
> >> + context.buffer[context.pos++] = PAD;
> >> break;
> >> case 3 : // 3 octets = 24 bits to use
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 19) & MASK_5BITS]; // 24-1*5 = 19
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 14) & MASK_5BITS]; // 24-2*5 = 14
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 9) & MASK_5BITS]; // 24-3*5 = 9
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 4) & MASK_5BITS]; // 24-4*5 = 4
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea <<
> 1) & MASK_5BITS]; // 5-4 = 1
> >> - buffer[pos++] = PAD;
> >> - buffer[pos++] = PAD;
> >> - buffer[pos++] = PAD;
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 19) & MASK_5BITS]; // 24-1*5 = 19
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 14) & MASK_5BITS]; // 24-2*5 = 14
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 9) & MASK_5BITS]; // 24-3*5 = 9
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 4) & MASK_5BITS]; // 24-4*5 = 4
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea << 1) & MASK_5BITS]; // 5-4 = 1
> >> + context.buffer[context.pos++] = PAD;
> >> + context.buffer[context.pos++] = PAD;
> >> + context.buffer[context.pos++] = PAD;
> >> break;
> >> case 4 : // 4 octets = 32 bits to use
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 27) & MASK_5BITS]; // 32-1*5 = 27
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 22) & MASK_5BITS]; // 32-2*5 = 22
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 17) & MASK_5BITS]; // 32-3*5 = 17
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 12) & MASK_5BITS]; // 32-4*5 = 12
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 7) & MASK_5BITS]; // 32-5*5 = 7
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 2) & MASK_5BITS]; // 32-6*5 = 2
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea <<
> 3) & MASK_5BITS]; // 5-2 = 3
> >> - buffer[pos++] = PAD;
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 27) & MASK_5BITS]; // 32-1*5 = 27
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 22) & MASK_5BITS]; // 32-2*5 = 22
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 17) & MASK_5BITS]; // 32-3*5 = 17
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 12) & MASK_5BITS]; // 32-4*5 = 12
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 7) & MASK_5BITS]; // 32-5*5 = 7
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 2) & MASK_5BITS]; // 32-6*5 = 2
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea << 3) & MASK_5BITS]; // 5-2 = 3
> >> + context.buffer[context.pos++] = PAD;
> >> break;
> >> }
> >> - currentLinePos += pos - savedPos; // keep track of current
> line position
> >> + context.currentLinePos += context.pos - savedPos; // keep
> track of current line position
> >> // if currentPos == 0 we are at the start of a line, so
> don't add CRLF
> >> - if (lineLength > 0 && currentLinePos > 0){ // add chunk
> separator if required
> >> - System.arraycopy(lineSeparator, 0, buffer, pos,
> lineSeparator.length);
> >> - pos += lineSeparator.length;
> >> + if (lineLength > 0 && context.currentLinePos > 0){ // add
> chunk separator if required
> >> + System.arraycopy(lineSeparator, 0, context.buffer,
> context.pos, lineSeparator.length);
> >> + context.pos += lineSeparator.length;
> >> }
> >> } else {
> >> for (int i = 0; i < inAvail; i++) {
> >> - ensureBufferSize(encodeSize);
> >> - modulus = (modulus+1) % BYTES_PER_UNENCODED_BLOCK;
> >> + ensureBufferSize(encodeSize, context);
> >> + context.modulus = (context.modulus+1) %
> BYTES_PER_UNENCODED_BLOCK;
> >> int b = in[inPos++];
> >> if (b < 0) {
> >> b += 256;
> >> }
> >> - bitWorkArea = (bitWorkArea << 8) + b; // BITS_PER_BYTE
> >> - if (0 == modulus) { // we have enough bytes to create
> our output
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 35) & MASK_5BITS];
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 30) & MASK_5BITS];
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 25) & MASK_5BITS];
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 20) & MASK_5BITS];
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 15) & MASK_5BITS];
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 10) & MASK_5BITS];
> >> - buffer[pos++] = encodeTable[(int)(bitWorkArea >>
> 5) & MASK_5BITS];
> >> - buffer[pos++] = encodeTable[(int)bitWorkArea &
> MASK_5BITS];
> >> - currentLinePos += BYTES_PER_ENCODED_BLOCK;
> >> - if (lineLength > 0 && lineLength <=
> currentLinePos) {
> >> - System.arraycopy(lineSeparator, 0, buffer,
> pos, lineSeparator.length);
> >> - pos += lineSeparator.length;
> >> - currentLinePos = 0;
> >> + context.lbitWorkArea = (context.lbitWorkArea << 8) +
> b; // BITS_PER_BYTE
> >> + if (0 == context.modulus) { // we have enough bytes to
> create our output
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 35) & MASK_5BITS];
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 30) & MASK_5BITS];
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 25) & MASK_5BITS];
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 20) & MASK_5BITS];
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 15) & MASK_5BITS];
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 10) & MASK_5BITS];
> >> + context.buffer[context.pos++] =
> encodeTable[(int)(context.lbitWorkArea >> 5) & MASK_5BITS];
> >> + context.buffer[context.pos++] =
> encodeTable[(int)context.lbitWorkArea & MASK_5BITS];
> >> + context.currentLinePos += BYTES_PER_ENCODED_BLOCK;
> >> + if (lineLength > 0 && lineLength <=
> context.currentLinePos) {
> >> + System.arraycopy(lineSeparator, 0,
> context.buffer, context.pos, lineSeparator.length);
> >> + context.pos += lineSeparator.length;
> >> + context.currentLinePos = 0;
> >> }
> >> }
> >> }
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java
> Sun Apr 1 16:56:10 2012
> >> @@ -40,11 +40,10 @@ import java.math.BigInteger;
> >> * character encodings which are compatible with the lower 127 ASCII
> chart (ISO-8859-1, Windows-1252, UTF-8, etc).
> >> * </p>
> >> * <p>
> >> - * This class is not thread-safe. Each thread should use its own
> instance.
> >> + * This class is thread-safe.
> >> * </p>
> >> *
> >> * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>
> >> - * @author Apache Software Foundation
> >> * @since 1.0
> >> * @version $Revision$
> >> */
> >> @@ -157,12 +156,6 @@ public class Base64 extends BaseNCodec {
> >> private final int encodeSize;
> >>
> >> /**
> >> - * Place holder for the bytes we're dealing with for our based
> logic.
> >> - * Bitwise operations store and extract the encoding or decoding
> from this variable.
> >> - */
> >> - private int bitWorkArea;
> >> -
> >> - /**
> >> * Creates a Base64 codec used for decoding (all modes) and
> encoding in URL-unsafe mode.
> >> * <p>
> >> * When encoding the line length is 0 (no chunking), and the
> encoding table is STANDARD_ENCODE_TABLE.
> >> @@ -322,67 +315,68 @@ public class Base64 extends BaseNCodec {
> >> * Position to start reading data from.
> >> * @param inAvail
> >> * Amount of bytes available from input for encoding.
> >> + * @param context the context to be used
> >> */
> >> @Override
> >> - void encode(byte[] in, int inPos, int inAvail) {
> >> - if (eof) {
> >> + void encode(byte[] in, int inPos, int inAvail, Context context) {
> >> + if (context.eof) {
> >> return;
> >> }
> >> // inAvail < 0 is how we're informed of EOF in the underlying
> data we're
> >> // encoding.
> >> if (inAvail < 0) {
> >> - eof = true;
> >> - if (0 == modulus && lineLength == 0) {
> >> + context.eof = true;
> >> + if (0 == context.modulus && lineLength == 0) {
> >> return; // no leftovers to process and not using
> chunking
> >> }
> >> - ensureBufferSize(encodeSize);
> >> - int savedPos = pos;
> >> - switch (modulus) { // 0-2
> >> + ensureBufferSize(encodeSize, context);
> >> + int savedPos = context.pos;
> >> + switch (context.modulus) { // 0-2
> >> case 1 : // 8 bits = 6 + 2
> >> - buffer[pos++] = encodeTable[(bitWorkArea >> 2) &
> MASK_6BITS]; // top 6 bits
> >> - buffer[pos++] = encodeTable[(bitWorkArea << 4) &
> MASK_6BITS]; // remaining 2
> >> + context.buffer[context.pos++] =
> encodeTable[(context.ibitWorkArea >> 2) & MASK_6BITS]; // top 6 bits
> >> + context.buffer[context.pos++] =
> encodeTable[(context.ibitWorkArea << 4) & MASK_6BITS]; // remaining 2
> >> // URL-SAFE skips the padding to further reduce
> size.
> >> if (encodeTable == STANDARD_ENCODE_TABLE) {
> >> - buffer[pos++] = PAD;
> >> - buffer[pos++] = PAD;
> >> + context.buffer[context.pos++] = PAD;
> >> + context.buffer[context.pos++] = PAD;
> >> }
> >> break;
> >>
> >> case 2 : // 16 bits = 6 + 6 + 4
> >> - buffer[pos++] = encodeTable[(bitWorkArea >> 10) &
> MASK_6BITS];
> >> - buffer[pos++] = encodeTable[(bitWorkArea >> 4) &
> MASK_6BITS];
> >> - buffer[pos++] = encodeTable[(bitWorkArea << 2) &
> MASK_6BITS];
> >> + context.buffer[context.pos++] =
> encodeTable[(context.ibitWorkArea >> 10) & MASK_6BITS];
> >> + context.buffer[context.pos++] =
> encodeTable[(context.ibitWorkArea >> 4) & MASK_6BITS];
> >> + context.buffer[context.pos++] =
> encodeTable[(context.ibitWorkArea << 2) & MASK_6BITS];
> >> // URL-SAFE skips the padding to further reduce
> size.
> >> if (encodeTable == STANDARD_ENCODE_TABLE) {
> >> - buffer[pos++] = PAD;
> >> + context.buffer[context.pos++] = PAD;
> >> }
> >> break;
> >> }
> >> - currentLinePos += pos - savedPos; // keep track of current
> line position
> >> + context.currentLinePos += context.pos - savedPos; // keep
> track of current line position
> >> // if currentPos == 0 we are at the start of a line, so
> don't add CRLF
> >> - if (lineLength > 0 && currentLinePos > 0) {
> >> - System.arraycopy(lineSeparator, 0, buffer, pos,
> lineSeparator.length);
> >> - pos += lineSeparator.length;
> >> + if (lineLength > 0 && context.currentLinePos > 0) {
> >> + System.arraycopy(lineSeparator, 0, context.buffer,
> context.pos, lineSeparator.length);
> >> + context.pos += lineSeparator.length;
> >> }
> >> } else {
> >> for (int i = 0; i < inAvail; i++) {
> >> - ensureBufferSize(encodeSize);
> >> - modulus = (modulus+1) % BYTES_PER_UNENCODED_BLOCK;
> >> + ensureBufferSize(encodeSize, context);
> >> + context.modulus = (context.modulus+1) %
> BYTES_PER_UNENCODED_BLOCK;
> >> int b = in[inPos++];
> >> if (b < 0) {
> >> b += 256;
> >> }
> >> - bitWorkArea = (bitWorkArea << 8) + b; // BITS_PER_BYTE
> >> - if (0 == modulus) { // 3 bytes = 24 bits = 4 * 6 bits
> to extract
> >> - buffer[pos++] = encodeTable[(bitWorkArea >> 18) &
> MASK_6BITS];
> >> - buffer[pos++] = encodeTable[(bitWorkArea >> 12) &
> MASK_6BITS];
> >> - buffer[pos++] = encodeTable[(bitWorkArea >> 6) &
> MASK_6BITS];
> >> - buffer[pos++] = encodeTable[bitWorkArea &
> MASK_6BITS];
> >> - currentLinePos += BYTES_PER_ENCODED_BLOCK;
> >> - if (lineLength > 0 && lineLength <=
> currentLinePos) {
> >> - System.arraycopy(lineSeparator, 0, buffer,
> pos, lineSeparator.length);
> >> - pos += lineSeparator.length;
> >> - currentLinePos = 0;
> >> + context.ibitWorkArea = (context.ibitWorkArea << 8) +
> b; // BITS_PER_BYTE
> >> + if (0 == context.modulus) { // 3 bytes = 24 bits = 4 *
> 6 bits to extract
> >> + context.buffer[context.pos++] =
> encodeTable[(context.ibitWorkArea >> 18) & MASK_6BITS];
> >> + context.buffer[context.pos++] =
> encodeTable[(context.ibitWorkArea >> 12) & MASK_6BITS];
> >> + context.buffer[context.pos++] =
> encodeTable[(context.ibitWorkArea >> 6) & MASK_6BITS];
> >> + context.buffer[context.pos++] =
> encodeTable[context.ibitWorkArea & MASK_6BITS];
> >> + context.currentLinePos += BYTES_PER_ENCODED_BLOCK;
> >> + if (lineLength > 0 && lineLength <=
> context.currentLinePos) {
> >> + System.arraycopy(lineSeparator, 0,
> context.buffer, context.pos, lineSeparator.length);
> >> + context.pos += lineSeparator.length;
> >> + context.currentLinePos = 0;
> >> }
> >> }
> >> }
> >> @@ -411,32 +405,33 @@ public class Base64 extends BaseNCodec {
> >> * Position to start reading data from.
> >> * @param inAvail
> >> * Amount of bytes available from input for encoding.
> >> + * @param context the context to be used
> >> */
> >> @Override
> >> - void decode(byte[] in, int inPos, int inAvail) {
> >> - if (eof) {
> >> + void decode(byte[] in, int inPos, int inAvail, Context context) {
> >> + if (context.eof) {
> >> return;
> >> }
> >> if (inAvail < 0) {
> >> - eof = true;
> >> + context.eof = true;
> >> }
> >> for (int i = 0; i < inAvail; i++) {
> >> - ensureBufferSize(decodeSize);
> >> + ensureBufferSize(decodeSize, context);
> >> byte b = in[inPos++];
> >> if (b == PAD) {
> >> // We're done.
> >> - eof = true;
> >> + context.eof = true;
> >> break;
> >> } else {
> >> if (b >= 0 && b < DECODE_TABLE.length) {
> >> int result = DECODE_TABLE[b];
> >> if (result >= 0) {
> >> - modulus = (modulus+1) %
> BYTES_PER_ENCODED_BLOCK;
> >> - bitWorkArea = (bitWorkArea <<
> BITS_PER_ENCODED_BYTE) + result;
> >> - if (modulus == 0) {
> >> - buffer[pos++] = (byte) ((bitWorkArea >>
> 16) & MASK_8BITS);
> >> - buffer[pos++] = (byte) ((bitWorkArea >> 8)
> & MASK_8BITS);
> >> - buffer[pos++] = (byte) (bitWorkArea &
> MASK_8BITS);
> >> + context.modulus = (context.modulus+1) %
> BYTES_PER_ENCODED_BLOCK;
> >> + context.ibitWorkArea = (context.ibitWorkArea
> << BITS_PER_ENCODED_BYTE) + result;
> >> + if (context.modulus == 0) {
> >> + context.buffer[context.pos++] = (byte)
> ((context.ibitWorkArea >> 16) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.ibitWorkArea >> 8) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> (context.ibitWorkArea & MASK_8BITS);
> >> }
> >> }
> >> }
> >> @@ -446,22 +441,22 @@ public class Base64 extends BaseNCodec {
> >> // Two forms of EOF as far as base64 decoder is concerned:
> actual
> >> // EOF (-1) and first time '=' character is encountered in
> stream.
> >> // This approach makes the '=' padding characters completely
> optional.
> >> - if (eof && modulus != 0) {
> >> - ensureBufferSize(decodeSize);
> >> + if (context.eof && context.modulus != 0) {
> >> + ensureBufferSize(decodeSize, context);
> >>
> >> // We have some spare bits remaining
> >> // Output all whole multiples of 8 bits and ignore the rest
> >> - switch (modulus) {
> >> + switch (context.modulus) {
> >> // case 1: // 6 bits - ignore entirely
> >> // break;
> >> case 2 : // 12 bits = 8 + 4
> >> - bitWorkArea = bitWorkArea >> 4; // dump the extra
> 4 bits
> >> - buffer[pos++] = (byte) ((bitWorkArea) &
> MASK_8BITS);
> >> + context.ibitWorkArea = context.ibitWorkArea >> 4;
> // dump the extra 4 bits
> >> + context.buffer[context.pos++] = (byte)
> ((context.ibitWorkArea) & MASK_8BITS);
> >> break;
> >> case 3 : // 18 bits = 8 + 8 + 2
> >> - bitWorkArea = bitWorkArea >> 2; // dump 2 bits
> >> - buffer[pos++] = (byte) ((bitWorkArea >> 8) &
> MASK_8BITS);
> >> - buffer[pos++] = (byte) ((bitWorkArea) &
> MASK_8BITS);
> >> + context.ibitWorkArea = context.ibitWorkArea >> 2;
> // dump 2 bits
> >> + context.buffer[context.pos++] = (byte)
> ((context.ibitWorkArea >> 8) & MASK_8BITS);
> >> + context.buffer[context.pos++] = (byte)
> ((context.ibitWorkArea) & MASK_8BITS);
> >> break;
> >> }
> >> }
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java
> Sun Apr 1 16:56:10 2012
> >> @@ -36,7 +36,6 @@ import java.io.InputStream;
> >> * character encodings which are compatible with the lower 127 ASCII
> chart (ISO-8859-1, Windows-1252, UTF-8, etc).
> >> * </p>
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>
> >> * @since 1.4
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java
> Sun Apr 1 16:56:10 2012
> >> @@ -36,7 +36,6 @@ import java.io.OutputStream;
> >> * character encodings which are compatible with the lower 127 ASCII
> chart (ISO-8859-1, Windows-1252, UTF-8, etc).
> >> * </p>
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>
> >> * @since 1.4
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java
> Sun Apr 1 16:56:10 2012
> >> @@ -26,13 +26,70 @@ import org.apache.commons.codec.EncoderE
> >> * Abstract superclass for Base-N encoders and decoders.
> >> *
> >> * <p>
> >> - * This class is not thread-safe.
> >> - * Each thread should use its own instance.
> >> + * This class is thread-safe.
> >> * </p>
> >> */
> >> public abstract class BaseNCodec implements BinaryEncoder,
> BinaryDecoder {
> >>
> >> /**
> >> + * Holds thread context so classes can be thread-safe.
> >> + *
> >> + * This class is not itself thread-safe; each thread must allocate
> its own copy.
> >> + *
> >> + * @since 1.7
> >> + */
> >> + static class Context {
> >> +
> >> + /**
> >> + * Place holder for the bytes we're dealing with for our based
> logic.
> >> + * Bitwise operations store and extract the encoding or
> decoding from this variable.
> >> + */
> >> + int ibitWorkArea;
> >> +
> >> + /**
> >> + * Place holder for the bytes we're dealing with for our based
> logic.
> >> + * Bitwise operations store and extract the encoding or
> decoding from this variable.
> >> + */
> >> + long lbitWorkArea;
> >> +
> >> + /**
> >> + * Buffer for streaming.
> >> + */
> >> + byte[] buffer;
> >> +
> >> + /**
> >> + * Position where next character should be written in the
> buffer.
> >> + */
> >> + int pos;
> >> +
> >> + /**
> >> + * Position where next character should be read from the
> buffer.
> >> + */
> >> + int readPos;
> >> +
> >> + /**
> >> + * Boolean flag to indicate the EOF has been reached. Once EOF
> has been reached, this object becomes useless,
> >> + * and must be thrown away.
> >> + */
> >> + boolean eof;
> >> +
> >> + /**
> >> + * Variable tracks how many characters have been written to
> the current line. Only used when encoding. We use it to
> >> + * make sure each encoded line never goes beyond lineLength
> (if lineLength > 0).
> >> + */
> >> + int currentLinePos;
> >> +
> >> + /**
> >> + * Writes to the buffer only occur after every 3/5 reads when
> encoding, and every 4/8 reads when decoding.
> >> + * This variable helps track that.
> >> + */
> >> + int modulus;
> >> +
> >> + Context() {
> >> + }
> >> + }
> >> +
> >> + /**
> >> * EOF
> >> *
> >> * @since 1.7
> >> @@ -100,39 +157,6 @@ public abstract class BaseNCodec impleme
> >> private final int chunkSeparatorLength;
> >>
> >> /**
> >> - * Buffer for streaming.
> >> - */
> >> - protected byte[] buffer;
> >> -
> >> - /**
> >> - * Position where next character should be written in the buffer.
> >> - */
> >> - protected int pos;
> >> -
> >> - /**
> >> - * Position where next character should be read from the buffer.
> >> - */
> >> - private int readPos;
> >> -
> >> - /**
> >> - * Boolean flag to indicate the EOF has been reached. Once EOF has
> been reached, this object becomes useless,
> >> - * and must be thrown away.
> >> - */
> >> - protected boolean eof;
> >> -
> >> - /**
> >> - * Variable tracks how many characters have been written to the
> current line. Only used when encoding. We use it to
> >> - * make sure each encoded line never goes beyond lineLength (if
> lineLength > 0).
> >> - */
> >> - protected int currentLinePos;
> >> -
> >> - /**
> >> - * Writes to the buffer only occur after every 3/5 reads when
> encoding, and every 4/8 reads when decoding.
> >> - * This variable helps track that.
> >> - */
> >> - protected int modulus;
> >> -
> >> - /**
> >> * Note <code>lineLength</code> is rounded down to the nearest
> multiple of {@link #encodedBlockSize}
> >> * If <code>chunkSeparatorLength</code> is zero, then chunking is
> disabled.
> >> * @param unencodedBlockSize the size of an unencoded block (e.g.
> Base64 = 3)
> >> @@ -150,19 +174,21 @@ public abstract class BaseNCodec impleme
> >> /**
> >> * Returns true if this object has buffered data for reading.
> >> *
> >> + * @param context the context to be used
> >> * @return true if there is data still available for reading.
> >> */
> >> - boolean hasData() { // package protected for access from I/O
> streams
> >> - return this.buffer != null;
> >> + boolean hasData(Context context) { // package protected for
> access from I/O streams
> >> + return context.buffer != null;
> >> }
> >>
> >> /**
> >> * Returns the amount of buffered data available for reading.
> >> *
> >> + * @param context the context to be used
> >> * @return The amount of buffered data available for reading.
> >> */
> >> - int available() { // package protected for access from I/O streams
> >> - return buffer != null ? pos - readPos : 0;
> >> + int available(Context context) { // package protected for access
> from I/O streams
> >> + return context.buffer != null ? context.pos - context.readPos
> : 0;
> >> }
> >>
> >> /**
> >> @@ -174,16 +200,19 @@ public abstract class BaseNCodec impleme
> >> return DEFAULT_BUFFER_SIZE;
> >> }
> >>
> >> - /** Increases our buffer by the {@link
> #DEFAULT_BUFFER_RESIZE_FACTOR}. */
> >> - private void resizeBuffer() {
> >> - if (buffer == null) {
> >> - buffer = new byte[getDefaultBufferSize()];
> >> - pos = 0;
> >> - readPos = 0;
> >> + /**
> >> + * Increases our buffer by the {@link
> #DEFAULT_BUFFER_RESIZE_FACTOR}.
> >> + * @param context the context to be used
> >> + */
> >> + private void resizeBuffer(Context context) {
> >> + if (context.buffer == null) {
> >> + context.buffer = new byte[getDefaultBufferSize()];
> >> + context.pos = 0;
> >> + context.readPos = 0;
> >> } else {
> >> - byte[] b = new byte[buffer.length *
> DEFAULT_BUFFER_RESIZE_FACTOR];
> >> - System.arraycopy(buffer, 0, b, 0, buffer.length);
> >> - buffer = b;
> >> + byte[] b = new byte[context.buffer.length *
> DEFAULT_BUFFER_RESIZE_FACTOR];
> >> + System.arraycopy(context.buffer, 0, b, 0,
> context.buffer.length);
> >> + context.buffer = b;
> >> }
> >> }
> >>
> >> @@ -191,10 +220,11 @@ public abstract class BaseNCodec impleme
> >> * Ensure that the buffer has room for <code>size</code> bytes
> >> *
> >> * @param size minimum spare space required
> >> + * @param context the context to be used
> >> */
> >> - protected void ensureBufferSize(int size){
> >> - if ((buffer == null) || (buffer.length < pos + size)){
> >> - resizeBuffer();
> >> + protected void ensureBufferSize(int size, Context context){
> >> + if ((context.buffer == null) || (context.buffer.length <
> context.pos + size)){
> >> + resizeBuffer(context);
> >> }
> >> }
> >>
> >> @@ -208,19 +238,20 @@ public abstract class BaseNCodec impleme
> >> * position in byte[] array to start extraction at.
> >> * @param bAvail
> >> * amount of bytes we're allowed to extract. We may
> extract fewer (if fewer are available).
> >> + * @param context the context to be used
> >> * @return The number of bytes successfully extracted into the
> provided byte[] array.
> >> */
> >> - int readResults(byte[] b, int bPos, int bAvail) { // package
> protected for access from I/O streams
> >> - if (buffer != null) {
> >> - int len = Math.min(available(), bAvail);
> >> - System.arraycopy(buffer, readPos, b, bPos, len);
> >> - readPos += len;
> >> - if (readPos >= pos) {
> >> - buffer = null; // so hasData() will return false, and
> this method can return -1
> >> + int readResults(byte[] b, int bPos, int bAvail, Context context) {
> // package protected for access from I/O streams
> >> + if (context.buffer != null) {
> >> + int len = Math.min(available(context), bAvail);
> >> + System.arraycopy(context.buffer, context.readPos, b, bPos,
> len);
> >> + context.readPos += len;
> >> + if (context.readPos >= context.pos) {
> >> + context.buffer = null; // so hasData() will return
> false, and this method can return -1
> >> }
> >> return len;
> >> }
> >> - return eof ? EOF : 0;
> >> + return context.eof ? EOF : 0;
> >> }
> >>
> >> /**
> >> @@ -243,18 +274,6 @@ public abstract class BaseNCodec impleme
> >> }
> >>
> >> /**
> >> - * Resets this object to its initial newly constructed state.
> >> - */
> >> - private void reset() {
> >> - buffer = null;
> >> - pos = 0;
> >> - readPos = 0;
> >> - currentLinePos = 0;
> >> - modulus = 0;
> >> - eof = false;
> >> - }
> >> -
> >> - /**
> >> * Encodes an Object using the Base-N algorithm. This method is
> provided in order to satisfy the requirements of the
> >> * Encoder interface, and will throw an EncoderException if the
> supplied object is not of type byte[].
> >> *
> >> @@ -321,14 +340,14 @@ public abstract class BaseNCodec impleme
> >> * @return a byte array containing binary data
> >> */
> >> public byte[] decode(byte[] pArray) {
> >> - reset();
> >> + Context context = new Context();
> >> if (pArray == null || pArray.length == 0) {
> >> return pArray;
> >> }
> >> - decode(pArray, 0, pArray.length);
> >> - decode(pArray, 0, EOF); // Notify decoder of EOF.
> >> - byte[] result = new byte[pos];
> >> - readResults(result, 0, result.length);
> >> + decode(pArray, 0, pArray.length, context);
> >> + decode(pArray, 0, EOF, context); // Notify decoder of EOF.
> >> + byte[] result = new byte[context.pos];
> >> + readResults(result, 0, result.length, context);
> >> return result;
> >> }
> >>
> >> @@ -340,14 +359,14 @@ public abstract class BaseNCodec impleme
> >> * @return A byte array containing only the basen alphabetic
> character data
> >> */
> >> public byte[] encode(byte[] pArray) {
> >> - reset();
> >> + Context context = new Context();
> >> if (pArray == null || pArray.length == 0) {
> >> return pArray;
> >> }
> >> - encode(pArray, 0, pArray.length);
> >> - encode(pArray, 0, EOF); // Notify encoder of EOF.
> >> - byte[] buf = new byte[pos - readPos];
> >> - readResults(buf, 0, buf.length);
> >> + encode(pArray, 0, pArray.length, context);
> >> + encode(pArray, 0, EOF, context); // Notify encoder of EOF.
> >> + byte[] buf = new byte[context.pos - context.readPos];
> >> + readResults(buf, 0, buf.length, context);
> >> return buf;
> >> }
> >>
> >> @@ -362,9 +381,9 @@ public abstract class BaseNCodec impleme
> >> return StringUtils.newStringUtf8(encode(pArray));
> >> }
> >>
> >> - abstract void encode(byte[] pArray, int i, int length); //
> package protected for access from I/O streams
> >> + abstract void encode(byte[] pArray, int i, int length, Context
> context); // package protected for access from I/O streams
> >>
> >> - abstract void decode(byte[] pArray, int i, int length); // package
> protected for access from I/O streams
> >> + abstract void decode(byte[] pArray, int i, int length, Context
> context); // package protected for access from I/O streams
> >>
> >> /**
> >> * Returns whether or not the <code>octet</code> is in the current
> alphabet.
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java
> Sun Apr 1 16:56:10 2012
> >> @@ -23,6 +23,8 @@ import java.io.FilterInputStream;
> >> import java.io.IOException;
> >> import java.io.InputStream;
> >>
> >> +import org.apache.commons.codec.binary.BaseNCodec.Context;
> >> +
> >> /**
> >> * Abstract superclass for Base-N input streams.
> >> *
> >> @@ -36,6 +38,8 @@ public class BaseNCodecInputStream exten
> >>
> >> private final byte[] singleByte = new byte[1];
> >>
> >> + private Context context = new Context();
> >> +
> >> protected BaseNCodecInputStream(InputStream in, BaseNCodec
> baseNCodec, boolean doEncode) {
> >> super(in);
> >> this.doEncode = doEncode;
> >> @@ -55,8 +59,7 @@ public class BaseNCodecInputStream exten
> >> // data available. As we do not know for sure how much
> data is left,
> >> // just return 1 as a safe guess.
> >>
> >> - // use the EOF flag of the underlying codec instance
> >> - return baseNCodec.eof ? 0 : 1;
> >> + return context.eof ? 0 : 1;
> >> }
> >>
> >> /**
> >> @@ -136,16 +139,16 @@ public class BaseNCodecInputStream exten
> >> This is a fix for CODEC-101
> >> */
> >> while (readLen == 0) {
> >> - if (!baseNCodec.hasData()) {
> >> + if (!baseNCodec.hasData(context)) {
> >> byte[] buf = new byte[doEncode ? 4096 : 8192];
> >> int c = in.read(buf);
> >> if (doEncode) {
> >> - baseNCodec.encode(buf, 0, c);
> >> + baseNCodec.encode(buf, 0, c, context);
> >> } else {
> >> - baseNCodec.decode(buf, 0, c);
> >> + baseNCodec.decode(buf, 0, c, context);
> >> }
> >> }
> >> - readLen = baseNCodec.readResults(b, offset, len);
> >> + readLen = baseNCodec.readResults(b, offset, len,
> context);
> >> }
> >> return readLen;
> >> }
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java
> Sun Apr 1 16:56:10 2012
> >> @@ -23,6 +23,8 @@ import java.io.FilterOutputStream;
> >> import java.io.IOException;
> >> import java.io.OutputStream;
> >>
> >> +import org.apache.commons.codec.binary.BaseNCodec.Context;
> >> +
> >> /**
> >> * Abstract superclass for Base-N output streams.
> >> *
> >> @@ -36,6 +38,9 @@ public class BaseNCodecOutputStream exte
> >>
> >> private final byte[] singleByte = new byte[1];
> >>
> >> + private Context context = new Context();
> >> +
> >> + // TODO should this be protected?
> >> public BaseNCodecOutputStream(OutputStream out, BaseNCodec
> basedCodec, boolean doEncode) {
> >> super(out);
> >> this.baseNCodec = basedCodec;
> >> @@ -84,9 +89,9 @@ public class BaseNCodecOutputStream exte
> >> throw new IndexOutOfBoundsException();
> >> } else if (len > 0) {
> >> if (doEncode) {
> >> - baseNCodec.encode(b, offset, len);
> >> + baseNCodec.encode(b, offset, len, context);
> >> } else {
> >> - baseNCodec.decode(b, offset, len);
> >> + baseNCodec.decode(b, offset, len, context);
> >> }
> >> flush(false);
> >> }
> >> @@ -102,10 +107,10 @@ public class BaseNCodecOutputStream exte
> >> * if an I/O error occurs.
> >> */
> >> private void flush(boolean propogate) throws IOException {
> >> - int avail = baseNCodec.available();
> >> + int avail = baseNCodec.available(context);
> >> if (avail > 0) {
> >> byte[] buf = new byte[avail];
> >> - int c = baseNCodec.readResults(buf, 0, avail);
> >> + int c = baseNCodec.readResults(buf, 0, avail, context);
> >> if (c > 0) {
> >> out.write(buf, 0, c);
> >> }
> >> @@ -136,9 +141,9 @@ public class BaseNCodecOutputStream exte
> >> public void close() throws IOException {
> >> // Notify encoder of EOF (-1).
> >> if (doEncode) {
> >> - baseNCodec.encode(singleByte, 0, EOF);
> >> + baseNCodec.encode(singleByte, 0, EOF, context);
> >> } else {
> >> - baseNCodec.decode(singleByte, 0, EOF);
> >> + baseNCodec.decode(singleByte, 0, EOF, context);
> >> }
> >> flush();
> >> out.close();
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java
> Sun Apr 1 16:56:10 2012
> >> @@ -28,7 +28,6 @@ import org.apache.commons.codec.EncoderE
> >> * TODO: may want to add more bit vector functions like and/or/xor/nand
> >> * TODO: also might be good to generate boolean[] from byte[] et cetera.
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.3
> >> * @version $Id$
> >> */
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java
> Sun Apr 1 16:56:10 2012
> >> @@ -32,7 +32,6 @@ import org.apache.commons.codec.EncoderE
> >> * {@link #DEFAULT_CHARSET_NAME}
> >> *
> >> * @since 1.1
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public class Hex implements BinaryEncoder, BinaryDecoder {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java
> Sun Apr 1 16:56:10 2012
> >> @@ -29,7 +29,6 @@ import org.apache.commons.codec.Charsets
> >> *
> >> * @see CharEncoding
> >> * @see <a href="
> http://download.oracle.com/javase/6/docs/api/java/nio/charset/Charset.html">Standard
> charsets</a>
> >> - * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
> >> * @version $Id$
> >> * @since 1.4
> >> */
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java
> Sun Apr 1 16:56:10 2012
> >> @@ -28,7 +28,6 @@ import org.apache.commons.codec.binary.S
> >> /**
> >> * Operations to simplify common {@link java.security.MessageDigest}
> tasks. This class is thread safe.
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public class DigestUtils {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java
> Sun Apr 1 16:56:10 2012
> >> @@ -26,7 +26,6 @@ import org.apache.commons.codec.StringEn
> >> * This is an algorithm created by the Caversham Project at the
> University of Otago. It implements the Caverphone 2.0
> >> * algorithm:
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id: Caverphone.java 1075947 2011-03-01 17:56:14Z ggregory $
> >> * @see <a href="http://en.wikipedia.org/wiki/Caverphone">Wikipedia -
> Caverphone</a>
> >> * @since 1.5
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java
> Sun Apr 1 16:56:10 2012
> >> @@ -26,7 +26,6 @@ import org.apache.commons.codec.StringEn
> >> * This is an algorithm created by the Caversham Project at the
> University of Otago. It implements the Caverphone 2.0
> >> * algorithm:
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id: Caverphone.java 1079535 2011-03-08 20:54:37Z ggregory $
> >> * @see <a href="http://en.wikipedia.org/wiki/Caverphone">Wikipedia -
> Caverphone</a>
> >> * @see <a href="
> http://caversham.otago.ac.nz/files/working/ctp150804.pdf">Caverphone 2.0
> specification</a>
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java
> Sun Apr 1 16:56:10 2012
> >> @@ -23,7 +23,6 @@ package org.apache.commons.codec.languag
> >> * This is an algorithm created by the Caversham Project at the
> University of Otago. It implements the Caverphone 1.0
> >> * algorithm:
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id: Caverphone.java 1075947 2011-03-01 17:56:14Z ggregory $
> >> * @see <a href="http://en.wikipedia.org/wiki/Caverphone">Wikipedia -
> Caverphone</a>
> >> * @see <a href="
> http://caversham.otago.ac.nz/files/working/ctp060902.pdf">Caverphone 1.0
> specification</a>
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java
> Sun Apr 1 16:56:10 2012
> >> @@ -23,7 +23,6 @@ package org.apache.commons.codec.languag
> >> * This is an algorithm created by the Caversham Project at the
> University of Otago. It implements the Caverphone 2.0
> >> * algorithm:
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id: Caverphone.java 1075947 2011-03-01 17:56:14Z ggregory $
> >> * @see <a href="http://en.wikipedia.org/wiki/Caverphone">Wikipedia -
> Caverphone</a>
> >> * @see <a href="
> http://caversham.otago.ac.nz/files/working/ctp150804.pdf">Caverphone 2.0
> specification</a>
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java
> Sun Apr 1 16:56:10 2012
> >> @@ -177,7 +177,6 @@ import org.apache.commons.codec.StringEn
> >> * </ul>
> >> *
> >> * @see <a href="http://de.wikipedia.org/wiki/K%C3%B6lner_Phonetik">Wikipedia
> (de): Kölner Phonetik (in German)</a>
> >> - * @author Apache Software Foundation
> >> * @since 1.5
> >> */
> >> public class ColognePhonetic implements StringEncoder {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java
> Sun Apr 1 16:56:10 2012
> >> @@ -27,7 +27,6 @@ import org.apache.commons.codec.StringEn
> >> * @see <a href="http://drdobbs.com/184401251?pgno=2">Original
> Article</a>
> >> * @see <a href="http://en.wikipedia.org/wiki/Metaphone">
> http://en.wikipedia.org/wiki/Metaphone</a>
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public class DoubleMetaphone implements StringEncoder {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java
> Sun Apr 1 16:56:10 2012
> >> @@ -37,7 +37,6 @@ import org.apache.commons.codec.StringEn
> >> * For more information, see <a href="
> https://issues.apache.org/jira/browse/CODEC-57">CODEC-57</a>.
> >> * </p>
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public class Metaphone implements StringEncoder {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java
> Sun Apr 1 16:56:10 2012
> >> @@ -25,7 +25,6 @@ import org.apache.commons.codec.StringEn
> >> * optimized for spell checking words. Soundex method originally
> developed by
> >> * <CITE>Margaret Odell</CITE> and <CITE>Robert Russell</CITE>.
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public class RefinedSoundex implements StringEncoder {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java
> Sun Apr 1 16:56:10 2012
> >> @@ -24,7 +24,6 @@ import org.apache.commons.codec.StringEn
> >> * Encodes a string into a Soundex value. Soundex is an encoding used
> to relate similar names, but can also be used as a
> >> * general purpose scheme to find word with similar phonemes.
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> */
> >> public class Soundex implements StringEncoder {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java
> Sun Apr 1 16:56:10 2012
> >> @@ -23,7 +23,6 @@ import org.apache.commons.codec.StringEn
> >> /**
> >> * Utility methods for {@link Soundex} and {@link RefinedSoundex}
> classes.
> >> *
> >> - * @author Apache Software Foundation
> >> * @version $Id$
> >> * @since 1.3
> >> */
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java
> Sun Apr 1 16:56:10 2012
> >> @@ -74,7 +74,6 @@ import org.apache.commons.codec.StringEn
> >> * splitting on pipe (<code>|</code>) and indexing under each of these
> alternatives.
> >> * </p>
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.6
> >> */
> >> public class BeiderMorseEncoder implements StringEncoder {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java
> Sun Apr 1 16:56:10 2012
> >> @@ -67,7 +67,6 @@ import java.util.regex.Pattern;
> >> * <p/>
> >> * Port of lang.php
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.6
> >> */
> >> public class Lang {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java
> Sun Apr 1 16:56:10 2012
> >> @@ -49,7 +49,6 @@ import java.util.Set;
> >> * Ported from language.php
> >> * </p>
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.6
> >> */
> >> public class Languages {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java
> Sun Apr 1 16:56:10 2012
> >> @@ -22,7 +22,6 @@ package org.apache.commons.codec.languag
> >> * <code>GENERIC</code> NameType should work reasonably well for
> non-name words. The other encodings are specifically
> >> * tuned to family names, and may not work well at all for general text.
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.6
> >> */
> >> public enum NameType {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java
> Sun Apr 1 16:56:10 2012
> >> @@ -47,7 +47,6 @@ import java.util.TreeSet;
> >> * Ported from phoneticengine.php
> >> * </p>
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.6
> >> */
> >> public class PhoneticEngine {
> >> @@ -56,7 +55,6 @@ public class PhoneticEngine {
> >> * Utility for manipulating a set of phonemes as they are being
> built up. Not intended for use outside this package,
> >> * and probably not outside the {@link PhoneticEngine} class.
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.6
> >> */
> >> static final class PhonemeBuilder {
> >> @@ -165,7 +163,6 @@ public class PhoneticEngine {
> >> * matching rule was found, <code>phonemeBuilder</code> is replaced
> with a new buidler containing the phonemes
> >> * updated by the matching rule.
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.6
> >> */
> >> private static final class RulesApplication {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java
> Sun Apr 1 16:56:10 2012
> >> @@ -22,7 +22,6 @@ import org.apache.commons.codec.CharEnco
> >> /**
> >> * Constants used to process resource files.
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.6
> >> */
> >> class ResourceConstants {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java
> Sun Apr 1 16:56:10 2012
> >> @@ -76,7 +76,6 @@ import java.util.regex.Pattern;
> >> * </ul>
> >> * </p>
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.6
> >> */
> >> public class Rule {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java
> Sun Apr 1 16:56:10 2012
> >> @@ -20,7 +20,6 @@ package org.apache.commons.codec.languag
> >> /**
> >> * Types of rule.
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.6
> >> */
> >> public enum RuleType {
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java
> Sun Apr 1 16:56:10 2012
> >> @@ -43,7 +43,6 @@ import org.apache.commons.codec.binary.B
> >> * @see <a href="http://www.ietf.org/rfc/rfc1522.txt">MIME
> (Multipurpose Internet Mail Extensions) Part Two: Message
> >> * Header Extensions for Non-ASCII Text</a>
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.3
> >> * @version $Id$
> >> */
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java
> Sun Apr 1 16:56:10 2012
> >> @@ -44,7 +44,6 @@ import org.apache.commons.codec.StringEn
> >> * @see <a href="http://www.ietf.org/rfc/rfc1522.txt">MIME
> (Multipurpose Internet Mail Extensions) Part Two: Message
> >> * Header Extensions for Non-ASCII Text</a>
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.3
> >> * @version $Id$
> >> */
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java
> Sun Apr 1 16:56:10 2012
> >> @@ -58,7 +58,6 @@ import org.apache.commons.codec.binary.S
> >> * @see <a href="http://www.ietf.org/rfc/rfc1521.txt"> RFC 1521 MIME
> (Multipurpose Internet Mail Extensions) Part One:
> >> * Mechanisms for Specifying and Describing the Format of
> Internet Message Bodies </a>
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.3
> >> * @version $Id$
> >> */
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java
> Sun Apr 1 16:56:10 2012
> >> @@ -41,7 +41,6 @@ import org.apache.commons.codec.binary.S
> >> * Message Header Extensions for Non-ASCII Text</a>
> >> * </p>
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.3
> >> * @version $Id$
> >> */
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java
> Sun Apr 1 16:56:10 2012
> >> @@ -46,7 +46,6 @@ import org.apache.commons.codec.binary.S
> >> * 1.4 rely on the platform's default charset encoding.
> >> * </p>
> >> *
> >> - * @author Apache Software Foundation
> >> * @since 1.2
> >> * @version $Id$
> >> */
> >>
> >> Modified:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java
> Sun Apr 1 16:56:10 2012
> >> @@ -22,7 +22,6 @@ import org.apache.commons.codec.DecoderE
> >> /**
> >> * Utility methods for this package.
> >> *
> >> - * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
> >> * @version $Id$
> >> * @since 1.4
> >> */
> >>
> >> Modified:
> commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java
> >> URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java?rev=1308156&r1=1308155&r2=1308156&view=diff
> >>
> ==============================================================================
> >> ---
> commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java
> (original)
> >> +++
> commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java
> Sun Apr 1 16:56:10 2012
> >> @@ -87,15 +87,16 @@ public class Base32Test {
> >> public void testSingleCharEncoding() {
> >> for (int i = 0; i < 20; i++) {
> >> Base32 codec = new Base32();
> >> + BaseNCodec.Context context = new BaseNCodec.Context();
> >> byte unencoded[] = new byte[i];
> >> byte allInOne[] = codec.encode(unencoded);
> >> codec = new Base32();
> >> for (int j=0; j< unencoded.length; j++) {
> >> - codec.encode(unencoded, j, 1);
> >> + codec.encode(unencoded, j, 1, context);
> >> }
> >> - codec.encode(unencoded, 0, -1);
> >> + codec.encode(unencoded, 0, -1, context);
> >> byte singly[] = new byte[allInOne.length];
> >> - codec.readResults(singly, 0, 100);
> >> + codec.readResults(singly, 0, 100, context);
> >> if (!Arrays.equals(allInOne, singly)){
> >> fail();
> >> }
> >>
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> > For additional commands, e-mail: dev-help@commons.apache.org
> >
>
--
E-Mail: garydgregory@gmail.com | ggregory@apache.org
JUnit in Action, 2nd Ed: <http://goog_1249600977>http://bit.ly/ECvg0
Spring Batch in Action: <http://s.apache.org/HOq>http://bit.ly/bqpbCK
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory
Re: svn commit: r1308156 [1/2] - in /commons/proper/codec/trunk/src:
main/java/org/apache/commons/codec/ main/java/org/apache/commons/codec/binary/
main/java/org/apache/commons/codec/digest/ main/java/org/apache/commons/codec/language/
main/java/org/
Posted by Gary Gregory <ga...@gmail.com>.
On Apr 1, 2012, at 14:07, sebb <se...@gmail.com> wrote:
> On 1 April 2012 17:56, <gg...@apache.org> wrote:
>> Author: ggregory
>> Date: Sun Apr 1 16:56:10 2012
>> New Revision: 1308156
>>
>> URL: http://svn.apache.org/viewvc?rev=1308156&view=rev
>> Log:
>> Remove @author tags.
>
> -1
>
> This commit mixes @author removal with other code changes.
>
> Please revert and apply separately.
I know. That was an inadvertent mistake. Will do.
Gary
>
>> Modified:
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java
>> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java
>> commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java
>> commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/BaseNCodecTest.java
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryDecoder.java Sun Apr 1 16:56:10 2012
>> @@ -20,7 +20,6 @@ package org.apache.commons.codec;
>> /**
>> * Defines common decoding methods for byte array decoders.
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public interface BinaryDecoder extends Decoder {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/BinaryEncoder.java Sun Apr 1 16:56:10 2012
>> @@ -20,7 +20,6 @@ package org.apache.commons.codec;
>> /**
>> * Defines common encoding methods for byte array encoders.
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public interface BinaryEncoder extends Encoder {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/CharEncoding.java Sun Apr 1 16:56:10 2012
>> @@ -48,7 +48,6 @@ package org.apache.commons.codec;
>> * foreseen that [codec] would be made to depend on [lang].
>> *
>> * @see <a href="http://download.oracle.com/javase/6/docs/api/java/nio/charset/Charset.html">Standard charsets</a>
>> - * @author Apache Software Foundation
>> * @since 1.4
>> * @version $Id$
>> */
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Charsets.java Sun Apr 1 16:56:10 2012
>> @@ -50,7 +50,6 @@ import java.nio.charset.UnsupportedChars
>> * not foreseen that Commons Codec would be made to depend on Commons Lang.
>> *
>> * @see <a href="http://docs.oracle.com/javase/6/docs/api/java/nio/charset/Charset.html">Standard charsets</a>
>> - * @author Apache Software Foundation
>> * @since 1.7
>> * @version $Id: CharEncoding.java 1173287 2011-09-20 18:16:19Z ggregory $
>> */
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Decoder.java Sun Apr 1 16:56:10 2012
>> @@ -27,7 +27,6 @@ package org.apache.commons.codec;
>> *
>> * <p>One of the two interfaces at the center of the codec package.</p>
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public interface Decoder {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/DecoderException.java Sun Apr 1 16:56:10 2012
>> @@ -21,7 +21,6 @@ package org.apache.commons.codec;
>> * Thrown when there is a failure condition during the decoding process. This exception is thrown when a {@link Decoder}
>> * encounters a decoding specific exception such as invalid data, or characters outside of the expected range.
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public class DecoderException extends Exception {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/Encoder.java Sun Apr 1 16:56:10 2012
>> @@ -23,7 +23,6 @@ package org.apache.commons.codec;
>> * Encoder provides this common generic interface which allows a user to pass a
>> * generic Object to any Encoder implementation in the codec package.</p>
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public interface Encoder {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/EncoderException.java Sun Apr 1 16:56:10 2012
>> @@ -22,7 +22,6 @@ package org.apache.commons.codec;
>> * {@link Encoder} encounters a encoding specific exception such as invalid data, inability to calculate a checksum,
>> * characters outside of the expected range.
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public class EncoderException extends Exception {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringDecoder.java Sun Apr 1 16:56:10 2012
>> @@ -20,7 +20,6 @@ package org.apache.commons.codec;
>> /**
>> * Defines common decoding methods for String decoders.
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public interface StringDecoder extends Decoder {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoder.java Sun Apr 1 16:56:10 2012
>> @@ -20,7 +20,6 @@ package org.apache.commons.codec;
>> /**
>> * Defines common encoding methods for String encoders.
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public interface StringEncoder extends Encoder {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/StringEncoderComparator.java Sun Apr 1 16:56:10 2012
>> @@ -24,7 +24,6 @@ import java.util.Comparator;
>> * Soundex, Metaphone, etc. This class can come in handy if one need to sort Strings by an encoded form of a name such
>> * as Soundex.
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public class StringEncoderComparator implements Comparator {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base32.java Sun Apr 1 16:56:10 2012
>> @@ -33,7 +33,7 @@ package org.apache.commons.codec.binary;
>> * This class operates directly on byte streams, and not character streams.
>> * </p>
>> * <p>
>> - * This class is not thread-safe. Each thread should use its own instance.
>> + * This class is thread-safe.
>> * </p>
>> *
>> * @see <a href="http://www.ietf.org/rfc/rfc4648.txt">RFC 4648</a>
>> @@ -122,8 +122,6 @@ public class Base32 extends BaseNCodec {
>> * Place holder for the bytes we're dealing with for our based logic.
>> * Bitwise operations store and extract the encoding or decoding from this variable.
>> */
>> - private long bitWorkArea;
>> -
>> /**
>> * Convenience variable to help us determine when our buffer is going to run out of room and needs resizing.
>> * <code>decodeSize = {@link #BYTES_PER_ENCODED_BLOCK} - 1 + lineSeparator.length;</code>
>> @@ -275,36 +273,37 @@ public class Base32 extends BaseNCodec {
>> * Position to start reading data from.
>> * @param inAvail
>> * Amount of bytes available from input for encoding.
>> + * @param context the context to be used
>> *
>> * Output is written to {@link #buffer} as 8-bit octets, using {@link #pos} as the buffer position
>> */
>> @Override
>> - void decode(byte[] in, int inPos, int inAvail) { // package protected for access from I/O streams
>> - if (eof) {
>> + void decode(byte[] in, int inPos, int inAvail, Context context) { // package protected for access from I/O streams
>> + if (context.eof) {
>> return;
>> }
>> if (inAvail < 0) {
>> - eof = true;
>> + context.eof = true;
>> }
>> for (int i = 0; i < inAvail; i++) {
>> byte b = in[inPos++];
>> if (b == PAD) {
>> // We're done.
>> - eof = true;
>> + context.eof = true;
>> break;
>> } else {
>> - ensureBufferSize(decodeSize);
>> + ensureBufferSize(decodeSize, context);
>> if (b >= 0 && b < this.decodeTable.length) {
>> int result = this.decodeTable[b];
>> if (result >= 0) {
>> - modulus = (modulus+1) % BYTES_PER_ENCODED_BLOCK;
>> - bitWorkArea = (bitWorkArea << BITS_PER_ENCODED_BYTE) + result; // collect decoded bytes
>> - if (modulus == 0) { // we can output the 5 bytes
>> - buffer[pos++] = (byte) ((bitWorkArea >> 32) & MASK_8BITS);
>> - buffer[pos++] = (byte) ((bitWorkArea >> 24) & MASK_8BITS);
>> - buffer[pos++] = (byte) ((bitWorkArea >> 16) & MASK_8BITS);
>> - buffer[pos++] = (byte) ((bitWorkArea >> 8) & MASK_8BITS);
>> - buffer[pos++] = (byte) (bitWorkArea & MASK_8BITS);
>> + context.modulus = (context.modulus+1) % BYTES_PER_ENCODED_BLOCK;
>> + context.lbitWorkArea = (context.lbitWorkArea << BITS_PER_ENCODED_BYTE) + result; // collect decoded bytes
>> + if (context.modulus == 0) { // we can output the 5 bytes
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 32) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 24) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 16) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 8) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) (context.lbitWorkArea & MASK_8BITS);
>> }
>> }
>> }
>> @@ -314,40 +313,40 @@ public class Base32 extends BaseNCodec {
>> // Two forms of EOF as far as Base32 decoder is concerned: actual
>> // EOF (-1) and first time '=' character is encountered in stream.
>> // This approach makes the '=' padding characters completely optional.
>> - if (eof && modulus >= 2) { // if modulus < 2, nothing to do
>> - ensureBufferSize(decodeSize);
>> + if (context.eof && context.modulus >= 2) { // if modulus < 2, nothing to do
>> + ensureBufferSize(decodeSize, context);
>>
>> // we ignore partial bytes, i.e. only multiples of 8 count
>> - switch (modulus) {
>> + switch (context.modulus) {
>> case 2 : // 10 bits, drop 2 and output one byte
>> - buffer[pos++] = (byte) ((bitWorkArea >> 2) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 2) & MASK_8BITS);
>> break;
>> case 3 : // 15 bits, drop 7 and output 1 byte
>> - buffer[pos++] = (byte) ((bitWorkArea >> 7) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 7) & MASK_8BITS);
>> break;
>> case 4 : // 20 bits = 2*8 + 4
>> - bitWorkArea = bitWorkArea >> 4; // drop 4 bits
>> - buffer[pos++] = (byte) ((bitWorkArea >> 8) & MASK_8BITS);
>> - buffer[pos++] = (byte) ((bitWorkArea) & MASK_8BITS);
>> + context.lbitWorkArea = context.lbitWorkArea >> 4; // drop 4 bits
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 8) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea) & MASK_8BITS);
>> break;
>> case 5 : // 25bits = 3*8 + 1
>> - bitWorkArea = bitWorkArea >> 1;
>> - buffer[pos++] = (byte) ((bitWorkArea >> 16) & MASK_8BITS);
>> - buffer[pos++] = (byte) ((bitWorkArea >> 8) & MASK_8BITS);
>> - buffer[pos++] = (byte) ((bitWorkArea) & MASK_8BITS);
>> + context.lbitWorkArea = context.lbitWorkArea >> 1;
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 16) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 8) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea) & MASK_8BITS);
>> break;
>> case 6 : // 30bits = 3*8 + 6
>> - bitWorkArea = bitWorkArea >> 6;
>> - buffer[pos++] = (byte) ((bitWorkArea >> 16) & MASK_8BITS);
>> - buffer[pos++] = (byte) ((bitWorkArea >> 8) & MASK_8BITS);
>> - buffer[pos++] = (byte) ((bitWorkArea) & MASK_8BITS);
>> + context.lbitWorkArea = context.lbitWorkArea >> 6;
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 16) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 8) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea) & MASK_8BITS);
>> break;
>> case 7 : // 35 = 4*8 +3
>> - bitWorkArea = bitWorkArea >> 3;
>> - buffer[pos++] = (byte) ((bitWorkArea >> 24) & MASK_8BITS);
>> - buffer[pos++] = (byte) ((bitWorkArea >> 16) & MASK_8BITS);
>> - buffer[pos++] = (byte) ((bitWorkArea >> 8) & MASK_8BITS);
>> - buffer[pos++] = (byte) ((bitWorkArea) & MASK_8BITS);
>> + context.lbitWorkArea = context.lbitWorkArea >> 3;
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 24) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 16) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea >> 8) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.lbitWorkArea) & MASK_8BITS);
>> break;
>> }
>> }
>> @@ -366,93 +365,94 @@ public class Base32 extends BaseNCodec {
>> * Position to start reading data from.
>> * @param inAvail
>> * Amount of bytes available from input for encoding.
>> + * @param context the context to be used
>> */
>> @Override
>> - void encode(byte[] in, int inPos, int inAvail) { // package protected for access from I/O streams
>> - if (eof) {
>> + void encode(byte[] in, int inPos, int inAvail, Context context) { // package protected for access from I/O streams
>> + if (context.eof) {
>> return;
>> }
>> // inAvail < 0 is how we're informed of EOF in the underlying data we're
>> // encoding.
>> if (inAvail < 0) {
>> - eof = true;
>> - if (0 == modulus && lineLength == 0) {
>> + context.eof = true;
>> + if (0 == context.modulus && lineLength == 0) {
>> return; // no leftovers to process and not using chunking
>> }
>> - ensureBufferSize(encodeSize);
>> - int savedPos = pos;
>> - switch (modulus) { // % 5
>> + ensureBufferSize(encodeSize, context);
>> + int savedPos = context.pos;
>> + switch (context.modulus) { // % 5
>> case 1 : // Only 1 octet; take top 5 bits then remainder
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 3) & MASK_5BITS]; // 8-1*5 = 3
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea << 2) & MASK_5BITS]; // 5-3=2
>> - buffer[pos++] = PAD;
>> - buffer[pos++] = PAD;
>> - buffer[pos++] = PAD;
>> - buffer[pos++] = PAD;
>> - buffer[pos++] = PAD;
>> - buffer[pos++] = PAD;
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 3) & MASK_5BITS]; // 8-1*5 = 3
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea << 2) & MASK_5BITS]; // 5-3=2
>> + context.buffer[context.pos++] = PAD;
>> + context.buffer[context.pos++] = PAD;
>> + context.buffer[context.pos++] = PAD;
>> + context.buffer[context.pos++] = PAD;
>> + context.buffer[context.pos++] = PAD;
>> + context.buffer[context.pos++] = PAD;
>> break;
>>
>> case 2 : // 2 octets = 16 bits to use
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 11) & MASK_5BITS]; // 16-1*5 = 11
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 6) & MASK_5BITS]; // 16-2*5 = 6
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 1) & MASK_5BITS]; // 16-3*5 = 1
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea << 4) & MASK_5BITS]; // 5-1 = 4
>> - buffer[pos++] = PAD;
>> - buffer[pos++] = PAD;
>> - buffer[pos++] = PAD;
>> - buffer[pos++] = PAD;
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 11) & MASK_5BITS]; // 16-1*5 = 11
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 6) & MASK_5BITS]; // 16-2*5 = 6
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 1) & MASK_5BITS]; // 16-3*5 = 1
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea << 4) & MASK_5BITS]; // 5-1 = 4
>> + context.buffer[context.pos++] = PAD;
>> + context.buffer[context.pos++] = PAD;
>> + context.buffer[context.pos++] = PAD;
>> + context.buffer[context.pos++] = PAD;
>> break;
>> case 3 : // 3 octets = 24 bits to use
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 19) & MASK_5BITS]; // 24-1*5 = 19
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 14) & MASK_5BITS]; // 24-2*5 = 14
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 9) & MASK_5BITS]; // 24-3*5 = 9
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 4) & MASK_5BITS]; // 24-4*5 = 4
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea << 1) & MASK_5BITS]; // 5-4 = 1
>> - buffer[pos++] = PAD;
>> - buffer[pos++] = PAD;
>> - buffer[pos++] = PAD;
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 19) & MASK_5BITS]; // 24-1*5 = 19
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 14) & MASK_5BITS]; // 24-2*5 = 14
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 9) & MASK_5BITS]; // 24-3*5 = 9
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 4) & MASK_5BITS]; // 24-4*5 = 4
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea << 1) & MASK_5BITS]; // 5-4 = 1
>> + context.buffer[context.pos++] = PAD;
>> + context.buffer[context.pos++] = PAD;
>> + context.buffer[context.pos++] = PAD;
>> break;
>> case 4 : // 4 octets = 32 bits to use
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 27) & MASK_5BITS]; // 32-1*5 = 27
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 22) & MASK_5BITS]; // 32-2*5 = 22
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 17) & MASK_5BITS]; // 32-3*5 = 17
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 12) & MASK_5BITS]; // 32-4*5 = 12
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 7) & MASK_5BITS]; // 32-5*5 = 7
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 2) & MASK_5BITS]; // 32-6*5 = 2
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea << 3) & MASK_5BITS]; // 5-2 = 3
>> - buffer[pos++] = PAD;
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 27) & MASK_5BITS]; // 32-1*5 = 27
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 22) & MASK_5BITS]; // 32-2*5 = 22
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 17) & MASK_5BITS]; // 32-3*5 = 17
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 12) & MASK_5BITS]; // 32-4*5 = 12
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 7) & MASK_5BITS]; // 32-5*5 = 7
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 2) & MASK_5BITS]; // 32-6*5 = 2
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea << 3) & MASK_5BITS]; // 5-2 = 3
>> + context.buffer[context.pos++] = PAD;
>> break;
>> }
>> - currentLinePos += pos - savedPos; // keep track of current line position
>> + context.currentLinePos += context.pos - savedPos; // keep track of current line position
>> // if currentPos == 0 we are at the start of a line, so don't add CRLF
>> - if (lineLength > 0 && currentLinePos > 0){ // add chunk separator if required
>> - System.arraycopy(lineSeparator, 0, buffer, pos, lineSeparator.length);
>> - pos += lineSeparator.length;
>> + if (lineLength > 0 && context.currentLinePos > 0){ // add chunk separator if required
>> + System.arraycopy(lineSeparator, 0, context.buffer, context.pos, lineSeparator.length);
>> + context.pos += lineSeparator.length;
>> }
>> } else {
>> for (int i = 0; i < inAvail; i++) {
>> - ensureBufferSize(encodeSize);
>> - modulus = (modulus+1) % BYTES_PER_UNENCODED_BLOCK;
>> + ensureBufferSize(encodeSize, context);
>> + context.modulus = (context.modulus+1) % BYTES_PER_UNENCODED_BLOCK;
>> int b = in[inPos++];
>> if (b < 0) {
>> b += 256;
>> }
>> - bitWorkArea = (bitWorkArea << 8) + b; // BITS_PER_BYTE
>> - if (0 == modulus) { // we have enough bytes to create our output
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 35) & MASK_5BITS];
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 30) & MASK_5BITS];
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 25) & MASK_5BITS];
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 20) & MASK_5BITS];
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 15) & MASK_5BITS];
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 10) & MASK_5BITS];
>> - buffer[pos++] = encodeTable[(int)(bitWorkArea >> 5) & MASK_5BITS];
>> - buffer[pos++] = encodeTable[(int)bitWorkArea & MASK_5BITS];
>> - currentLinePos += BYTES_PER_ENCODED_BLOCK;
>> - if (lineLength > 0 && lineLength <= currentLinePos) {
>> - System.arraycopy(lineSeparator, 0, buffer, pos, lineSeparator.length);
>> - pos += lineSeparator.length;
>> - currentLinePos = 0;
>> + context.lbitWorkArea = (context.lbitWorkArea << 8) + b; // BITS_PER_BYTE
>> + if (0 == context.modulus) { // we have enough bytes to create our output
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 35) & MASK_5BITS];
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 30) & MASK_5BITS];
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 25) & MASK_5BITS];
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 20) & MASK_5BITS];
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 15) & MASK_5BITS];
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 10) & MASK_5BITS];
>> + context.buffer[context.pos++] = encodeTable[(int)(context.lbitWorkArea >> 5) & MASK_5BITS];
>> + context.buffer[context.pos++] = encodeTable[(int)context.lbitWorkArea & MASK_5BITS];
>> + context.currentLinePos += BYTES_PER_ENCODED_BLOCK;
>> + if (lineLength > 0 && lineLength <= context.currentLinePos) {
>> + System.arraycopy(lineSeparator, 0, context.buffer, context.pos, lineSeparator.length);
>> + context.pos += lineSeparator.length;
>> + context.currentLinePos = 0;
>> }
>> }
>> }
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64.java Sun Apr 1 16:56:10 2012
>> @@ -40,11 +40,10 @@ import java.math.BigInteger;
>> * character encodings which are compatible with the lower 127 ASCII chart (ISO-8859-1, Windows-1252, UTF-8, etc).
>> * </p>
>> * <p>
>> - * This class is not thread-safe. Each thread should use its own instance.
>> + * This class is thread-safe.
>> * </p>
>> *
>> * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>
>> - * @author Apache Software Foundation
>> * @since 1.0
>> * @version $Revision$
>> */
>> @@ -157,12 +156,6 @@ public class Base64 extends BaseNCodec {
>> private final int encodeSize;
>>
>> /**
>> - * Place holder for the bytes we're dealing with for our based logic.
>> - * Bitwise operations store and extract the encoding or decoding from this variable.
>> - */
>> - private int bitWorkArea;
>> -
>> - /**
>> * Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.
>> * <p>
>> * When encoding the line length is 0 (no chunking), and the encoding table is STANDARD_ENCODE_TABLE.
>> @@ -322,67 +315,68 @@ public class Base64 extends BaseNCodec {
>> * Position to start reading data from.
>> * @param inAvail
>> * Amount of bytes available from input for encoding.
>> + * @param context the context to be used
>> */
>> @Override
>> - void encode(byte[] in, int inPos, int inAvail) {
>> - if (eof) {
>> + void encode(byte[] in, int inPos, int inAvail, Context context) {
>> + if (context.eof) {
>> return;
>> }
>> // inAvail < 0 is how we're informed of EOF in the underlying data we're
>> // encoding.
>> if (inAvail < 0) {
>> - eof = true;
>> - if (0 == modulus && lineLength == 0) {
>> + context.eof = true;
>> + if (0 == context.modulus && lineLength == 0) {
>> return; // no leftovers to process and not using chunking
>> }
>> - ensureBufferSize(encodeSize);
>> - int savedPos = pos;
>> - switch (modulus) { // 0-2
>> + ensureBufferSize(encodeSize, context);
>> + int savedPos = context.pos;
>> + switch (context.modulus) { // 0-2
>> case 1 : // 8 bits = 6 + 2
>> - buffer[pos++] = encodeTable[(bitWorkArea >> 2) & MASK_6BITS]; // top 6 bits
>> - buffer[pos++] = encodeTable[(bitWorkArea << 4) & MASK_6BITS]; // remaining 2
>> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 2) & MASK_6BITS]; // top 6 bits
>> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea << 4) & MASK_6BITS]; // remaining 2
>> // URL-SAFE skips the padding to further reduce size.
>> if (encodeTable == STANDARD_ENCODE_TABLE) {
>> - buffer[pos++] = PAD;
>> - buffer[pos++] = PAD;
>> + context.buffer[context.pos++] = PAD;
>> + context.buffer[context.pos++] = PAD;
>> }
>> break;
>>
>> case 2 : // 16 bits = 6 + 6 + 4
>> - buffer[pos++] = encodeTable[(bitWorkArea >> 10) & MASK_6BITS];
>> - buffer[pos++] = encodeTable[(bitWorkArea >> 4) & MASK_6BITS];
>> - buffer[pos++] = encodeTable[(bitWorkArea << 2) & MASK_6BITS];
>> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 10) & MASK_6BITS];
>> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 4) & MASK_6BITS];
>> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea << 2) & MASK_6BITS];
>> // URL-SAFE skips the padding to further reduce size.
>> if (encodeTable == STANDARD_ENCODE_TABLE) {
>> - buffer[pos++] = PAD;
>> + context.buffer[context.pos++] = PAD;
>> }
>> break;
>> }
>> - currentLinePos += pos - savedPos; // keep track of current line position
>> + context.currentLinePos += context.pos - savedPos; // keep track of current line position
>> // if currentPos == 0 we are at the start of a line, so don't add CRLF
>> - if (lineLength > 0 && currentLinePos > 0) {
>> - System.arraycopy(lineSeparator, 0, buffer, pos, lineSeparator.length);
>> - pos += lineSeparator.length;
>> + if (lineLength > 0 && context.currentLinePos > 0) {
>> + System.arraycopy(lineSeparator, 0, context.buffer, context.pos, lineSeparator.length);
>> + context.pos += lineSeparator.length;
>> }
>> } else {
>> for (int i = 0; i < inAvail; i++) {
>> - ensureBufferSize(encodeSize);
>> - modulus = (modulus+1) % BYTES_PER_UNENCODED_BLOCK;
>> + ensureBufferSize(encodeSize, context);
>> + context.modulus = (context.modulus+1) % BYTES_PER_UNENCODED_BLOCK;
>> int b = in[inPos++];
>> if (b < 0) {
>> b += 256;
>> }
>> - bitWorkArea = (bitWorkArea << 8) + b; // BITS_PER_BYTE
>> - if (0 == modulus) { // 3 bytes = 24 bits = 4 * 6 bits to extract
>> - buffer[pos++] = encodeTable[(bitWorkArea >> 18) & MASK_6BITS];
>> - buffer[pos++] = encodeTable[(bitWorkArea >> 12) & MASK_6BITS];
>> - buffer[pos++] = encodeTable[(bitWorkArea >> 6) & MASK_6BITS];
>> - buffer[pos++] = encodeTable[bitWorkArea & MASK_6BITS];
>> - currentLinePos += BYTES_PER_ENCODED_BLOCK;
>> - if (lineLength > 0 && lineLength <= currentLinePos) {
>> - System.arraycopy(lineSeparator, 0, buffer, pos, lineSeparator.length);
>> - pos += lineSeparator.length;
>> - currentLinePos = 0;
>> + context.ibitWorkArea = (context.ibitWorkArea << 8) + b; // BITS_PER_BYTE
>> + if (0 == context.modulus) { // 3 bytes = 24 bits = 4 * 6 bits to extract
>> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 18) & MASK_6BITS];
>> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 12) & MASK_6BITS];
>> + context.buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 6) & MASK_6BITS];
>> + context.buffer[context.pos++] = encodeTable[context.ibitWorkArea & MASK_6BITS];
>> + context.currentLinePos += BYTES_PER_ENCODED_BLOCK;
>> + if (lineLength > 0 && lineLength <= context.currentLinePos) {
>> + System.arraycopy(lineSeparator, 0, context.buffer, context.pos, lineSeparator.length);
>> + context.pos += lineSeparator.length;
>> + context.currentLinePos = 0;
>> }
>> }
>> }
>> @@ -411,32 +405,33 @@ public class Base64 extends BaseNCodec {
>> * Position to start reading data from.
>> * @param inAvail
>> * Amount of bytes available from input for encoding.
>> + * @param context the context to be used
>> */
>> @Override
>> - void decode(byte[] in, int inPos, int inAvail) {
>> - if (eof) {
>> + void decode(byte[] in, int inPos, int inAvail, Context context) {
>> + if (context.eof) {
>> return;
>> }
>> if (inAvail < 0) {
>> - eof = true;
>> + context.eof = true;
>> }
>> for (int i = 0; i < inAvail; i++) {
>> - ensureBufferSize(decodeSize);
>> + ensureBufferSize(decodeSize, context);
>> byte b = in[inPos++];
>> if (b == PAD) {
>> // We're done.
>> - eof = true;
>> + context.eof = true;
>> break;
>> } else {
>> if (b >= 0 && b < DECODE_TABLE.length) {
>> int result = DECODE_TABLE[b];
>> if (result >= 0) {
>> - modulus = (modulus+1) % BYTES_PER_ENCODED_BLOCK;
>> - bitWorkArea = (bitWorkArea << BITS_PER_ENCODED_BYTE) + result;
>> - if (modulus == 0) {
>> - buffer[pos++] = (byte) ((bitWorkArea >> 16) & MASK_8BITS);
>> - buffer[pos++] = (byte) ((bitWorkArea >> 8) & MASK_8BITS);
>> - buffer[pos++] = (byte) (bitWorkArea & MASK_8BITS);
>> + context.modulus = (context.modulus+1) % BYTES_PER_ENCODED_BLOCK;
>> + context.ibitWorkArea = (context.ibitWorkArea << BITS_PER_ENCODED_BYTE) + result;
>> + if (context.modulus == 0) {
>> + context.buffer[context.pos++] = (byte) ((context.ibitWorkArea >> 16) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.ibitWorkArea >> 8) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) (context.ibitWorkArea & MASK_8BITS);
>> }
>> }
>> }
>> @@ -446,22 +441,22 @@ public class Base64 extends BaseNCodec {
>> // Two forms of EOF as far as base64 decoder is concerned: actual
>> // EOF (-1) and first time '=' character is encountered in stream.
>> // This approach makes the '=' padding characters completely optional.
>> - if (eof && modulus != 0) {
>> - ensureBufferSize(decodeSize);
>> + if (context.eof && context.modulus != 0) {
>> + ensureBufferSize(decodeSize, context);
>>
>> // We have some spare bits remaining
>> // Output all whole multiples of 8 bits and ignore the rest
>> - switch (modulus) {
>> + switch (context.modulus) {
>> // case 1: // 6 bits - ignore entirely
>> // break;
>> case 2 : // 12 bits = 8 + 4
>> - bitWorkArea = bitWorkArea >> 4; // dump the extra 4 bits
>> - buffer[pos++] = (byte) ((bitWorkArea) & MASK_8BITS);
>> + context.ibitWorkArea = context.ibitWorkArea >> 4; // dump the extra 4 bits
>> + context.buffer[context.pos++] = (byte) ((context.ibitWorkArea) & MASK_8BITS);
>> break;
>> case 3 : // 18 bits = 8 + 8 + 2
>> - bitWorkArea = bitWorkArea >> 2; // dump 2 bits
>> - buffer[pos++] = (byte) ((bitWorkArea >> 8) & MASK_8BITS);
>> - buffer[pos++] = (byte) ((bitWorkArea) & MASK_8BITS);
>> + context.ibitWorkArea = context.ibitWorkArea >> 2; // dump 2 bits
>> + context.buffer[context.pos++] = (byte) ((context.ibitWorkArea >> 8) & MASK_8BITS);
>> + context.buffer[context.pos++] = (byte) ((context.ibitWorkArea) & MASK_8BITS);
>> break;
>> }
>> }
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java Sun Apr 1 16:56:10 2012
>> @@ -36,7 +36,6 @@ import java.io.InputStream;
>> * character encodings which are compatible with the lower 127 ASCII chart (ISO-8859-1, Windows-1252, UTF-8, etc).
>> * </p>
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>
>> * @since 1.4
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java Sun Apr 1 16:56:10 2012
>> @@ -36,7 +36,6 @@ import java.io.OutputStream;
>> * character encodings which are compatible with the lower 127 ASCII chart (ISO-8859-1, Windows-1252, UTF-8, etc).
>> * </p>
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>
>> * @since 1.4
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodec.java Sun Apr 1 16:56:10 2012
>> @@ -26,13 +26,70 @@ import org.apache.commons.codec.EncoderE
>> * Abstract superclass for Base-N encoders and decoders.
>> *
>> * <p>
>> - * This class is not thread-safe.
>> - * Each thread should use its own instance.
>> + * This class is thread-safe.
>> * </p>
>> */
>> public abstract class BaseNCodec implements BinaryEncoder, BinaryDecoder {
>>
>> /**
>> + * Holds thread context so classes can be thread-safe.
>> + *
>> + * This class is not itself thread-safe; each thread must allocate its own copy.
>> + *
>> + * @since 1.7
>> + */
>> + static class Context {
>> +
>> + /**
>> + * Place holder for the bytes we're dealing with for our based logic.
>> + * Bitwise operations store and extract the encoding or decoding from this variable.
>> + */
>> + int ibitWorkArea;
>> +
>> + /**
>> + * Place holder for the bytes we're dealing with for our based logic.
>> + * Bitwise operations store and extract the encoding or decoding from this variable.
>> + */
>> + long lbitWorkArea;
>> +
>> + /**
>> + * Buffer for streaming.
>> + */
>> + byte[] buffer;
>> +
>> + /**
>> + * Position where next character should be written in the buffer.
>> + */
>> + int pos;
>> +
>> + /**
>> + * Position where next character should be read from the buffer.
>> + */
>> + int readPos;
>> +
>> + /**
>> + * Boolean flag to indicate the EOF has been reached. Once EOF has been reached, this object becomes useless,
>> + * and must be thrown away.
>> + */
>> + boolean eof;
>> +
>> + /**
>> + * Variable tracks how many characters have been written to the current line. Only used when encoding. We use it to
>> + * make sure each encoded line never goes beyond lineLength (if lineLength > 0).
>> + */
>> + int currentLinePos;
>> +
>> + /**
>> + * Writes to the buffer only occur after every 3/5 reads when encoding, and every 4/8 reads when decoding.
>> + * This variable helps track that.
>> + */
>> + int modulus;
>> +
>> + Context() {
>> + }
>> + }
>> +
>> + /**
>> * EOF
>> *
>> * @since 1.7
>> @@ -100,39 +157,6 @@ public abstract class BaseNCodec impleme
>> private final int chunkSeparatorLength;
>>
>> /**
>> - * Buffer for streaming.
>> - */
>> - protected byte[] buffer;
>> -
>> - /**
>> - * Position where next character should be written in the buffer.
>> - */
>> - protected int pos;
>> -
>> - /**
>> - * Position where next character should be read from the buffer.
>> - */
>> - private int readPos;
>> -
>> - /**
>> - * Boolean flag to indicate the EOF has been reached. Once EOF has been reached, this object becomes useless,
>> - * and must be thrown away.
>> - */
>> - protected boolean eof;
>> -
>> - /**
>> - * Variable tracks how many characters have been written to the current line. Only used when encoding. We use it to
>> - * make sure each encoded line never goes beyond lineLength (if lineLength > 0).
>> - */
>> - protected int currentLinePos;
>> -
>> - /**
>> - * Writes to the buffer only occur after every 3/5 reads when encoding, and every 4/8 reads when decoding.
>> - * This variable helps track that.
>> - */
>> - protected int modulus;
>> -
>> - /**
>> * Note <code>lineLength</code> is rounded down to the nearest multiple of {@link #encodedBlockSize}
>> * If <code>chunkSeparatorLength</code> is zero, then chunking is disabled.
>> * @param unencodedBlockSize the size of an unencoded block (e.g. Base64 = 3)
>> @@ -150,19 +174,21 @@ public abstract class BaseNCodec impleme
>> /**
>> * Returns true if this object has buffered data for reading.
>> *
>> + * @param context the context to be used
>> * @return true if there is data still available for reading.
>> */
>> - boolean hasData() { // package protected for access from I/O streams
>> - return this.buffer != null;
>> + boolean hasData(Context context) { // package protected for access from I/O streams
>> + return context.buffer != null;
>> }
>>
>> /**
>> * Returns the amount of buffered data available for reading.
>> *
>> + * @param context the context to be used
>> * @return The amount of buffered data available for reading.
>> */
>> - int available() { // package protected for access from I/O streams
>> - return buffer != null ? pos - readPos : 0;
>> + int available(Context context) { // package protected for access from I/O streams
>> + return context.buffer != null ? context.pos - context.readPos : 0;
>> }
>>
>> /**
>> @@ -174,16 +200,19 @@ public abstract class BaseNCodec impleme
>> return DEFAULT_BUFFER_SIZE;
>> }
>>
>> - /** Increases our buffer by the {@link #DEFAULT_BUFFER_RESIZE_FACTOR}. */
>> - private void resizeBuffer() {
>> - if (buffer == null) {
>> - buffer = new byte[getDefaultBufferSize()];
>> - pos = 0;
>> - readPos = 0;
>> + /**
>> + * Increases our buffer by the {@link #DEFAULT_BUFFER_RESIZE_FACTOR}.
>> + * @param context the context to be used
>> + */
>> + private void resizeBuffer(Context context) {
>> + if (context.buffer == null) {
>> + context.buffer = new byte[getDefaultBufferSize()];
>> + context.pos = 0;
>> + context.readPos = 0;
>> } else {
>> - byte[] b = new byte[buffer.length * DEFAULT_BUFFER_RESIZE_FACTOR];
>> - System.arraycopy(buffer, 0, b, 0, buffer.length);
>> - buffer = b;
>> + byte[] b = new byte[context.buffer.length * DEFAULT_BUFFER_RESIZE_FACTOR];
>> + System.arraycopy(context.buffer, 0, b, 0, context.buffer.length);
>> + context.buffer = b;
>> }
>> }
>>
>> @@ -191,10 +220,11 @@ public abstract class BaseNCodec impleme
>> * Ensure that the buffer has room for <code>size</code> bytes
>> *
>> * @param size minimum spare space required
>> + * @param context the context to be used
>> */
>> - protected void ensureBufferSize(int size){
>> - if ((buffer == null) || (buffer.length < pos + size)){
>> - resizeBuffer();
>> + protected void ensureBufferSize(int size, Context context){
>> + if ((context.buffer == null) || (context.buffer.length < context.pos + size)){
>> + resizeBuffer(context);
>> }
>> }
>>
>> @@ -208,19 +238,20 @@ public abstract class BaseNCodec impleme
>> * position in byte[] array to start extraction at.
>> * @param bAvail
>> * amount of bytes we're allowed to extract. We may extract fewer (if fewer are available).
>> + * @param context the context to be used
>> * @return The number of bytes successfully extracted into the provided byte[] array.
>> */
>> - int readResults(byte[] b, int bPos, int bAvail) { // package protected for access from I/O streams
>> - if (buffer != null) {
>> - int len = Math.min(available(), bAvail);
>> - System.arraycopy(buffer, readPos, b, bPos, len);
>> - readPos += len;
>> - if (readPos >= pos) {
>> - buffer = null; // so hasData() will return false, and this method can return -1
>> + int readResults(byte[] b, int bPos, int bAvail, Context context) { // package protected for access from I/O streams
>> + if (context.buffer != null) {
>> + int len = Math.min(available(context), bAvail);
>> + System.arraycopy(context.buffer, context.readPos, b, bPos, len);
>> + context.readPos += len;
>> + if (context.readPos >= context.pos) {
>> + context.buffer = null; // so hasData() will return false, and this method can return -1
>> }
>> return len;
>> }
>> - return eof ? EOF : 0;
>> + return context.eof ? EOF : 0;
>> }
>>
>> /**
>> @@ -243,18 +274,6 @@ public abstract class BaseNCodec impleme
>> }
>>
>> /**
>> - * Resets this object to its initial newly constructed state.
>> - */
>> - private void reset() {
>> - buffer = null;
>> - pos = 0;
>> - readPos = 0;
>> - currentLinePos = 0;
>> - modulus = 0;
>> - eof = false;
>> - }
>> -
>> - /**
>> * Encodes an Object using the Base-N algorithm. This method is provided in order to satisfy the requirements of the
>> * Encoder interface, and will throw an EncoderException if the supplied object is not of type byte[].
>> *
>> @@ -321,14 +340,14 @@ public abstract class BaseNCodec impleme
>> * @return a byte array containing binary data
>> */
>> public byte[] decode(byte[] pArray) {
>> - reset();
>> + Context context = new Context();
>> if (pArray == null || pArray.length == 0) {
>> return pArray;
>> }
>> - decode(pArray, 0, pArray.length);
>> - decode(pArray, 0, EOF); // Notify decoder of EOF.
>> - byte[] result = new byte[pos];
>> - readResults(result, 0, result.length);
>> + decode(pArray, 0, pArray.length, context);
>> + decode(pArray, 0, EOF, context); // Notify decoder of EOF.
>> + byte[] result = new byte[context.pos];
>> + readResults(result, 0, result.length, context);
>> return result;
>> }
>>
>> @@ -340,14 +359,14 @@ public abstract class BaseNCodec impleme
>> * @return A byte array containing only the basen alphabetic character data
>> */
>> public byte[] encode(byte[] pArray) {
>> - reset();
>> + Context context = new Context();
>> if (pArray == null || pArray.length == 0) {
>> return pArray;
>> }
>> - encode(pArray, 0, pArray.length);
>> - encode(pArray, 0, EOF); // Notify encoder of EOF.
>> - byte[] buf = new byte[pos - readPos];
>> - readResults(buf, 0, buf.length);
>> + encode(pArray, 0, pArray.length, context);
>> + encode(pArray, 0, EOF, context); // Notify encoder of EOF.
>> + byte[] buf = new byte[context.pos - context.readPos];
>> + readResults(buf, 0, buf.length, context);
>> return buf;
>> }
>>
>> @@ -362,9 +381,9 @@ public abstract class BaseNCodec impleme
>> return StringUtils.newStringUtf8(encode(pArray));
>> }
>>
>> - abstract void encode(byte[] pArray, int i, int length); // package protected for access from I/O streams
>> + abstract void encode(byte[] pArray, int i, int length, Context context); // package protected for access from I/O streams
>>
>> - abstract void decode(byte[] pArray, int i, int length); // package protected for access from I/O streams
>> + abstract void decode(byte[] pArray, int i, int length, Context context); // package protected for access from I/O streams
>>
>> /**
>> * Returns whether or not the <code>octet</code> is in the current alphabet.
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java Sun Apr 1 16:56:10 2012
>> @@ -23,6 +23,8 @@ import java.io.FilterInputStream;
>> import java.io.IOException;
>> import java.io.InputStream;
>>
>> +import org.apache.commons.codec.binary.BaseNCodec.Context;
>> +
>> /**
>> * Abstract superclass for Base-N input streams.
>> *
>> @@ -36,6 +38,8 @@ public class BaseNCodecInputStream exten
>>
>> private final byte[] singleByte = new byte[1];
>>
>> + private Context context = new Context();
>> +
>> protected BaseNCodecInputStream(InputStream in, BaseNCodec baseNCodec, boolean doEncode) {
>> super(in);
>> this.doEncode = doEncode;
>> @@ -55,8 +59,7 @@ public class BaseNCodecInputStream exten
>> // data available. As we do not know for sure how much data is left,
>> // just return 1 as a safe guess.
>>
>> - // use the EOF flag of the underlying codec instance
>> - return baseNCodec.eof ? 0 : 1;
>> + return context.eof ? 0 : 1;
>> }
>>
>> /**
>> @@ -136,16 +139,16 @@ public class BaseNCodecInputStream exten
>> This is a fix for CODEC-101
>> */
>> while (readLen == 0) {
>> - if (!baseNCodec.hasData()) {
>> + if (!baseNCodec.hasData(context)) {
>> byte[] buf = new byte[doEncode ? 4096 : 8192];
>> int c = in.read(buf);
>> if (doEncode) {
>> - baseNCodec.encode(buf, 0, c);
>> + baseNCodec.encode(buf, 0, c, context);
>> } else {
>> - baseNCodec.decode(buf, 0, c);
>> + baseNCodec.decode(buf, 0, c, context);
>> }
>> }
>> - readLen = baseNCodec.readResults(b, offset, len);
>> + readLen = baseNCodec.readResults(b, offset, len, context);
>> }
>> return readLen;
>> }
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecOutputStream.java Sun Apr 1 16:56:10 2012
>> @@ -23,6 +23,8 @@ import java.io.FilterOutputStream;
>> import java.io.IOException;
>> import java.io.OutputStream;
>>
>> +import org.apache.commons.codec.binary.BaseNCodec.Context;
>> +
>> /**
>> * Abstract superclass for Base-N output streams.
>> *
>> @@ -36,6 +38,9 @@ public class BaseNCodecOutputStream exte
>>
>> private final byte[] singleByte = new byte[1];
>>
>> + private Context context = new Context();
>> +
>> + // TODO should this be protected?
>> public BaseNCodecOutputStream(OutputStream out, BaseNCodec basedCodec, boolean doEncode) {
>> super(out);
>> this.baseNCodec = basedCodec;
>> @@ -84,9 +89,9 @@ public class BaseNCodecOutputStream exte
>> throw new IndexOutOfBoundsException();
>> } else if (len > 0) {
>> if (doEncode) {
>> - baseNCodec.encode(b, offset, len);
>> + baseNCodec.encode(b, offset, len, context);
>> } else {
>> - baseNCodec.decode(b, offset, len);
>> + baseNCodec.decode(b, offset, len, context);
>> }
>> flush(false);
>> }
>> @@ -102,10 +107,10 @@ public class BaseNCodecOutputStream exte
>> * if an I/O error occurs.
>> */
>> private void flush(boolean propogate) throws IOException {
>> - int avail = baseNCodec.available();
>> + int avail = baseNCodec.available(context);
>> if (avail > 0) {
>> byte[] buf = new byte[avail];
>> - int c = baseNCodec.readResults(buf, 0, avail);
>> + int c = baseNCodec.readResults(buf, 0, avail, context);
>> if (c > 0) {
>> out.write(buf, 0, c);
>> }
>> @@ -136,9 +141,9 @@ public class BaseNCodecOutputStream exte
>> public void close() throws IOException {
>> // Notify encoder of EOF (-1).
>> if (doEncode) {
>> - baseNCodec.encode(singleByte, 0, EOF);
>> + baseNCodec.encode(singleByte, 0, EOF, context);
>> } else {
>> - baseNCodec.decode(singleByte, 0, EOF);
>> + baseNCodec.decode(singleByte, 0, EOF, context);
>> }
>> flush();
>> out.close();
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BinaryCodec.java Sun Apr 1 16:56:10 2012
>> @@ -28,7 +28,6 @@ import org.apache.commons.codec.EncoderE
>> * TODO: may want to add more bit vector functions like and/or/xor/nand
>> * TODO: also might be good to generate boolean[] from byte[] et cetera.
>> *
>> - * @author Apache Software Foundation
>> * @since 1.3
>> * @version $Id$
>> */
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/Hex.java Sun Apr 1 16:56:10 2012
>> @@ -32,7 +32,6 @@ import org.apache.commons.codec.EncoderE
>> * {@link #DEFAULT_CHARSET_NAME}
>> *
>> * @since 1.1
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public class Hex implements BinaryEncoder, BinaryDecoder {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java Sun Apr 1 16:56:10 2012
>> @@ -29,7 +29,6 @@ import org.apache.commons.codec.Charsets
>> *
>> * @see CharEncoding
>> * @see <a href="http://download.oracle.com/javase/6/docs/api/java/nio/charset/Charset.html">Standard charsets</a>
>> - * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
>> * @version $Id$
>> * @since 1.4
>> */
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java Sun Apr 1 16:56:10 2012
>> @@ -28,7 +28,6 @@ import org.apache.commons.codec.binary.S
>> /**
>> * Operations to simplify common {@link java.security.MessageDigest} tasks. This class is thread safe.
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public class DigestUtils {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/AbstractCaverphone.java Sun Apr 1 16:56:10 2012
>> @@ -26,7 +26,6 @@ import org.apache.commons.codec.StringEn
>> * This is an algorithm created by the Caversham Project at the University of Otago. It implements the Caverphone 2.0
>> * algorithm:
>> *
>> - * @author Apache Software Foundation
>> * @version $Id: Caverphone.java 1075947 2011-03-01 17:56:14Z ggregory $
>> * @see <a href="http://en.wikipedia.org/wiki/Caverphone">Wikipedia - Caverphone</a>
>> * @since 1.5
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone.java Sun Apr 1 16:56:10 2012
>> @@ -26,7 +26,6 @@ import org.apache.commons.codec.StringEn
>> * This is an algorithm created by the Caversham Project at the University of Otago. It implements the Caverphone 2.0
>> * algorithm:
>> *
>> - * @author Apache Software Foundation
>> * @version $Id: Caverphone.java 1079535 2011-03-08 20:54:37Z ggregory $
>> * @see <a href="http://en.wikipedia.org/wiki/Caverphone">Wikipedia - Caverphone</a>
>> * @see <a href="http://caversham.otago.ac.nz/files/working/ctp150804.pdf">Caverphone 2.0 specification</a>
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone1.java Sun Apr 1 16:56:10 2012
>> @@ -23,7 +23,6 @@ package org.apache.commons.codec.languag
>> * This is an algorithm created by the Caversham Project at the University of Otago. It implements the Caverphone 1.0
>> * algorithm:
>> *
>> - * @author Apache Software Foundation
>> * @version $Id: Caverphone.java 1075947 2011-03-01 17:56:14Z ggregory $
>> * @see <a href="http://en.wikipedia.org/wiki/Caverphone">Wikipedia - Caverphone</a>
>> * @see <a href="http://caversham.otago.ac.nz/files/working/ctp060902.pdf">Caverphone 1.0 specification</a>
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Caverphone2.java Sun Apr 1 16:56:10 2012
>> @@ -23,7 +23,6 @@ package org.apache.commons.codec.languag
>> * This is an algorithm created by the Caversham Project at the University of Otago. It implements the Caverphone 2.0
>> * algorithm:
>> *
>> - * @author Apache Software Foundation
>> * @version $Id: Caverphone.java 1075947 2011-03-01 17:56:14Z ggregory $
>> * @see <a href="http://en.wikipedia.org/wiki/Caverphone">Wikipedia - Caverphone</a>
>> * @see <a href="http://caversham.otago.ac.nz/files/working/ctp150804.pdf">Caverphone 2.0 specification</a>
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java Sun Apr 1 16:56:10 2012
>> @@ -177,7 +177,6 @@ import org.apache.commons.codec.StringEn
>> * </ul>
>> *
>> * @see <a href="http://de.wikipedia.org/wiki/K%C3%B6lner_Phonetik">Wikipedia (de): Kölner Phonetik (in German)</a>
>> - * @author Apache Software Foundation
>> * @since 1.5
>> */
>> public class ColognePhonetic implements StringEncoder {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java Sun Apr 1 16:56:10 2012
>> @@ -27,7 +27,6 @@ import org.apache.commons.codec.StringEn
>> * @see <a href="http://drdobbs.com/184401251?pgno=2">Original Article</a>
>> * @see <a href="http://en.wikipedia.org/wiki/Metaphone">http://en.wikipedia.org/wiki/Metaphone</a>
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public class DoubleMetaphone implements StringEncoder {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Metaphone.java Sun Apr 1 16:56:10 2012
>> @@ -37,7 +37,6 @@ import org.apache.commons.codec.StringEn
>> * For more information, see <a href="https://issues.apache.org/jira/browse/CODEC-57">CODEC-57</a>.
>> * </p>
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public class Metaphone implements StringEncoder {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/RefinedSoundex.java Sun Apr 1 16:56:10 2012
>> @@ -25,7 +25,6 @@ import org.apache.commons.codec.StringEn
>> * optimized for spell checking words. Soundex method originally developed by
>> * <CITE>Margaret Odell</CITE> and <CITE>Robert Russell</CITE>.
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public class RefinedSoundex implements StringEncoder {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/Soundex.java Sun Apr 1 16:56:10 2012
>> @@ -24,7 +24,6 @@ import org.apache.commons.codec.StringEn
>> * Encodes a string into a Soundex value. Soundex is an encoding used to relate similar names, but can also be used as a
>> * general purpose scheme to find word with similar phonemes.
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> */
>> public class Soundex implements StringEncoder {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/SoundexUtils.java Sun Apr 1 16:56:10 2012
>> @@ -23,7 +23,6 @@ import org.apache.commons.codec.StringEn
>> /**
>> * Utility methods for {@link Soundex} and {@link RefinedSoundex} classes.
>> *
>> - * @author Apache Software Foundation
>> * @version $Id$
>> * @since 1.3
>> */
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java Sun Apr 1 16:56:10 2012
>> @@ -74,7 +74,6 @@ import org.apache.commons.codec.StringEn
>> * splitting on pipe (<code>|</code>) and indexing under each of these alternatives.
>> * </p>
>> *
>> - * @author Apache Software Foundation
>> * @since 1.6
>> */
>> public class BeiderMorseEncoder implements StringEncoder {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java Sun Apr 1 16:56:10 2012
>> @@ -67,7 +67,6 @@ import java.util.regex.Pattern;
>> * <p/>
>> * Port of lang.php
>> *
>> - * @author Apache Software Foundation
>> * @since 1.6
>> */
>> public class Lang {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Languages.java Sun Apr 1 16:56:10 2012
>> @@ -49,7 +49,6 @@ import java.util.Set;
>> * Ported from language.php
>> * </p>
>> *
>> - * @author Apache Software Foundation
>> * @since 1.6
>> */
>> public class Languages {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/NameType.java Sun Apr 1 16:56:10 2012
>> @@ -22,7 +22,6 @@ package org.apache.commons.codec.languag
>> * <code>GENERIC</code> NameType should work reasonably well for non-name words. The other encodings are specifically
>> * tuned to family names, and may not work well at all for general text.
>> *
>> - * @author Apache Software Foundation
>> * @since 1.6
>> */
>> public enum NameType {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/PhoneticEngine.java Sun Apr 1 16:56:10 2012
>> @@ -47,7 +47,6 @@ import java.util.TreeSet;
>> * Ported from phoneticengine.php
>> * </p>
>> *
>> - * @author Apache Software Foundation
>> * @since 1.6
>> */
>> public class PhoneticEngine {
>> @@ -56,7 +55,6 @@ public class PhoneticEngine {
>> * Utility for manipulating a set of phonemes as they are being built up. Not intended for use outside this package,
>> * and probably not outside the {@link PhoneticEngine} class.
>> *
>> - * @author Apache Software Foundation
>> * @since 1.6
>> */
>> static final class PhonemeBuilder {
>> @@ -165,7 +163,6 @@ public class PhoneticEngine {
>> * matching rule was found, <code>phonemeBuilder</code> is replaced with a new buidler containing the phonemes
>> * updated by the matching rule.
>> *
>> - * @author Apache Software Foundation
>> * @since 1.6
>> */
>> private static final class RulesApplication {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/ResourceConstants.java Sun Apr 1 16:56:10 2012
>> @@ -22,7 +22,6 @@ import org.apache.commons.codec.CharEnco
>> /**
>> * Constants used to process resource files.
>> *
>> - * @author Apache Software Foundation
>> * @since 1.6
>> */
>> class ResourceConstants {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java Sun Apr 1 16:56:10 2012
>> @@ -76,7 +76,6 @@ import java.util.regex.Pattern;
>> * </ul>
>> * </p>
>> *
>> - * @author Apache Software Foundation
>> * @since 1.6
>> */
>> public class Rule {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/RuleType.java Sun Apr 1 16:56:10 2012
>> @@ -20,7 +20,6 @@ package org.apache.commons.codec.languag
>> /**
>> * Types of rule.
>> *
>> - * @author Apache Software Foundation
>> * @since 1.6
>> */
>> public enum RuleType {
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/BCodec.java Sun Apr 1 16:56:10 2012
>> @@ -43,7 +43,6 @@ import org.apache.commons.codec.binary.B
>> * @see <a href="http://www.ietf.org/rfc/rfc1522.txt">MIME (Multipurpose Internet Mail Extensions) Part Two: Message
>> * Header Extensions for Non-ASCII Text</a>
>> *
>> - * @author Apache Software Foundation
>> * @since 1.3
>> * @version $Id$
>> */
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QCodec.java Sun Apr 1 16:56:10 2012
>> @@ -44,7 +44,6 @@ import org.apache.commons.codec.StringEn
>> * @see <a href="http://www.ietf.org/rfc/rfc1522.txt">MIME (Multipurpose Internet Mail Extensions) Part Two: Message
>> * Header Extensions for Non-ASCII Text</a>
>> *
>> - * @author Apache Software Foundation
>> * @since 1.3
>> * @version $Id$
>> */
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java Sun Apr 1 16:56:10 2012
>> @@ -58,7 +58,6 @@ import org.apache.commons.codec.binary.S
>> * @see <a href="http://www.ietf.org/rfc/rfc1521.txt"> RFC 1521 MIME (Multipurpose Internet Mail Extensions) Part One:
>> * Mechanisms for Specifying and Describing the Format of Internet Message Bodies </a>
>> *
>> - * @author Apache Software Foundation
>> * @since 1.3
>> * @version $Id$
>> */
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/RFC1522Codec.java Sun Apr 1 16:56:10 2012
>> @@ -41,7 +41,6 @@ import org.apache.commons.codec.binary.S
>> * Message Header Extensions for Non-ASCII Text</a>
>> * </p>
>> *
>> - * @author Apache Software Foundation
>> * @since 1.3
>> * @version $Id$
>> */
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/URLCodec.java Sun Apr 1 16:56:10 2012
>> @@ -46,7 +46,6 @@ import org.apache.commons.codec.binary.S
>> * 1.4 rely on the platform's default charset encoding.
>> * </p>
>> *
>> - * @author Apache Software Foundation
>> * @since 1.2
>> * @version $Id$
>> */
>>
>> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java (original)
>> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/Utils.java Sun Apr 1 16:56:10 2012
>> @@ -22,7 +22,6 @@ import org.apache.commons.codec.DecoderE
>> /**
>> * Utility methods for this package.
>> *
>> - * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
>> * @version $Id$
>> * @since 1.4
>> */
>>
>> Modified: commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java
>> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java?rev=1308156&r1=1308155&r2=1308156&view=diff
>> ==============================================================================
>> --- commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java (original)
>> +++ commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/binary/Base32Test.java Sun Apr 1 16:56:10 2012
>> @@ -87,15 +87,16 @@ public class Base32Test {
>> public void testSingleCharEncoding() {
>> for (int i = 0; i < 20; i++) {
>> Base32 codec = new Base32();
>> + BaseNCodec.Context context = new BaseNCodec.Context();
>> byte unencoded[] = new byte[i];
>> byte allInOne[] = codec.encode(unencoded);
>> codec = new Base32();
>> for (int j=0; j< unencoded.length; j++) {
>> - codec.encode(unencoded, j, 1);
>> + codec.encode(unencoded, j, 1, context);
>> }
>> - codec.encode(unencoded, 0, -1);
>> + codec.encode(unencoded, 0, -1, context);
>> byte singly[] = new byte[allInOne.length];
>> - codec.readResults(singly, 0, 100);
>> + codec.readResults(singly, 0, 100, context);
>> if (!Arrays.equals(allInOne, singly)){
>> fail();
>> }
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org