Base64Utils falls back to JAXB DatatypeConverter for String-based encoding
Issue: SPR-12938
This commit is contained in:
@@ -18,32 +18,67 @@ package org.springframework.util;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
|
||||
import javax.xml.bind.DatatypeConverter;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* @author Juergen Hoeller
|
||||
* @since 4.2
|
||||
*/
|
||||
public class Base64UtilsTests {
|
||||
|
||||
@Test
|
||||
public void jdk8VsCommonsCodec() throws UnsupportedEncodingException {
|
||||
public void encodeWithJdk8VsCommonsCodec() throws UnsupportedEncodingException {
|
||||
Base64Utils.Base64Delegate jdkDelegate = new Base64Utils.JdkBase64Delegate();
|
||||
Base64Utils.Base64Delegate commonsDelegate = new Base64Utils.CommonsCodecBase64Delegate();
|
||||
|
||||
byte[] bytes = new byte[]
|
||||
{-0x4f, 0xa, -0x73, -0x4f, 0x64, -0x20, 0x75, 0x41, 0x5, -0x49, -0x57, -0x65, -0x19, 0x2e, 0x3f, -0x1b};
|
||||
assertArrayEquals(jdkDelegate.encode(bytes), commonsDelegate.encode(bytes));
|
||||
assertArrayEquals(bytes, jdkDelegate.decode(jdkDelegate.encode(bytes)));
|
||||
assertArrayEquals(bytes, commonsDelegate.decode(commonsDelegate.encode(bytes)));
|
||||
|
||||
bytes = "Hello World".getBytes("UTF-8");
|
||||
assertArrayEquals(jdkDelegate.encode(bytes), commonsDelegate.encode(bytes));
|
||||
assertArrayEquals(bytes, jdkDelegate.decode(jdkDelegate.encode(bytes)));
|
||||
assertArrayEquals(bytes, commonsDelegate.decode(commonsDelegate.encode(bytes)));
|
||||
|
||||
bytes = "Hello World\r\nSecond Line".getBytes("UTF-8");
|
||||
assertArrayEquals(jdkDelegate.encode(bytes), commonsDelegate.encode(bytes));
|
||||
assertArrayEquals(bytes, jdkDelegate.decode(jdkDelegate.encode(bytes)));
|
||||
assertArrayEquals(bytes, commonsDelegate.decode(commonsDelegate.encode(bytes)));
|
||||
|
||||
bytes = "Hello World\r\nSecond Line\r\n".getBytes("UTF-8");
|
||||
assertArrayEquals(jdkDelegate.encode(bytes), commonsDelegate.encode(bytes));
|
||||
assertArrayEquals(bytes, jdkDelegate.decode(jdkDelegate.encode(bytes)));
|
||||
assertArrayEquals(bytes, commonsDelegate.decode(commonsDelegate.encode(bytes)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void encodeToStringWithJdk8VsJaxb() throws UnsupportedEncodingException {
|
||||
byte[] bytes = new byte[]
|
||||
{-0x4f, 0xa, -0x73, -0x4f, 0x64, -0x20, 0x75, 0x41, 0x5, -0x49, -0x57, -0x65, -0x19, 0x2e, 0x3f, -0x1b};
|
||||
assertEquals(Base64Utils.encodeToString(bytes), DatatypeConverter.printBase64Binary(bytes));
|
||||
assertArrayEquals(bytes, Base64Utils.decodeFromString(Base64Utils.encodeToString(bytes)));
|
||||
assertArrayEquals(bytes, DatatypeConverter.parseBase64Binary(DatatypeConverter.printBase64Binary(bytes)));
|
||||
|
||||
bytes = "Hello World".getBytes("UTF-8");
|
||||
assertEquals(Base64Utils.encodeToString(bytes), DatatypeConverter.printBase64Binary(bytes));
|
||||
assertArrayEquals(bytes, Base64Utils.decodeFromString(Base64Utils.encodeToString(bytes)));
|
||||
assertArrayEquals(bytes, DatatypeConverter.parseBase64Binary(DatatypeConverter.printBase64Binary(bytes)));
|
||||
|
||||
bytes = "Hello World\r\nSecond Line".getBytes("UTF-8");
|
||||
assertEquals(Base64Utils.encodeToString(bytes), DatatypeConverter.printBase64Binary(bytes));
|
||||
assertArrayEquals(bytes, Base64Utils.decodeFromString(Base64Utils.encodeToString(bytes)));
|
||||
assertArrayEquals(bytes, DatatypeConverter.parseBase64Binary(DatatypeConverter.printBase64Binary(bytes)));
|
||||
|
||||
bytes = "Hello World\r\nSecond Line\r\n".getBytes("UTF-8");
|
||||
assertEquals(Base64Utils.encodeToString(bytes), DatatypeConverter.printBase64Binary(bytes));
|
||||
assertArrayEquals(bytes, Base64Utils.decodeFromString(Base64Utils.encodeToString(bytes)));
|
||||
assertArrayEquals(bytes, DatatypeConverter.parseBase64Binary(DatatypeConverter.printBase64Binary(bytes)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user