|
|
|
JIRA jira@apache.org
|
new Base64().encode() appends a CRLF
------------------------------------ Key: CODEC-89 URL: https://issues.apache.org/jira/browse/CODEC-89 Project: Commons Codec Issue Type: Bug Affects Versions: 1.4 Reporter: Julius Davies new Base64().encode() appends a CRLF {code} import org.apache.commons.codec.binary.*; public class B64 { public static void main(String[] args) throws Exception { Base64 b64 = new Base64(); String s1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; String s2 = "aaaaaaaaaa"; String s3 = "a"; byte[] b1 = s1.getBytes("UTF-8"); byte[] b2 = s2.getBytes("UTF-8"); byte[] b3 = s3.getBytes("UTF-8"); byte[] result; result = Base64.encodeBase64(b1); System.out.println("[" + new String(result, "UTF-8") + "]"); result = b64.encode(b1); System.out.println("[" + new String(result, "UTF-8") + "]"); result = Base64.encodeBase64(b2); System.out.println("[" + new String(result, "UTF-8") + "]"); result = b64.encode(b2); System.out.println("[" + new String(result, "UTF-8") + "]"); result = Base64.encodeBase64(b3); System.out.println("[" + new String(result, "UTF-8") + "]"); result = b64.encode(b3); System.out.println("[" + new String(result, "UTF-8") + "]"); } } {code} Here's my output: {noformat} $ java -cp commons-codec-1.3.jar:. B64 [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYQ==] [YQ==] [YQ==] $ java -cp commons-codec-1.4.jar:. B64 [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== ] [YWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYQ== ] [YQ==] [YQ== ] {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. |
||||||||||||||||
|
JIRA jira@apache.org
|
[ https://issues.apache.org/jira/browse/CODEC-89?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Julius Davies updated CODEC-89: ------------------------------- Description: The instance encode() method (e.g. new Base64().encode()) appends a CRLF. Actually it's fully chunking the output into 76 character lines. Commons-Codec-1.3 did not do this. The static Base64.encodeBase64() method behaves the same in both 1.3 and 1.4, so this problem only affects the instance encode() method. {code} import org.apache.commons.codec.binary.*; public class B64 { public static void main(String[] args) throws Exception { Base64 b64 = new Base64(); String s1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; String s2 = "aaaaaaaaaa"; String s3 = "a"; byte[] b1 = s1.getBytes("UTF-8"); byte[] b2 = s2.getBytes("UTF-8"); byte[] b3 = s3.getBytes("UTF-8"); byte[] result; result = Base64.encodeBase64(b1); System.out.println("[" + new String(result, "UTF-8") + "]"); result = b64.encode(b1); System.out.println("[" + new String(result, "UTF-8") + "]"); result = Base64.encodeBase64(b2); System.out.println("[" + new String(result, "UTF-8") + "]"); result = b64.encode(b2); System.out.println("[" + new String(result, "UTF-8") + "]"); result = Base64.encodeBase64(b3); System.out.println("[" + new String(result, "UTF-8") + "]"); result = b64.encode(b3); System.out.println("[" + new String(result, "UTF-8") + "]"); } } {code} Here's my output: {noformat} $ java -cp commons-codec-1.3.jar:. B64 [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYQ==] [YQ==] [YQ==] $ java -cp commons-codec-1.4.jar:. B64 [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== ] [YWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYQ== ] [YQ==] [YQ== ] {noformat} was: new Base64().encode() appends a CRLF {code} import org.apache.commons.codec.binary.*; public class B64 { public static void main(String[] args) throws Exception { Base64 b64 = new Base64(); String s1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; String s2 = "aaaaaaaaaa"; String s3 = "a"; byte[] b1 = s1.getBytes("UTF-8"); byte[] b2 = s2.getBytes("UTF-8"); byte[] b3 = s3.getBytes("UTF-8"); byte[] result; result = Base64.encodeBase64(b1); System.out.println("[" + new String(result, "UTF-8") + "]"); result = b64.encode(b1); System.out.println("[" + new String(result, "UTF-8") + "]"); result = Base64.encodeBase64(b2); System.out.println("[" + new String(result, "UTF-8") + "]"); result = b64.encode(b2); System.out.println("[" + new String(result, "UTF-8") + "]"); result = Base64.encodeBase64(b3); System.out.println("[" + new String(result, "UTF-8") + "]"); result = b64.encode(b3); System.out.println("[" + new String(result, "UTF-8") + "]"); } } {code} Here's my output: {noformat} $ java -cp commons-codec-1.3.jar:. B64 [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYQ==] [YQ==] [YQ==] $ java -cp commons-codec-1.4.jar:. B64 [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== ] [YWFhYWFhYWFhYQ==] [YWFhYWFhYWFhYQ== ] [YQ==] [YQ== ] {noformat} Summary: new Base64().encode() appends a CRLF, and chunks results into 76 character lines (was: new Base64().encode() appends a CRLF) > new Base64().encode() appends a CRLF, and chunks results into 76 character lines > -------------------------------------------------------------------------------- > > Key: CODEC-89 > URL: https://issues.apache.org/jira/browse/CODEC-89 > Project: Commons Codec > Issue Type: Bug > Affects Versions: 1.4 > Reporter: Julius Davies > > The instance encode() method (e.g. new Base64().encode()) appends a CRLF. Actually it's fully chunking the output into 76 character lines. Commons-Codec-1.3 did not do this. The static Base64.encodeBase64() method behaves the same in both 1.3 and 1.4, so this problem only affects the instance encode() method. > {code} > import org.apache.commons.codec.binary.*; > public class B64 { > public static void main(String[] args) throws Exception { > Base64 b64 = new Base64(); > String s1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; > String s2 = "aaaaaaaaaa"; > String s3 = "a"; > > byte[] b1 = s1.getBytes("UTF-8"); > byte[] b2 = s2.getBytes("UTF-8"); > byte[] b3 = s3.getBytes("UTF-8"); > byte[] result; > result = Base64.encodeBase64(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > } > } > {code} > Here's my output: > {noformat} > $ java -cp commons-codec-1.3.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YQ==] > [YQ==] > $ java -cp commons-codec-1.4.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh > YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== > ] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ== > ] > [YQ==] > [YQ== > ] > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. |
||||||||||||||||
|
JIRA jira@apache.org
|
In reply to this post
by JIRA jira@apache.org
[ https://issues.apache.org/jira/browse/CODEC-89?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Julius Davies updated CODEC-89: ------------------------------- Attachment: codec-89.patch codec-89.patch attached which fixes this. Also introduces some JUnit tests to avoid this problem in the future. Note: I changed the behavior of the Base64.encodeBase64String() method introduced in commons-codec-1.4 so that it also no longer chunks its output. Two lines of the JUnit tests adjusted to reflect this change. > new Base64().encode() appends a CRLF, and chunks results into 76 character lines > -------------------------------------------------------------------------------- > > Key: CODEC-89 > URL: https://issues.apache.org/jira/browse/CODEC-89 > Project: Commons Codec > Issue Type: Bug > Affects Versions: 1.4 > Reporter: Julius Davies > Attachments: codec-89.patch > > > The instance encode() method (e.g. new Base64().encode()) appends a CRLF. Actually it's fully chunking the output into 76 character lines. Commons-Codec-1.3 did not do this. The static Base64.encodeBase64() method behaves the same in both 1.3 and 1.4, so this problem only affects the instance encode() method. > {code} > import org.apache.commons.codec.binary.*; > public class B64 { > public static void main(String[] args) throws Exception { > Base64 b64 = new Base64(); > String s1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; > String s2 = "aaaaaaaaaa"; > String s3 = "a"; > > byte[] b1 = s1.getBytes("UTF-8"); > byte[] b2 = s2.getBytes("UTF-8"); > byte[] b3 = s3.getBytes("UTF-8"); > byte[] result; > result = Base64.encodeBase64(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > } > } > {code} > Here's my output: > {noformat} > $ java -cp commons-codec-1.3.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YQ==] > [YQ==] > $ java -cp commons-codec-1.4.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh > YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== > ] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ== > ] > [YQ==] > [YQ== > ] > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. |
||||||||||||||||
|
JIRA jira@apache.org
|
In reply to this post
by JIRA jira@apache.org
[ https://issues.apache.org/jira/browse/CODEC-89?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12781274#action_12781274 ] Gary Gregory commented on CODEC-89: ----------------------------------- What a pickle. The current behavior is documented in Javadocs but the API behavior for 1.4 is released and different from 1.3. What should in 1.5? Go back to 1.3 behavior? That seems like asking call sites a lot, switching twice. What does the community thinks? > new Base64().encode() appends a CRLF, and chunks results into 76 character lines > -------------------------------------------------------------------------------- > > Key: CODEC-89 > URL: https://issues.apache.org/jira/browse/CODEC-89 > Project: Commons Codec > Issue Type: Bug > Affects Versions: 1.4 > Reporter: Julius Davies > Attachments: codec-89.patch > > > The instance encode() method (e.g. new Base64().encode()) appends a CRLF. Actually it's fully chunking the output into 76 character lines. Commons-Codec-1.3 did not do this. The static Base64.encodeBase64() method behaves the same in both 1.3 and 1.4, so this problem only affects the instance encode() method. > {code} > import org.apache.commons.codec.binary.*; > public class B64 { > public static void main(String[] args) throws Exception { > Base64 b64 = new Base64(); > String s1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; > String s2 = "aaaaaaaaaa"; > String s3 = "a"; > > byte[] b1 = s1.getBytes("UTF-8"); > byte[] b2 = s2.getBytes("UTF-8"); > byte[] b3 = s3.getBytes("UTF-8"); > byte[] result; > result = Base64.encodeBase64(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > } > } > {code} > Here's my output: > {noformat} > $ java -cp commons-codec-1.3.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YQ==] > [YQ==] > $ java -cp commons-codec-1.4.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh > YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== > ] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ== > ] > [YQ==] > [YQ== > ] > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. |
||||||||||||||||
|
JIRA jira@apache.org
|
In reply to this post
by JIRA jira@apache.org
[ https://issues.apache.org/jira/browse/CODEC-89?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12781295#action_12781295 ] Julius Davies commented on CODEC-89: ------------------------------------ Could we put out a fix as "1.4.1" ? > new Base64().encode() appends a CRLF, and chunks results into 76 character lines > -------------------------------------------------------------------------------- > > Key: CODEC-89 > URL: https://issues.apache.org/jira/browse/CODEC-89 > Project: Commons Codec > Issue Type: Bug > Affects Versions: 1.4 > Reporter: Julius Davies > Attachments: codec-89.patch > > > The instance encode() method (e.g. new Base64().encode()) appends a CRLF. Actually it's fully chunking the output into 76 character lines. Commons-Codec-1.3 did not do this. The static Base64.encodeBase64() method behaves the same in both 1.3 and 1.4, so this problem only affects the instance encode() method. > {code} > import org.apache.commons.codec.binary.*; > public class B64 { > public static void main(String[] args) throws Exception { > Base64 b64 = new Base64(); > String s1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; > String s2 = "aaaaaaaaaa"; > String s3 = "a"; > > byte[] b1 = s1.getBytes("UTF-8"); > byte[] b2 = s2.getBytes("UTF-8"); > byte[] b3 = s3.getBytes("UTF-8"); > byte[] result; > result = Base64.encodeBase64(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > } > } > {code} > Here's my output: > {noformat} > $ java -cp commons-codec-1.3.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YQ==] > [YQ==] > $ java -cp commons-codec-1.4.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh > YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== > ] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ== > ] > [YQ==] > [YQ== > ] > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. |
||||||||||||||||
|
JIRA jira@apache.org
|
In reply to this post
by JIRA jira@apache.org
[ https://issues.apache.org/jira/browse/CODEC-89?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12781305#action_12781305 ] Gary Gregory commented on CODEC-89: ----------------------------------- I see a change for a 1.4.1 or a 1.5 as the same issue since the API behavior would change again: 1.3: Behavior A 1.4: Behavior B 1.4.1 and 1.5: Behavior A again? In either case that is asking clients to change their code twice, back and forth. That seems painful. If you want, you can post to the dev list to ask for the community's feedback. It would be good to see what other people think. > new Base64().encode() appends a CRLF, and chunks results into 76 character lines > -------------------------------------------------------------------------------- > > Key: CODEC-89 > URL: https://issues.apache.org/jira/browse/CODEC-89 > Project: Commons Codec > Issue Type: Bug > Affects Versions: 1.4 > Reporter: Julius Davies > Attachments: codec-89.patch > > > The instance encode() method (e.g. new Base64().encode()) appends a CRLF. Actually it's fully chunking the output into 76 character lines. Commons-Codec-1.3 did not do this. The static Base64.encodeBase64() method behaves the same in both 1.3 and 1.4, so this problem only affects the instance encode() method. > {code} > import org.apache.commons.codec.binary.*; > public class B64 { > public static void main(String[] args) throws Exception { > Base64 b64 = new Base64(); > String s1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; > String s2 = "aaaaaaaaaa"; > String s3 = "a"; > > byte[] b1 = s1.getBytes("UTF-8"); > byte[] b2 = s2.getBytes("UTF-8"); > byte[] b3 = s3.getBytes("UTF-8"); > byte[] result; > result = Base64.encodeBase64(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > } > } > {code} > Here's my output: > {noformat} > $ java -cp commons-codec-1.3.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YQ==] > [YQ==] > $ java -cp commons-codec-1.4.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh > YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== > ] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ== > ] > [YQ==] > [YQ== > ] > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. |
||||||||||||||||
|
JIRA jira@apache.org
|
In reply to this post
by JIRA jira@apache.org
[ https://issues.apache.org/jira/browse/CODEC-89?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12784460#action_12784460 ] Mat Booth commented on CODEC-89: -------------------------------- I'd prefer to see a 1.4.1 release with the old behaviour. It seems against the spirit of minor version bump (like 1.3 to 1.4) to change the behaviour of the interface. It definitely feels like a regression to me -- I'm tempted to apply this patch to the commons-codec distributed by Fedora Linux (I am the maintainer there). > new Base64().encode() appends a CRLF, and chunks results into 76 character lines > -------------------------------------------------------------------------------- > > Key: CODEC-89 > URL: https://issues.apache.org/jira/browse/CODEC-89 > Project: Commons Codec > Issue Type: Bug > Affects Versions: 1.4 > Reporter: Julius Davies > Attachments: codec-89.patch > > > The instance encode() method (e.g. new Base64().encode()) appends a CRLF. Actually it's fully chunking the output into 76 character lines. Commons-Codec-1.3 did not do this. The static Base64.encodeBase64() method behaves the same in both 1.3 and 1.4, so this problem only affects the instance encode() method. > {code} > import org.apache.commons.codec.binary.*; > public class B64 { > public static void main(String[] args) throws Exception { > Base64 b64 = new Base64(); > String s1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; > String s2 = "aaaaaaaaaa"; > String s3 = "a"; > > byte[] b1 = s1.getBytes("UTF-8"); > byte[] b2 = s2.getBytes("UTF-8"); > byte[] b3 = s3.getBytes("UTF-8"); > byte[] result; > result = Base64.encodeBase64(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > } > } > {code} > Here's my output: > {noformat} > $ java -cp commons-codec-1.3.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YQ==] > [YQ==] > $ java -cp commons-codec-1.4.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh > YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== > ] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ== > ] > [YQ==] > [YQ== > ] > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. |
||||||||||||||||
|
JIRA jira@apache.org
|
In reply to this post
by JIRA jira@apache.org
[ https://issues.apache.org/jira/browse/CODEC-89?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12784589#action_12784589 ] Sebb commented on CODEC-89: --------------------------- Note that the behaviour of new Base64(0).encode() is the same as Base64.encodeBase64() > new Base64().encode() appends a CRLF, and chunks results into 76 character lines > -------------------------------------------------------------------------------- > > Key: CODEC-89 > URL: https://issues.apache.org/jira/browse/CODEC-89 > Project: Commons Codec > Issue Type: Bug > Affects Versions: 1.4 > Reporter: Julius Davies > Attachments: codec-89.patch > > > The instance encode() method (e.g. new Base64().encode()) appends a CRLF. Actually it's fully chunking the output into 76 character lines. Commons-Codec-1.3 did not do this. The static Base64.encodeBase64() method behaves the same in both 1.3 and 1.4, so this problem only affects the instance encode() method. > {code} > import org.apache.commons.codec.binary.*; > public class B64 { > public static void main(String[] args) throws Exception { > Base64 b64 = new Base64(); > String s1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; > String s2 = "aaaaaaaaaa"; > String s3 = "a"; > > byte[] b1 = s1.getBytes("UTF-8"); > byte[] b2 = s2.getBytes("UTF-8"); > byte[] b3 = s3.getBytes("UTF-8"); > byte[] result; > result = Base64.encodeBase64(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > } > } > {code} > Here's my output: > {noformat} > $ java -cp commons-codec-1.3.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YQ==] > [YQ==] > $ java -cp commons-codec-1.4.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh > YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== > ] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ== > ] > [YQ==] > [YQ== > ] > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. |
||||||||||||||||
|
JIRA jira@apache.org
|
In reply to this post
by JIRA jira@apache.org
[ https://issues.apache.org/jira/browse/CODEC-89?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12784741#action_12784741 ] Mat Booth commented on CODEC-89: -------------------------------- > Note that the behaviour of > > new Base64(0).encode() > is the same as > Base64.encodeBase64() So it is... Is that documented anywhere? A note in the compatibility section of the release notes that "new Base64()" should be changed to "new Base64(0)" would be awesome. > new Base64().encode() appends a CRLF, and chunks results into 76 character lines > -------------------------------------------------------------------------------- > > Key: CODEC-89 > URL: https://issues.apache.org/jira/browse/CODEC-89 > Project: Commons Codec > Issue Type: Bug > Affects Versions: 1.4 > Reporter: Julius Davies > Attachments: codec-89.patch > > > The instance encode() method (e.g. new Base64().encode()) appends a CRLF. Actually it's fully chunking the output into 76 character lines. Commons-Codec-1.3 did not do this. The static Base64.encodeBase64() method behaves the same in both 1.3 and 1.4, so this problem only affects the instance encode() method. > {code} > import org.apache.commons.codec.binary.*; > public class B64 { > public static void main(String[] args) throws Exception { > Base64 b64 = new Base64(); > String s1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; > String s2 = "aaaaaaaaaa"; > String s3 = "a"; > > byte[] b1 = s1.getBytes("UTF-8"); > byte[] b2 = s2.getBytes("UTF-8"); > byte[] b3 = s3.getBytes("UTF-8"); > byte[] result; > result = Base64.encodeBase64(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > } > } > {code} > Here's my output: > {noformat} > $ java -cp commons-codec-1.3.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YQ==] > [YQ==] > $ java -cp commons-codec-1.4.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh > YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== > ] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ== > ] > [YQ==] > [YQ== > ] > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. |
||||||||||||||||
|
JIRA jira@apache.org
|
In reply to this post
by JIRA jira@apache.org
[ https://issues.apache.org/jira/browse/CODEC-89?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12785109#action_12785109 ] Sebb commented on CODEC-89: --------------------------- Patch (dated 2009-10-28 04:52 PM) looks OK, except I think it looks odd to do: this(NO_CHUNKING, CHUNK_SEPARATOR, urlSafe); Why provide a CHUNK_SEPARATOR if there's no chunking? Seems to me it would be better to use null, and make corresponding changes to the ctor Base64(int lineLength, byte[] lineSeparator, boolean urlSafe) so that lineSeparator == null IFF lineLength==0 This would have the benefit that accidental use of the lineSeparator would trigger an NPE. The current code outside the ctor only accesses lineSeparator if lineLength > 0, which is as it should be. > new Base64().encode() appends a CRLF, and chunks results into 76 character lines > -------------------------------------------------------------------------------- > > Key: CODEC-89 > URL: https://issues.apache.org/jira/browse/CODEC-89 > Project: Commons Codec > Issue Type: Bug > Affects Versions: 1.4 > Reporter: Julius Davies > Attachments: codec-89.patch > > > The instance encode() method (e.g. new Base64().encode()) appends a CRLF. Actually it's fully chunking the output into 76 character lines. Commons-Codec-1.3 did not do this. The static Base64.encodeBase64() method behaves the same in both 1.3 and 1.4, so this problem only affects the instance encode() method. > {code} > import org.apache.commons.codec.binary.*; > public class B64 { > public static void main(String[] args) throws Exception { > Base64 b64 = new Base64(); > String s1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; > String s2 = "aaaaaaaaaa"; > String s3 = "a"; > > byte[] b1 = s1.getBytes("UTF-8"); > byte[] b2 = s2.getBytes("UTF-8"); > byte[] b3 = s3.getBytes("UTF-8"); > byte[] result; > result = Base64.encodeBase64(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > } > } > {code} > Here's my output: > {noformat} > $ java -cp commons-codec-1.3.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YQ==] > [YQ==] > $ java -cp commons-codec-1.4.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh > YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== > ] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ== > ] > [YQ==] > [YQ== > ] > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. |
||||||||||||||||
|
JIRA jira@apache.org
|
In reply to this post
by JIRA jira@apache.org
[ https://issues.apache.org/jira/browse/CODEC-89?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12785116#action_12785116 ] Sebb commented on CODEC-89: --------------------------- Having second thoughts - although the patch looks OK, it actually changes the behaviour of *two* constructors: public Base64() public Base64(boolean urlSafe) Since the second ctor is @since 1.4, there is no need to - and therefore we should not - change its behaviour. The simplest fix is to change the null ctor to call this(0), and change any code that calls the null ctor to call Base64(false) instead. Patch to follow. > new Base64().encode() appends a CRLF, and chunks results into 76 character lines > -------------------------------------------------------------------------------- > > Key: CODEC-89 > URL: https://issues.apache.org/jira/browse/CODEC-89 > Project: Commons Codec > Issue Type: Bug > Affects Versions: 1.4 > Reporter: Julius Davies > Attachments: codec-89.patch > > > The instance encode() method (e.g. new Base64().encode()) appends a CRLF. Actually it's fully chunking the output into 76 character lines. Commons-Codec-1.3 did not do this. The static Base64.encodeBase64() method behaves the same in both 1.3 and 1.4, so this problem only affects the instance encode() method. > {code} > import org.apache.commons.codec.binary.*; > public class B64 { > public static void main(String[] args) throws Exception { > Base64 b64 = new Base64(); > String s1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; > String s2 = "aaaaaaaaaa"; > String s3 = "a"; > > byte[] b1 = s1.getBytes("UTF-8"); > byte[] b2 = s2.getBytes("UTF-8"); > byte[] b3 = s3.getBytes("UTF-8"); > byte[] result; > result = Base64.encodeBase64(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > } > } > {code} > Here's my output: > {noformat} > $ java -cp commons-codec-1.3.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YQ==] > [YQ==] > $ java -cp commons-codec-1.4.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh > YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== > ] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ== > ] > [YQ==] > [YQ== > ] > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. |
||||||||||||||||
|
JIRA jira@apache.org
|
In reply to this post
by JIRA jira@apache.org
[ https://issues.apache.org/jira/browse/CODEC-89?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Sebb updated CODEC-89: ---------------------- Attachment: Base64.patch Minimal patch to revert null ctor to 1.3 behaviour. Note that the tests all still work, so clearly the tests are inadequate. In fact the tests still work even if the IO Stream files are not patched. > new Base64().encode() appends a CRLF, and chunks results into 76 character lines > -------------------------------------------------------------------------------- > > Key: CODEC-89 > URL: https://issues.apache.org/jira/browse/CODEC-89 > Project: Commons Codec > Issue Type: Bug > Affects Versions: 1.4 > Reporter: Julius Davies > Attachments: Base64.patch, codec-89.patch > > > The instance encode() method (e.g. new Base64().encode()) appends a CRLF. Actually it's fully chunking the output into 76 character lines. Commons-Codec-1.3 did not do this. The static Base64.encodeBase64() method behaves the same in both 1.3 and 1.4, so this problem only affects the instance encode() method. > {code} > import org.apache.commons.codec.binary.*; > public class B64 { > public static void main(String[] args) throws Exception { > Base64 b64 = new Base64(); > String s1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; > String s2 = "aaaaaaaaaa"; > String s3 = "a"; > > byte[] b1 = s1.getBytes("UTF-8"); > byte[] b2 = s2.getBytes("UTF-8"); > byte[] b3 = s3.getBytes("UTF-8"); > byte[] result; > result = Base64.encodeBase64(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b1); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b2); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = Base64.encodeBase64(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > result = b64.encode(b3); > System.out.println("[" + new String(result, "UTF-8") + "]"); > } > } > {code} > Here's my output: > {noformat} > $ java -cp commons-codec-1.3.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ==] > [YQ==] > [YQ==] > $ java -cp commons-codec-1.4.jar:. B64 > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh > YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== > ] > [YWFhYWFhYWFhYQ==] > [YWFhYWFhYWFhYQ== > ] > [YQ==] > [YQ== > ] > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. |
||||||||||||||||
| Free Embeddable Forum Powered by Nabble | Help |