You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2012/03/28 17:43:55 UTC

svn commit: r1306437 - in /commons/proper/codec/trunk/src: main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java test/java/org/apache/commons/codec/net/QuotedPrintableCodecTest.java

Author: ggregory
Date: Wed Mar 28 15:43:55 2012
New Revision: 1306437

URL: http://svn.apache.org/viewvc?rev=1306437&view=rev
Log: (empty)

Modified:
    commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java
    commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/net/QuotedPrintableCodecTest.java

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=1306437&r1=1306436&r2=1306437&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 Wed Mar 28 15:43:55 2012
@@ -19,11 +19,14 @@ package org.apache.commons.codec.net;
 
 import java.io.ByteArrayOutputStream;
 import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
+import java.nio.charset.UnsupportedCharsetException;
 import java.util.BitSet;
 
 import org.apache.commons.codec.BinaryDecoder;
 import org.apache.commons.codec.BinaryEncoder;
 import org.apache.commons.codec.CharEncoding;
+import org.apache.commons.codec.Charsets;
 import org.apache.commons.codec.DecoderException;
 import org.apache.commons.codec.EncoderException;
 import org.apache.commons.codec.StringDecoder;
@@ -64,7 +67,7 @@ public class QuotedPrintableCodec implem
     /**
      * The default charset used for string decoding and encoding.
      */
-    private final String charset;
+    private final Charset charset;
 
     /**
      * BitSet of printable characters as defined in RFC 1521.
@@ -93,7 +96,7 @@ public class QuotedPrintableCodec implem
      * Default constructor.
      */
     public QuotedPrintableCodec() {
-        this(CharEncoding.UTF_8);
+        this(Charsets.UTF_8);
     }
 
     /**
@@ -101,13 +104,28 @@ public class QuotedPrintableCodec implem
      * 
      * @param charset
      *                  the default string charset to use.
+     * @throws UnsupportedCharsetException
+     *             If the named charset is unavailable
+     * @since 1.7 throws UnsupportedCharsetException if the named charset is unavailable
      */
