From e9c87971083b7ea9435e9c0cc7da2b1e42e26886 Mon Sep 17 00:00:00 2001 From: Oleg Kalnichevski Date: Fri, 24 Jan 2014 17:04:04 +0000 Subject: [PATCH] Use String methods and constructors that require Charset instead of String git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1561066 13f79535-47bb-0310-9956-ffa450edef68 --- .../cache/TestHttpCacheEntrySerializers.java | 5 +- ...leWhileRevalidationReleasesConnection.java | 8 +- .../apache/http/impl/auth/NTLMEngineImpl.java | 118 +++++++----------- .../entity/TestDecompressingEntity.java | 3 +- .../http/impl/auth/TestNTLMEngineImpl.java | 3 +- .../integration/TestContentCodings.java | 5 +- .../impl/conn/SessionInputBufferMock.java | 2 +- .../http/localserver/RandomHandler.java | 28 +---- .../http/entity/mime/content/StringBody.java | 9 +- .../entity/mime/TestMultipartContentBody.java | 3 +- .../http/entity/mime/TestMultipartForm.java | 10 +- 11 files changed, 71 insertions(+), 123 deletions(-) diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestHttpCacheEntrySerializers.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestHttpCacheEntrySerializers.java index 628b0e146..4e8abed8c 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestHttpCacheEntrySerializers.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestHttpCacheEntrySerializers.java @@ -32,7 +32,6 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; -import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.util.Arrays; import java.util.Date; @@ -80,7 +79,7 @@ public class TestHttpCacheEntrySerializers { assertTrue(areEqual(readEntry, writeEntry)); } - private HttpCacheEntry makeCacheEntryWithVariantMap() throws UnsupportedEncodingException { + private HttpCacheEntry makeCacheEntryWithVariantMap() { final Header[] headers = new Header[5]; for (int i = 0; i < headers.length; i++) { headers[i] = new BasicHeader("header" + i, "value" + i); @@ -94,7 +93,7 @@ public class TestHttpCacheEntrySerializers { variantMap.put("test variant 2","true"); final HttpCacheEntry cacheEntry = new HttpCacheEntry(new Date(), new Date(), slObj, headers, new HeapResource(Base64.decodeBase64(body - .getBytes(UTF8.name()))), variantMap); + .getBytes(UTF8))), variantMap); return cacheEntry; } diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestStaleWhileRevalidationReleasesConnection.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestStaleWhileRevalidationReleasesConnection.java index 6d821e3ed..7db4806a5 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestStaleWhileRevalidationReleasesConnection.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestStaleWhileRevalidationReleasesConnection.java @@ -26,6 +26,7 @@ */ package org.apache.http.impl.client.cache; +import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.HttpException; import org.apache.http.HttpRequest; @@ -50,7 +51,6 @@ import org.junit.Before; import org.junit.Test; import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.util.Locale; @@ -283,11 +283,7 @@ public class TestStaleWhileRevalidationReleasesConnection { public byte[] getHeaderContent(final HttpRequest request) { final Header contentHeader = request.getFirstHeader(DEFAULT_CLIENT_CONTROLLED_CONTENT_HEADER); if(contentHeader!=null) { - try { - return contentHeader.getValue().getBytes("UTF-8"); - } catch(final UnsupportedEncodingException e) { - return contentHeader.getValue().getBytes(); - } + return contentHeader.getValue().getBytes(Consts.UTF_8); } else { return DEFAULT_CONTENT; } diff --git a/httpclient/src/main/java/org/apache/http/impl/auth/NTLMEngineImpl.java b/httpclient/src/main/java/org/apache/http/impl/auth/NTLMEngineImpl.java index e368161e1..bc90a8210 100644 --- a/httpclient/src/main/java/org/apache/http/impl/auth/NTLMEngineImpl.java +++ b/httpclient/src/main/java/org/apache/http/impl/auth/NTLMEngineImpl.java @@ -27,6 +27,7 @@ package org.apache.http.impl.auth; import java.io.UnsupportedEncodingException; +import java.nio.charset.Charset; import java.security.Key; import java.security.MessageDigest; import java.util.Arrays; @@ -36,7 +37,9 @@ import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; +import org.apache.http.Consts; import org.apache.http.annotation.NotThreadSafe; +import org.apache.http.util.CharsetUtils; import org.apache.http.util.EncodingUtils; /** @@ -48,6 +51,8 @@ import org.apache.http.util.EncodingUtils; @NotThreadSafe final class NTLMEngineImpl implements NTLMEngine { + private static final Charset UNICODE_LITTLE_UNMARKED = CharsetUtils.lookup("UnicodeLittleUnmarked"); + // Flags we use; descriptions according to: // http://davenport.sourceforge.net/ntlm.html // and @@ -81,16 +86,13 @@ final class NTLMEngineImpl implements NTLMEngine { } /** Character encoding */ - static final String DEFAULT_CHARSET = "ASCII"; - - /** The character set to use for encoding the credentials */ - private String credentialCharset = DEFAULT_CHARSET; + static final Charset DEFAULT_CHARSET = Consts.ASCII; /** The signature string as bytes in the default encoding */ private static final byte[] SIGNATURE; static { - final byte[] bytesWithoutNull = EncodingUtils.getBytes("NTLMSSP", "ASCII"); + final byte[] bytesWithoutNull = "NTLMSSP".getBytes(Consts.ASCII); SIGNATURE = new byte[bytesWithoutNull.length + 1]; System.arraycopy(bytesWithoutNull, 0, SIGNATURE, 0, bytesWithoutNull.length); SIGNATURE[bytesWithoutNull.length] = (byte) 0x00; @@ -169,21 +171,6 @@ final class NTLMEngineImpl implements NTLMEngine { targetInformation).getResponse(); } - /** - * @return Returns the credentialCharset. - */ - String getCredentialCharset() { - return credentialCharset; - } - - /** - * @param credentialCharset - * The credentialCharset to set. - */ - void setCredentialCharset(final String credentialCharset) { - this.credentialCharset = credentialCharset; - } - /** Strip dot suffix from a name */ private static String stripDotSuffix(final String value) { if (value == null) { @@ -608,13 +595,13 @@ final class NTLMEngineImpl implements NTLMEngine { */ private static byte[] lmHash(final String password) throws NTLMEngineException { try { - final byte[] oemPassword = password.toUpperCase(Locale.US).getBytes("US-ASCII"); + final byte[] oemPassword = password.toUpperCase(Locale.US).getBytes(Consts.ASCII); final int length = Math.min(oemPassword.length, 14); final byte[] keyBytes = new byte[14]; System.arraycopy(oemPassword, 0, keyBytes, 0, length); final Key lowKey = createDESKey(keyBytes, 0); final Key highKey = createDESKey(keyBytes, 7); - final byte[] magicConstant = "KGS!@#$%".getBytes("US-ASCII"); + final byte[] magicConstant = "KGS!@#$%".getBytes(Consts.ASCII); final Cipher des = Cipher.getInstance("DES/ECB/NoPadding"); des.init(Cipher.ENCRYPT_MODE, lowKey); final byte[] lowHash = des.doFinal(magicConstant); @@ -639,14 +626,13 @@ final class NTLMEngineImpl implements NTLMEngine { * the NTLM Response and the NTLMv2 and LMv2 Hashes. */ private static byte[] ntlmHash(final String password) throws NTLMEngineException { - try { - final byte[] unicodePassword = password.getBytes("UnicodeLittleUnmarked"); - final MD4 md4 = new MD4(); - md4.update(unicodePassword); - return md4.getOutput(); - } catch (final UnsupportedEncodingException e) { - throw new NTLMEngineException("Unicode not supported: " + e.getMessage(), e); + if (UNICODE_LITTLE_UNMARKED == null) { + throw new NTLMEngineException("Unicode not supported"); } + final byte[] unicodePassword = password.getBytes(UNICODE_LITTLE_UNMARKED); + final MD4 md4 = new MD4(); + md4.update(unicodePassword); + return md4.getOutput(); } /** @@ -657,17 +643,16 @@ final class NTLMEngineImpl implements NTLMEngine { */ private static byte[] lmv2Hash(final String domain, final String user, final byte[] ntlmHash) throws NTLMEngineException { - try { - final HMACMD5 hmacMD5 = new HMACMD5(ntlmHash); - // Upper case username, upper case domain! - hmacMD5.update(user.toUpperCase(Locale.US).getBytes("UnicodeLittleUnmarked")); - if (domain != null) { - hmacMD5.update(domain.toUpperCase(Locale.US).getBytes("UnicodeLittleUnmarked")); - } - return hmacMD5.getOutput(); - } catch (final UnsupportedEncodingException e) { - throw new NTLMEngineException("Unicode not supported! " + e.getMessage(), e); + if (UNICODE_LITTLE_UNMARKED == null) { + throw new NTLMEngineException("Unicode not supported"); } + final HMACMD5 hmacMD5 = new HMACMD5(ntlmHash); + // Upper case username, upper case domain! + hmacMD5.update(user.toUpperCase(Locale.US).getBytes(UNICODE_LITTLE_UNMARKED)); + if (domain != null) { + hmacMD5.update(domain.toUpperCase(Locale.US).getBytes(UNICODE_LITTLE_UNMARKED)); + } + return hmacMD5.getOutput(); } /** @@ -678,17 +663,16 @@ final class NTLMEngineImpl implements NTLMEngine { */ private static byte[] ntlmv2Hash(final String domain, final String user, final byte[] ntlmHash) throws NTLMEngineException { - try { - final HMACMD5 hmacMD5 = new HMACMD5(ntlmHash); - // Upper case username, mixed case target!! - hmacMD5.update(user.toUpperCase(Locale.US).getBytes("UnicodeLittleUnmarked")); - if (domain != null) { - hmacMD5.update(domain.getBytes("UnicodeLittleUnmarked")); - } - return hmacMD5.getOutput(); - } catch (final UnsupportedEncodingException e) { - throw new NTLMEngineException("Unicode not supported! " + e.getMessage(), e); + if (UNICODE_LITTLE_UNMARKED == null) { + throw new NTLMEngineException("Unicode not supported"); } + final HMACMD5 hmacMD5 = new HMACMD5(ntlmHash); + // Upper case username, mixed case target!! + hmacMD5.update(user.toUpperCase(Locale.US).getBytes(UNICODE_LITTLE_UNMARKED)); + if (domain != null) { + hmacMD5.update(domain.getBytes(UNICODE_LITTLE_UNMARKED)); + } + return hmacMD5.getOutput(); } /** @@ -848,8 +832,7 @@ final class NTLMEngineImpl implements NTLMEngine { /** Constructor to use when message contents are known */ NTLMMessage(final String messageBody, final int expectedType) throws NTLMEngineException { - messageContents = Base64.decodeBase64(EncodingUtils.getBytes(messageBody, - DEFAULT_CHARSET)); + messageContents = Base64.decodeBase64(messageBody.getBytes(DEFAULT_CHARSET)); // Look for NTLM message if (messageContents.length < SIGNATURE.length) { throw new NTLMEngineException("NTLM message decoding error - packet too short"); @@ -1001,18 +984,14 @@ final class NTLMEngineImpl implements NTLMEngine { /** Constructor. Include the arguments the message will need */ Type1Message(final String domain, final String host) throws NTLMEngineException { super(); - try { - // Strip off domain name from the host! - final String unqualifiedHost = convertHost(host); - // Use only the base domain name! - final String unqualifiedDomain = convertDomain(domain); + // Strip off domain name from the host! + final String unqualifiedHost = convertHost(host); + // Use only the base domain name! + final String unqualifiedDomain = convertDomain(domain); - hostBytes = unqualifiedHost != null? unqualifiedHost.getBytes("ASCII") : null; - domainBytes = unqualifiedDomain != null ? unqualifiedDomain - .toUpperCase(Locale.US).getBytes("ASCII") : null; - } catch (final UnsupportedEncodingException e) { - throw new NTLMEngineException("Unicode unsupported: " + e.getMessage(), e); - } + hostBytes = unqualifiedHost != null? unqualifiedHost.getBytes(Consts.ASCII) : null; + domainBytes = unqualifiedDomain != null ? unqualifiedDomain + .toUpperCase(Locale.US).getBytes(Consts.ASCII) : null; } /** @@ -1260,16 +1239,13 @@ final class NTLMEngineImpl implements NTLMEngine { } else { sessionKey = null; } - - try { - hostBytes = unqualifiedHost != null ? unqualifiedHost - .getBytes("UnicodeLittleUnmarked") : null; - domainBytes = unqualifiedDomain != null ? unqualifiedDomain - .toUpperCase(Locale.US).getBytes("UnicodeLittleUnmarked") : null; - userBytes = user.getBytes("UnicodeLittleUnmarked"); - } catch (final UnsupportedEncodingException e) { - throw new NTLMEngineException("Unicode not supported: " + e.getMessage(), e); + if (UNICODE_LITTLE_UNMARKED == null) { + throw new NTLMEngineException("Unicode not supported"); } + hostBytes = unqualifiedHost != null ? unqualifiedHost.getBytes(UNICODE_LITTLE_UNMARKED) : null; + domainBytes = unqualifiedDomain != null ? unqualifiedDomain + .toUpperCase(Locale.US).getBytes(UNICODE_LITTLE_UNMARKED) : null; + userBytes = user.getBytes(UNICODE_LITTLE_UNMARKED); } /** Assemble the response */ diff --git a/httpclient/src/test/java/org/apache/http/client/entity/TestDecompressingEntity.java b/httpclient/src/test/java/org/apache/http/client/entity/TestDecompressingEntity.java index 09b48ed4f..954bbb0ce 100644 --- a/httpclient/src/test/java/org/apache/http/client/entity/TestDecompressingEntity.java +++ b/httpclient/src/test/java/org/apache/http/client/entity/TestDecompressingEntity.java @@ -35,6 +35,7 @@ import java.util.zip.CRC32; import java.util.zip.CheckedInputStream; import java.util.zip.Checksum; +import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.entity.InputStreamEntity; import org.apache.http.entity.StringEntity; @@ -61,7 +62,7 @@ public class TestDecompressingEntity { @Test public void testStreaming() throws Exception { final CRC32 crc32 = new CRC32(); - final ByteArrayInputStream in = new ByteArrayInputStream("1234567890".getBytes("ASCII")); + final ByteArrayInputStream in = new ByteArrayInputStream("1234567890".getBytes(Consts.ASCII)); final InputStreamEntity wrapped = new InputStreamEntity(in, -1); final ChecksumEntity entity = new ChecksumEntity(wrapped, crc32); Assert.assertTrue(entity.isStreaming()); diff --git a/httpclient/src/test/java/org/apache/http/impl/auth/TestNTLMEngineImpl.java b/httpclient/src/test/java/org/apache/http/impl/auth/TestNTLMEngineImpl.java index 87e5e6865..03900e24f 100644 --- a/httpclient/src/test/java/org/apache/http/impl/auth/TestNTLMEngineImpl.java +++ b/httpclient/src/test/java/org/apache/http/impl/auth/TestNTLMEngineImpl.java @@ -26,6 +26,7 @@ */ package org.apache.http.impl.auth; +import org.apache.http.Consts; import org.junit.Assert; import org.junit.Test; @@ -69,7 +70,7 @@ public class TestNTLMEngineImpl { static void checkMD4(final String input, final String hexOutput) throws Exception { NTLMEngineImpl.MD4 md4; md4 = new NTLMEngineImpl.MD4(); - md4.update(input.getBytes("ASCII")); + md4.update(input.getBytes(Consts.ASCII)); final byte[] answer = md4.getOutput(); final byte[] correctAnswer = toBytes(hexOutput); if (answer.length != correctAnswer.length) { diff --git a/httpclient/src/test/java/org/apache/http/impl/client/integration/TestContentCodings.java b/httpclient/src/test/java/org/apache/http/impl/client/integration/TestContentCodings.java index efdf3696d..11be64b98 100644 --- a/httpclient/src/test/java/org/apache/http/impl/client/integration/TestContentCodings.java +++ b/httpclient/src/test/java/org/apache/http/impl/client/integration/TestContentCodings.java @@ -39,6 +39,7 @@ import java.util.concurrent.Executors; import java.util.zip.Deflater; import java.util.zip.GZIPOutputStream; +import org.apache.http.Consts; import org.apache.http.Header; import org.apache.http.HeaderElement; import org.apache.http.HttpException; @@ -310,7 +311,7 @@ public class TestContentCodings extends IntegrationTestBase { // response.setEntity(new InputStreamEntity(new DeflaterInputStream(new // ByteArrayInputStream( // entityText.getBytes("utf-8"))), -1)); - final byte[] uncompressed = entityText.getBytes("utf-8"); + final byte[] uncompressed = entityText.getBytes(Consts.UTF_8); final Deflater compressor = new Deflater(Deflater.DEFAULT_COMPRESSION, rfc1951); compressor.setInput(uncompressed); compressor.finish(); @@ -368,7 +369,7 @@ public class TestContentCodings extends IntegrationTestBase { final OutputStream out = new GZIPOutputStream(bytes); final ByteArrayInputStream uncompressed = new ByteArrayInputStream( - entityText.getBytes("utf-8")); + entityText.getBytes(Consts.UTF_8)); final byte[] buf = new byte[60]; diff --git a/httpclient/src/test/java/org/apache/http/impl/conn/SessionInputBufferMock.java b/httpclient/src/test/java/org/apache/http/impl/conn/SessionInputBufferMock.java index cab628750..dd8120cf1 100644 --- a/httpclient/src/test/java/org/apache/http/impl/conn/SessionInputBufferMock.java +++ b/httpclient/src/test/java/org/apache/http/impl/conn/SessionInputBufferMock.java @@ -100,7 +100,7 @@ public class SessionInputBufferMock extends SessionInputBufferImpl { public SessionInputBufferMock( final String s, final Charset charset) throws UnsupportedEncodingException { - this(s.getBytes(charset.name()), charset); + this(s.getBytes(charset), charset); } @Override diff --git a/httpclient/src/test/java/org/apache/http/localserver/RandomHandler.java b/httpclient/src/test/java/org/apache/http/localserver/RandomHandler.java index 6681a82c0..4e903b8a3 100644 --- a/httpclient/src/test/java/org/apache/http/localserver/RandomHandler.java +++ b/httpclient/src/test/java/org/apache/http/localserver/RandomHandler.java @@ -30,9 +30,9 @@ package org.apache.http.localserver; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.io.UnsupportedEncodingException; import java.util.Locale; +import org.apache.http.Consts; import org.apache.http.HttpException; import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; @@ -42,19 +42,10 @@ import org.apache.http.entity.AbstractHttpEntity; import org.apache.http.protocol.HttpContext; import org.apache.http.protocol.HttpRequestHandler; - - /** * A handler that generates random data. - * - * - * - * */ -public class RandomHandler - implements HttpRequestHandler { - - // public default constructor +public class RandomHandler implements HttpRequestHandler { /** * Handles a request by generating random data. @@ -131,19 +122,8 @@ public class RandomHandler public static class RandomEntity extends AbstractHttpEntity { /** The range from which to generate random data. */ - private final static byte[] RANGE; - static { - byte[] range = null; - try { - range = ("abcdefghijklmnopqrstuvwxyz" + - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "0123456789" - ).getBytes("US-ASCII"); - } catch (final UnsupportedEncodingException uex) { - // never, US-ASCII is guaranteed - } - RANGE = range; - } - + private final static byte[] RANGE = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + .getBytes(Consts.ASCII); /** The length of the random data to generate. */ protected final long length; diff --git a/httpmime/src/main/java/org/apache/http/entity/mime/content/StringBody.java b/httpmime/src/main/java/org/apache/http/entity/mime/content/StringBody.java index e322f8371..5485e6e0d 100644 --- a/httpmime/src/main/java/org/apache/http/entity/mime/content/StringBody.java +++ b/httpmime/src/main/java/org/apache/http/entity/mime/content/StringBody.java @@ -35,7 +35,6 @@ import java.io.OutputStream; import java.io.Reader; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; -import java.nio.charset.UnsupportedCharsetException; import org.apache.http.Consts; import org.apache.http.entity.ContentType; @@ -154,13 +153,7 @@ public class StringBody extends AbstractContentBody { public StringBody(final String text, final ContentType contentType) { super(contentType); final Charset charset = contentType.getCharset(); - final String csname = charset != null ? charset.name() : Consts.ASCII.name(); - try { - this.content = text.getBytes(csname); - } catch (final UnsupportedEncodingException ex) { - // Should never happen - throw new UnsupportedCharsetException(csname); - } + this.content = text.getBytes(charset != null ? charset : Consts.ASCII); } public Reader getReader() { diff --git a/httpmime/src/test/java/org/apache/http/entity/mime/TestMultipartContentBody.java b/httpmime/src/test/java/org/apache/http/entity/mime/TestMultipartContentBody.java index eec9bd52c..cdaf5467c 100644 --- a/httpmime/src/test/java/org/apache/http/entity/mime/TestMultipartContentBody.java +++ b/httpmime/src/test/java/org/apache/http/entity/mime/TestMultipartContentBody.java @@ -29,6 +29,7 @@ package org.apache.http.entity.mime; import java.io.ByteArrayInputStream; +import org.apache.http.Consts; import org.apache.http.entity.ContentType; import org.apache.http.entity.mime.content.InputStreamBody; import org.apache.http.entity.mime.content.StringBody; @@ -66,7 +67,7 @@ public class TestMultipartContentBody { @Test public void testInputStreamBody() throws Exception { - final byte[] stuff = "Stuff".getBytes("US-ASCII"); + final byte[] stuff = "Stuff".getBytes(Consts.ASCII); final InputStreamBody b1 = new InputStreamBody(new ByteArrayInputStream(stuff), "stuff"); Assert.assertEquals(-1, b1.getContentLength()); diff --git a/httpmime/src/test/java/org/apache/http/entity/mime/TestMultipartForm.java b/httpmime/src/test/java/org/apache/http/entity/mime/TestMultipartForm.java index 170c7d3da..ce8687ef8 100644 --- a/httpmime/src/test/java/org/apache/http/entity/mime/TestMultipartForm.java +++ b/httpmime/src/test/java/org/apache/http/entity/mime/TestMultipartForm.java @@ -341,17 +341,17 @@ public class TestMultipartForm { "Content-Disposition: form-data; name=\"field1\"\r\n" + "Content-Type: text/plain; charset=ISO-8859-1\r\n" + "Content-Transfer-Encoding: 8bit\r\n" + - "\r\n").getBytes("US-ASCII")); - out2.write(s1.getBytes("ISO-8859-1")); + "\r\n").getBytes(Consts.ASCII)); + out2.write(s1.getBytes(Consts.ISO_8859_1)); out2.write(("\r\n" + "--foo\r\n" + "Content-Disposition: form-data; name=\"field2\"\r\n" + "Content-Type: text/plain; charset=KOI8-R\r\n" + "Content-Transfer-Encoding: 8bit\r\n" + - "\r\n").getBytes("US-ASCII")); - out2.write(s2.getBytes("KOI8-R")); + "\r\n").getBytes(Consts.ASCII)); + out2.write(s2.getBytes(Charset.forName("KOI8-R"))); out2.write(("\r\n" + - "--foo--\r\n").getBytes("US-ASCII")); + "--foo--\r\n").getBytes(Consts.ASCII)); out2.close(); final byte[] actual = out1.toByteArray();