-    public QuotedPrintableCodec(String charset) {
-        super();
+    public QuotedPrintableCodec(Charset charset) {
         this.charset = charset;
     }
 
     /**
+     * Constructor which allows for the selection of a default charset
+     * 
+     * @param charsetName
+     *            the default string charset to use.
+     * @throws UnsupportedCharsetException
+     *             If the named charset is unavailable
+     * @since 1.7 throws UnsupportedCharsetException if the named charset is unavailable
+     */
+    public QuotedPrintableCodec(String charsetName) {
+        this(Charset.forName(charsetName));
+    }
+
+    /**
      * Encodes byte into its quoted-printable representation.
      * 
      * @param b
@@ -246,17 +264,29 @@ public class QuotedPrintableCodec implem
      * @throws EncoderException
      *                  Thrown if quoted-printable encoding is unsuccessful
      * 
-     * @see #getDefaultCharset()
+     * @see #getCharset()
      */
     public String encode(String pString) throws EncoderException {
+        return this.encode(pString, getCharset());
+    }
+
+    /**
+     * Decodes a quoted-printable string into its original form using the specified string charset. Escaped characters
+     * are converted back to their original representation.
+     * 
+     * @param pString
+     *                  quoted-printable string to convert into its original form
+     * @param charset
+     *                  the original string charset
+     * @return original string
+     * @throws DecoderException
+     *                  Thrown if quoted-printable decoding is unsuccessful
+     */
+    public String decode(String pString, Charset charset) throws DecoderException {
         if (pString == null) {
             return null;
         }
-        try {
-            return encode(pString, getDefaultCharset());
-        } catch (UnsupportedEncodingException e) {
-            throw new EncoderException(e.getMessage(), e);
-        }
+        return new String(this.decode(StringUtils.getBytesUsAscii(pString)), charset);
     }
 
     /**
@@ -290,17 +320,10 @@ public class QuotedPrintableCodec implem
      * @throws DecoderException
      *                  Thrown if quoted-printable decoding is unsuccessful.
      *                  Thrown if charset is not supported.
-     * @see #getDefaultCharset()
+     * @see #getCharset()
      */
     public String decode(String pString) throws DecoderException {
-        if (pString == null) {
-            return null;
-        }
-        try {
-            return decode(pString, getDefaultCharset());
-        } catch (UnsupportedEncodingException e) {
-            throw new DecoderException(e.getMessage(), e);
-        }
+        return this.decode(pString, this.getCharset());
     }
 
     /**
@@ -353,15 +376,46 @@ public class QuotedPrintableCodec implem
     }
 
     /**
-     * Returns the default charset used for string decoding and encoding.
+     * Gets the default charset name used for string decoding and encoding.
      * 
-     * @return the default string charset.
+     * @return the default charset name
+     * @since 1.7
      */
-    public String getDefaultCharset() {
+    public Charset getCharset() {
         return this.charset;
     }
 
     /**
+     * Gets the default charset name used for string decoding and encoding.
+     * 
+     * @return the default charset name
+     */
+    public String getDefaultCharset() {
+        return this.charset.name();
+    }
+
+    /**
+     * Encodes a string into its quoted-printable form using the specified charset. Unsafe characters are escaped.
+     * 
+     * <p>
+     * This function implements a subset of quoted-printable encoding specification (rule #1 and rule #2) as defined in
+     * RFC 1521 and is suitable for encoding binary data and unformatted text.
+     * </p>
+     * 
+     * @param pString
+     *                  string to convert to quoted-printable form
+     * @param charset
+     *                  the charset for pString
+     * @return quoted-printable string
+     */
+    public String encode(String pString, Charset charset) {
+        if (pString == null) {
+            return null;
+        }
+        return StringUtils.newStringUsAscii(this.encode(pString.getBytes(charset)));
+    }
+
+    /**
      * Encodes a string into its quoted-printable form using the specified charset. Unsafe characters are escaped.
      * 
      * <p>

Modified: commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/net/QuotedPrintableCodecTest.java
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/net/QuotedPrintableCodecTest.java?rev=1306437&r1=1306436&r2=1306437&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/net/QuotedPrintableCodecTest.java (original)
+++ commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/net/QuotedPrintableCodecTest.java Wed Mar 28 15:43:55 2012
@@ -21,6 +21,8 @@ import static org.junit.Assert.assertEqu
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.fail;
 
+import java.nio.charset.UnsupportedCharsetException;
+
 import org.apache.commons.codec.CharEncoding;
 import org.apache.commons.codec.DecoderException;
 import org.apache.commons.codec.EncoderException;
@@ -209,22 +211,9 @@ public class QuotedPrintableCodecTest {
         }
     }
     
-    @Test
+    @Test(expected=UnsupportedCharsetException.class)
     public void testInvalidEncoding() {
-        QuotedPrintableCodec qpcodec = new QuotedPrintableCodec("NONSENSE");
-           String plain = "Hello there!";
-            try {
-               qpcodec.encode(plain);
-                fail( "We set the encoding to a bogus NONSENSE vlaue, this shouldn't have worked.");
-            } catch (EncoderException ee) {
-                // Exception expected, test segment passes.
-            }
-            try {
-               qpcodec.decode(plain);
-                fail( "We set the encoding to a bogus NONSENSE vlaue, this shouldn't have worked.");
-            } catch (DecoderException ee) {
-                // Exception expected, test segment passes.
-            }
+        new QuotedPrintableCodec("NONSENSE");
     }
 
     @Test



Re: svn commit: r1306437 - in /commons/proper/codec/trunk/src: main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java test/java/org/apache/commons/codec/net/QuotedPrintableCodecTest.java

Posted by Gary Gregory <ga...@gmail.com>.
On Wed, Mar 28, 2012 at 11:47 AM, sebb <se...@gmail.com> wrote:

> On 28 March 2012 16:43,  <gg...@apache.org> wrote:
> > Author: ggregory
> > Date: Wed Mar 28 15:43:55 2012
> > New Revision: 1306437
> >
> > URL: http://svn.apache.org/viewvc?rev=1306437&view=rev
> > Log: (empty)
>
> ???
>

Oops, that should have said:

[CODEC-136] Use Charset objects when possible, create Charsets for required
character encodings

Thank you!
Gary


>
> ---------------------------------------------------------------------
> 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: r1306437 - in /commons/proper/codec/trunk/src: main/java/org/apache/commons/codec/net/QuotedPrintableCodec.java test/java/org/apache/commons/codec/net/QuotedPrintableCodecTest.java

Posted by sebb <se...@gmail.com>.
On 28 March 2012 16:43,  <gg...@apache.org> wrote:
> Author: ggregory
> Date: Wed Mar 28 15:43:55 2012
> New Revision: 1306437
>
> URL: http://svn.apache.org/viewvc?rev=1306437&view=rev
> Log: (empty)

???

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org