Repository: commons-imaging Updated Branches: refs/heads/master 4701b9628 -> 7862d6028
IMAGING-212: use StandardCharsets to avoid reflection and UnsupportedEncodingExceptions Project: http://git-wip-us.apache.org/repos/asf/commons-imaging/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-imaging/commit/7862d602 Tree: http://git-wip-us.apache.org/repos/asf/commons-imaging/tree/7862d602 Diff: http://git-wip-us.apache.org/repos/asf/commons-imaging/diff/7862d602 Branch: refs/heads/master Commit: 7862d6028dafff8cd2b117b1cae0525ca655ba20 Parents: 4701b96 Author: Dave Brosius <dbros...@mebigfatguy.com> Authored: Mon Jan 1 15:51:43 2018 -0500 Committer: Dave Brosius <dbros...@mebigfatguy.com> Committed: Mon Jan 1 15:51:43 2018 -0500 ---------------------------------------------------------------------- .../imaging/formats/gif/GifImageParser.java | 28 ++++++------- .../commons/imaging/formats/icns/IcnsType.java | 15 ++----- .../imaging/formats/jpeg/JpegImageParser.java | 7 +--- .../imaging/formats/jpeg/iptc/IptcParser.java | 7 ++-- .../formats/jpeg/segments/App14Segment.java | 9 +---- .../imaging/formats/jpeg/xmp/JpegXmpParser.java | 10 ++--- .../formats/jpeg/xmp/JpegXmpRewriter.java | 3 +- .../commons/imaging/formats/png/ChunkType.java | 9 +---- .../commons/imaging/formats/png/PngWriter.java | 37 ++++++++---------- .../formats/png/chunks/PngChunkIccp.java | 3 +- .../formats/png/chunks/PngChunkItxt.java | 11 +++--- .../formats/png/chunks/PngChunkScal.java | 5 ++- .../formats/png/chunks/PngChunkText.java | 5 ++- .../formats/png/chunks/PngChunkZtxt.java | 5 ++- .../commons/imaging/formats/pnm/PamWriter.java | 13 ++++--- .../commons/imaging/formats/pnm/PbmWriter.java | 7 ++-- .../commons/imaging/formats/pnm/PgmWriter.java | 9 +++-- .../commons/imaging/formats/pnm/PpmWriter.java | 13 ++++--- .../imaging/formats/psd/ImageResourceBlock.java | 6 +-- .../imaging/formats/psd/PsdImageParser.java | 12 ++---- .../imaging/formats/tiff/TiffImageParser.java | 11 ++---- .../formats/tiff/fieldtypes/FieldTypeAscii.java | 41 +++++--------------- .../formats/tiff/taginfos/TagInfoAscii.java | 20 ++++------ .../formats/tiff/taginfos/TagInfoGpsText.java | 18 +++------ .../formats/tiff/taginfos/TagInfoXpString.java | 32 ++++++--------- .../formats/tiff/write/TiffImageWriterBase.java | 3 +- .../imaging/formats/xbm/XbmImageParser.java | 21 +++++----- .../imaging/formats/xpm/XpmImageParser.java | 21 +++++----- .../org/apache/commons/imaging/icc/IccTag.java | 5 ++- .../commons/imaging/icc/IccTagDataTypes.java | 7 ++-- 30 files changed, 161 insertions(+), 232 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java b/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java index f3d4e67..32c603d 100644 --- a/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java @@ -33,8 +33,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; -import java.io.UnsupportedEncodingException; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -290,7 +290,7 @@ public class GifImageParser extends ImageParser { if (formatCompliance != null) { formatCompliance.addComment( "Unknown Application Extension (" - + new String(label, "US-ASCII") + ")", + + new String(label, StandardCharsets.US_ASCII) + ")", completeCode); } @@ -508,7 +508,7 @@ public class GifImageParser extends ImageParser { for (final GifBlock block : blocks) { if (block.blockCode == code) { final byte[] bytes = ((GenericGifBlock) block).appendSubBlocks(); - result.add(new String(bytes, "US-ASCII")); + result.add(new String(bytes, StandardCharsets.US_ASCII)); } } @@ -870,7 +870,7 @@ public class GifImageParser extends ImageParser { bos.write(XMP_APPLICATION_ID_AND_AUTH_CODE.length); // 0x0B bos.write(XMP_APPLICATION_ID_AND_AUTH_CODE); - final byte[] xmpXmlBytes = xmpXml.getBytes("utf-8"); + final byte[] xmpXmlBytes = xmpXml.getBytes(StandardCharsets.UTF_8); bos.write(xmpXmlBytes); // write "magic trailer" @@ -1048,18 +1048,14 @@ public class GifImageParser extends ImageParser { "XMP block in GIF missing magic trailer."); } - try { - // XMP is UTF-8 encoded xml. - final String xml = new String( - blockBytes, - XMP_APPLICATION_ID_AND_AUTH_CODE.length, - blockBytes.length - - (XMP_APPLICATION_ID_AND_AUTH_CODE.length + GIF_MAGIC_TRAILER.length), - "utf-8"); - result.add(xml); - } catch (final UnsupportedEncodingException e) { - throw new ImageReadException("Invalid XMP Block in GIF.", e); - } + // XMP is UTF-8 encoded xml. + final String xml = new String( + blockBytes, + XMP_APPLICATION_ID_AND_AUTH_CODE.length, + blockBytes.length + - (XMP_APPLICATION_ID_AND_AUTH_CODE.length + GIF_MAGIC_TRAILER.length), + StandardCharsets.UTF_8); + result.add(xml); } if (result.size() < 1) { http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/icns/IcnsType.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/icns/IcnsType.java b/src/main/java/org/apache/commons/imaging/formats/icns/IcnsType.java index 276da92..7f71b9c 100644 --- a/src/main/java/org/apache/commons/imaging/formats/icns/IcnsType.java +++ b/src/main/java/org/apache/commons/imaging/formats/icns/IcnsType.java @@ -16,7 +16,7 @@ */ package org.apache.commons.imaging.formats.icns; -import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; enum IcnsType { @@ -166,12 +166,7 @@ enum IcnsType { } public static int typeAsInt(final String type) { - byte[] bytes; - try { - bytes = type.getBytes("US-ASCII"); - } catch (final UnsupportedEncodingException unsupportedEncodingException) { - throw new IllegalArgumentException("Your Java doesn't support US-ASCII", unsupportedEncodingException); - } + byte[] bytes = type.getBytes(StandardCharsets.US_ASCII); if (bytes.length != 4) { throw new IllegalArgumentException("Invalid ICNS type"); } @@ -187,10 +182,6 @@ enum IcnsType { bytes[1] = (byte) (0xff & (type >> 16)); bytes[2] = (byte) (0xff & (type >> 8)); bytes[3] = (byte) (0xff & type); - try { - return new String(bytes, "US-ASCII"); - } catch (final UnsupportedEncodingException unsupportedEncodingException) { - throw new IllegalArgumentException("Your Java doesn't support US-ASCII", unsupportedEncodingException); - } + return new String(bytes, StandardCharsets.US_ASCII); } } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java index bcd54f2..c49a739 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java @@ -20,8 +20,8 @@ import java.awt.Dimension; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.PrintWriter; -import java.io.UnsupportedEncodingException; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import java.text.NumberFormat; import java.util.ArrayList; import java.util.Arrays; @@ -796,10 +796,7 @@ public class JpegImageParser extends ImageParser { for (final Segment commentSegment : commentSegments) { final ComSegment comSegment = (ComSegment) commentSegment; String comment = ""; - try { - comment = new String(comSegment.getComment(), "UTF-8"); - } catch (final UnsupportedEncodingException cannotHappen) { // NOPMD - can't happen - } + comment = new String(comSegment.getComment(), StandardCharsets.UTF_8); comments.add(comment); } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcParser.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcParser.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcParser.java index 7e5d687..907dc7e 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcParser.java @@ -29,6 +29,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -230,7 +231,7 @@ public class IptcParser extends BinaryFileParser { // continue; // } - final String value = new String(recordData, "ISO-8859-1"); + final String value = new String(recordData, StandardCharsets.ISO_8859_1); final IptcType iptcType = IptcTypeLookup.getIptcType(recordType); @@ -433,8 +434,8 @@ public class IptcParser extends BinaryFileParser { } bos.write(element.iptcType.getType()); - final byte[] recordData = element.getValue().getBytes("ISO-8859-1"); - if (!new String(recordData, "ISO-8859-1").equals(element.getValue())) { + final byte[] recordData = element.getValue().getBytes(StandardCharsets.ISO_8859_1); + if (!new String(recordData, StandardCharsets.ISO_8859_1).equals(element.getValue())) { throw new ImageWriteException( "Invalid record value, not ISO-8859-1"); } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/App14Segment.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/App14Segment.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/App14Segment.java index 2685666..b5c7a31 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/App14Segment.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/App14Segment.java @@ -19,7 +19,7 @@ package org.apache.commons.imaging.formats.jpeg.segments; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; -import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import static org.apache.commons.imaging.common.BinaryFunctions.*; @@ -33,12 +33,7 @@ public class App14Segment extends AppnSegment { public static final int ADOBE_COLOR_TRANSFORM_YCCK = 2; static { - byte[] adobe = null; - try { - adobe = "Adobe".getBytes("US-ASCII"); - } catch (final UnsupportedEncodingException cannotHappen) { // NOPMD - can't happen - } - ADOBE_PREFIX = adobe; + ADOBE_PREFIX = "Adobe".getBytes(StandardCharsets.US_ASCII); } public App14Segment(final int marker, final byte[] segmentData) throws IOException { http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpParser.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpParser.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpParser.java index 90b28aa..38e2d47 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpParser.java @@ -17,8 +17,8 @@ package org.apache.commons.imaging.formats.jpeg.xmp; -import java.io.UnsupportedEncodingException; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import org.apache.commons.imaging.ImageReadException; import org.apache.commons.imaging.common.BinaryFileParser; @@ -42,12 +42,8 @@ public class JpegXmpParser extends BinaryFileParser { } final int index = JpegConstants.XMP_IDENTIFIER.size(); - try { - // segment data is UTF-8 encoded xml. - return new String(segmentData, index, segmentData.length - index, "utf-8"); - } catch (final UnsupportedEncodingException e) { - throw new ImageReadException("Invalid JPEG XMP Segment.", e); - } + // segment data is UTF-8 encoded xml. + return new String(segmentData, index, segmentData.length - index, StandardCharsets.UTF_8); } } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriter.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriter.java index 4b3656d..d2a67eb 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriter.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriter.java @@ -21,6 +21,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @@ -176,7 +177,7 @@ public class JpegXmpRewriter extends JpegRewriter { pieces = removeXmpSegments(pieces); final List<JFIFPieceSegment> newPieces = new ArrayList<>(); - final byte[] xmpXmlBytes = xmpXml.getBytes("utf-8"); + final byte[] xmpXmlBytes = xmpXml.getBytes(StandardCharsets.UTF_8); int index = 0; while (index < xmpXmlBytes.length) { final int segmentSize = Math.min(xmpXmlBytes.length, JpegConstants.MAX_SEGMENT_SIZE); http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/png/ChunkType.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/png/ChunkType.java b/src/main/java/org/apache/commons/imaging/formats/png/ChunkType.java index cd48648..1346808 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/ChunkType.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/ChunkType.java @@ -16,7 +16,7 @@ */ package org.apache.commons.imaging.formats.png; -import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import org.apache.commons.imaging.common.BinaryFunctions; @@ -89,12 +89,7 @@ public enum ChunkType { private ChunkType() { final char[] chars = name().toCharArray(); - try { - array = name().getBytes("UTF-8"); - } catch (final UnsupportedEncodingException e) { - // will not happen since UTF-8 is one of the StandardCharsets of the Java platform - throw new RuntimeException(e); - } + array = name().getBytes(StandardCharsets.UTF_8); value = BinaryFunctions.charsToQuad(chars[0], chars[1], chars[2], chars[3]); } } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java b/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java index f08f882..0d5869d 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java @@ -20,7 +20,7 @@ import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; -import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -134,21 +134,21 @@ class PngWriter { final ByteArrayOutputStream baos = new ByteArrayOutputStream(); // keyword - baos.write(text.keyword.getBytes("ISO-8859-1")); + baos.write(text.keyword.getBytes(StandardCharsets.ISO_8859_1)); baos.write(0); baos.write(1); // compressed flag, true baos.write(PngConstants.COMPRESSION_DEFLATE_INFLATE); // compression method // language tag - baos.write(text.languageTag.getBytes("ISO-8859-1")); + baos.write(text.languageTag.getBytes(StandardCharsets.ISO_8859_1)); baos.write(0); // translated keyword - baos.write(text.translatedKeyword.getBytes("utf-8")); + baos.write(text.translatedKeyword.getBytes(StandardCharsets.UTF_8)); baos.write(0); - baos.write(deflate(text.text.getBytes("utf-8"))); + baos.write(deflate(text.text.getBytes(StandardCharsets.UTF_8))); writeChunk(os, ChunkType.iTXt, baos.toByteArray()); } @@ -165,14 +165,14 @@ class PngWriter { final ByteArrayOutputStream baos = new ByteArrayOutputStream(); // keyword - baos.write(text.keyword.getBytes("ISO-8859-1")); + baos.write(text.keyword.getBytes(StandardCharsets.ISO_8859_1)); baos.write(0); // compression method baos.write(PngConstants.COMPRESSION_DEFLATE_INFLATE); // text - baos.write(deflate(text.text.getBytes("ISO-8859-1"))); + baos.write(deflate(text.text.getBytes(StandardCharsets.ISO_8859_1))); writeChunk(os, ChunkType.zTXt, baos.toByteArray()); } @@ -189,11 +189,11 @@ class PngWriter { final ByteArrayOutputStream baos = new ByteArrayOutputStream(); // keyword - baos.write(text.keyword.getBytes("ISO-8859-1")); + baos.write(text.keyword.getBytes(StandardCharsets.ISO_8859_1)); baos.write(0); // text - baos.write(text.text.getBytes("ISO-8859-1")); + baos.write(text.text.getBytes(StandardCharsets.ISO_8859_1)); writeChunk(os, ChunkType.tEXt, baos.toByteArray()); } @@ -209,13 +209,8 @@ class PngWriter { } private boolean isValidISO_8859_1(final String s) { - try { - final String roundtrip = new String(s.getBytes("ISO-8859-1"), "ISO-8859-1"); - return s.equals(roundtrip); - } catch (final UnsupportedEncodingException e) { - // should never be thrown. - throw new RuntimeException("Error parsing string.", e); - } + final String roundtrip = new String(s.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.ISO_8859_1); + return s.equals(roundtrip); } private void writeChunkXmpiTXt(final OutputStream os, final String xmpXml) @@ -224,7 +219,7 @@ class PngWriter { final ByteArrayOutputStream baos = new ByteArrayOutputStream(); // keyword - baos.write(PngConstants.XMP_KEYWORD.getBytes("ISO-8859-1")); + baos.write(PngConstants.XMP_KEYWORD.getBytes(StandardCharsets.ISO_8859_1)); baos.write(0); baos.write(1); // compressed flag, true @@ -233,10 +228,10 @@ class PngWriter { baos.write(0); // language tag (ignore). TODO // translated keyword - baos.write(PngConstants.XMP_KEYWORD.getBytes("utf-8")); + baos.write(PngConstants.XMP_KEYWORD.getBytes(StandardCharsets.UTF_8)); baos.write(0); - baos.write(deflate(xmpXml.getBytes("utf-8"))); + baos.write(deflate(xmpXml.getBytes(StandardCharsets.UTF_8))); writeChunk(os, ChunkType.iTXt, baos.toByteArray()); } @@ -301,10 +296,10 @@ class PngWriter { baos.write(units); // units per pixel, x-axis - baos.write(String.valueOf(xUPP).getBytes("ISO-8859-1")); + baos.write(String.valueOf(xUPP).getBytes(StandardCharsets.ISO_8859_1)); baos.write(0); - baos.write(String.valueOf(yUPP).getBytes("ISO-8859-1")); + baos.write(String.valueOf(yUPP).getBytes(StandardCharsets.ISO_8859_1)); writeChunk(os, ChunkType.sCAL, baos.toByteArray()); } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java index 8ee50d7..21e476e 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java @@ -18,6 +18,7 @@ package org.apache.commons.imaging.formats.png.chunks; import java.io.ByteArrayInputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.zip.InflaterInputStream; import org.apache.commons.imaging.ImageReadException; @@ -48,7 +49,7 @@ public class PngChunkIccp extends PngChunk { } final byte[] nameBytes = new byte[index]; System.arraycopy(bytes, 0, nameBytes, 0, index); - profileName = new String(nameBytes, "ISO-8859-1"); + profileName = new String(nameBytes, StandardCharsets.ISO_8859_1); compressionMethod = bytes[index + 1]; http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java index bd16af1..73dd19b 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java @@ -18,6 +18,7 @@ package org.apache.commons.imaging.formats.png.chunks; import java.io.ByteArrayInputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.zip.InflaterInputStream; import org.apache.commons.imaging.ImageReadException; @@ -52,7 +53,7 @@ public class PngChunkItxt extends PngTextChunk { "PNG iTXt chunk keyword is not terminated."); } - keyword = new String(bytes, 0, terminator, "ISO-8859-1"); + keyword = new String(bytes, 0, terminator, StandardCharsets.ISO_8859_1); int index = terminator + 1; final int compressionFlag = bytes[index++]; @@ -74,7 +75,7 @@ public class PngChunkItxt extends PngTextChunk { throw new ImageReadException("PNG iTXt chunk language tag is not terminated."); } - languageTag = new String(bytes, index, terminator - index, "ISO-8859-1"); + languageTag = new String(bytes, index, terminator - index, StandardCharsets.ISO_8859_1); index = terminator + 1; terminator = findNull(bytes, index); @@ -82,7 +83,7 @@ public class PngChunkItxt extends PngTextChunk { throw new ImageReadException("PNG iTXt chunk translated keyword is not terminated."); } - translatedKeyword = new String(bytes, index, terminator - index, "utf-8"); + translatedKeyword = new String(bytes, index, terminator - index, StandardCharsets.UTF_8); index = terminator + 1; if (compressed) { @@ -92,10 +93,10 @@ public class PngChunkItxt extends PngTextChunk { System.arraycopy(bytes, index, compressedText, 0, compressedTextLength); text = new String(getStreamBytes( - new InflaterInputStream(new ByteArrayInputStream(compressedText))), "utf-8"); + new InflaterInputStream(new ByteArrayInputStream(compressedText))), StandardCharsets.UTF_8); } else { - text = new String(bytes, index, bytes.length - index, "utf-8"); + text = new String(bytes, index, bytes.length - index, StandardCharsets.UTF_8); } } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java index f4c8823..56f5d4b 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java @@ -19,6 +19,7 @@ package org.apache.commons.imaging.formats.png.chunks; import org.apache.commons.imaging.ImageReadException; import java.io.IOException; +import java.nio.charset.StandardCharsets; import static org.apache.commons.imaging.common.BinaryFunctions.findNull; @@ -42,7 +43,7 @@ public class PngChunkScal extends PngChunk { } final int xIndex = 1; - final String xStr = new String(bytes, xIndex, separator - 1, "ISO-8859-1"); + final String xStr = new String(bytes, xIndex, separator - 1, StandardCharsets.ISO_8859_1); unitsPerPixelXAxis = toDouble(xStr); final int yIndex = separator + 1; @@ -50,7 +51,7 @@ public class PngChunkScal extends PngChunk { throw new ImageReadException("PNG sCAL chunk missing the y axis value."); } - final String yStr = new String(bytes, yIndex, length - yIndex, "ISO-8859-1"); + final String yStr = new String(bytes, yIndex, length - yIndex, StandardCharsets.ISO_8859_1); unitsPerPixelYAxis = toDouble(yStr); } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkText.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkText.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkText.java index 271b237..fd6d9b8 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkText.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkText.java @@ -17,6 +17,7 @@ package org.apache.commons.imaging.formats.png.chunks; import java.io.IOException; +import java.nio.charset.StandardCharsets; import org.apache.commons.imaging.ImageReadException; import org.apache.commons.imaging.formats.png.PngText; @@ -36,10 +37,10 @@ public class PngChunkText extends PngTextChunk { "PNG tEXt chunk keyword is not terminated."); } - keyword = new String(bytes, 0, index, "ISO-8859-1"); + keyword = new String(bytes, 0, index, StandardCharsets.ISO_8859_1); final int textLength = bytes.length - (index + 1); - text = new String(bytes, index + 1, textLength, "ISO-8859-1"); + text = new String(bytes, index + 1, textLength, StandardCharsets.ISO_8859_1); if (getDebug()) { System.out.println("Keyword: " + keyword); http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java index a7afd43..6a90a3f 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java @@ -18,6 +18,7 @@ package org.apache.commons.imaging.formats.png.chunks; import java.io.ByteArrayInputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.zip.InflaterInputStream; import org.apache.commons.imaging.ImageReadException; @@ -41,7 +42,7 @@ public class PngChunkZtxt extends PngTextChunk { "PNG zTXt chunk keyword is unterminated."); } - keyword = new String(bytes, 0, index, "ISO-8859-1"); + keyword = new String(bytes, 0, index, StandardCharsets.ISO_8859_1); index++; final int compressionMethod = bytes[index++]; @@ -55,7 +56,7 @@ public class PngChunkZtxt extends PngTextChunk { final byte[] compressedText = new byte[compressedTextLength]; System.arraycopy(bytes, index, compressedText, 0, compressedTextLength); - text = new String(getStreamBytes(new InflaterInputStream(new ByteArrayInputStream(compressedText))), "ISO-8859-1"); + text = new String(getStreamBytes(new InflaterInputStream(new ByteArrayInputStream(compressedText))), StandardCharsets.ISO_8859_1); } /** http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/pnm/PamWriter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/pnm/PamWriter.java b/src/main/java/org/apache/commons/imaging/formats/pnm/PamWriter.java index e7c34b4..31429aa 100644 --- a/src/main/java/org/apache/commons/imaging/formats/pnm/PamWriter.java +++ b/src/main/java/org/apache/commons/imaging/formats/pnm/PamWriter.java @@ -20,6 +20,7 @@ package org.apache.commons.imaging.formats.pnm; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; +import java.nio.charset.StandardCharsets; import java.util.Map; import org.apache.commons.imaging.ImageWriteException; @@ -37,22 +38,22 @@ class PamWriter implements PnmWriter { final int width = src.getWidth(); final int height = src.getHeight(); - os.write(("WIDTH " + width).getBytes("US-ASCII")); + os.write(("WIDTH " + width).getBytes(StandardCharsets.US_ASCII)); os.write(PnmConstants.PNM_NEWLINE); - os.write(("HEIGHT " + height).getBytes("US-ASCII")); + os.write(("HEIGHT " + height).getBytes(StandardCharsets.US_ASCII)); os.write(PnmConstants.PNM_NEWLINE); - os.write(("DEPTH 4").getBytes("US-ASCII")); + os.write(("DEPTH 4").getBytes(StandardCharsets.US_ASCII)); os.write(PnmConstants.PNM_NEWLINE); - os.write(("MAXVAL 255").getBytes("US-ASCII")); + os.write(("MAXVAL 255").getBytes(StandardCharsets.US_ASCII)); os.write(PnmConstants.PNM_NEWLINE); - os.write(("TUPLTYPE RGB_ALPHA").getBytes("US-ASCII")); + os.write(("TUPLTYPE RGB_ALPHA").getBytes(StandardCharsets.US_ASCII)); os.write(PnmConstants.PNM_NEWLINE); - os.write(("ENDHDR").getBytes("US-ASCII")); + os.write(("ENDHDR").getBytes(StandardCharsets.US_ASCII)); os.write(PnmConstants.PNM_NEWLINE); for (int y = 0; y < height; y++) { http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/pnm/PbmWriter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/pnm/PbmWriter.java b/src/main/java/org/apache/commons/imaging/formats/pnm/PbmWriter.java index 088a038..05df172 100644 --- a/src/main/java/org/apache/commons/imaging/formats/pnm/PbmWriter.java +++ b/src/main/java/org/apache/commons/imaging/formats/pnm/PbmWriter.java @@ -19,6 +19,7 @@ package org.apache.commons.imaging.formats.pnm; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; +import java.nio.charset.StandardCharsets; import java.util.Map; import org.apache.commons.imaging.ImageWriteException; @@ -41,10 +42,10 @@ class PbmWriter implements PnmWriter { final int width = src.getWidth(); final int height = src.getHeight(); - os.write(Integer.toString(width).getBytes("US-ASCII")); + os.write(Integer.toString(width).getBytes(StandardCharsets.US_ASCII)); os.write(PnmConstants.PNM_SEPARATOR); - os.write(Integer.toString(height).getBytes("US-ASCII")); + os.write(Integer.toString(height).getBytes(StandardCharsets.US_ASCII)); os.write(PnmConstants.PNM_NEWLINE); int bitcache = 0; @@ -73,7 +74,7 @@ class PbmWriter implements PnmWriter { bitsInCache = 0; } } else { - os.write(Integer.toString(sample).getBytes("US-ASCII")); // max + os.write(Integer.toString(sample).getBytes(StandardCharsets.US_ASCII)); // max // component // value os.write(PnmConstants.PNM_SEPARATOR); http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/pnm/PgmWriter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/pnm/PgmWriter.java b/src/main/java/org/apache/commons/imaging/formats/pnm/PgmWriter.java index caed6a7..97563a0 100644 --- a/src/main/java/org/apache/commons/imaging/formats/pnm/PgmWriter.java +++ b/src/main/java/org/apache/commons/imaging/formats/pnm/PgmWriter.java @@ -19,6 +19,7 @@ package org.apache.commons.imaging.formats.pnm; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; +import java.nio.charset.StandardCharsets; import java.util.Map; import org.apache.commons.imaging.ImageWriteException; @@ -43,13 +44,13 @@ class PgmWriter implements PnmWriter { final int width = src.getWidth(); final int height = src.getHeight(); - os.write(Integer.toString(width).getBytes("US-ASCII")); + os.write(Integer.toString(width).getBytes(StandardCharsets.US_ASCII)); os.write(PnmConstants.PNM_SEPARATOR); - os.write(Integer.toString(height).getBytes("US-ASCII")); + os.write(Integer.toString(height).getBytes(StandardCharsets.US_ASCII)); os.write(PnmConstants.PNM_SEPARATOR); - os.write(Integer.toString(255).getBytes("US-ASCII")); // max component value + os.write(Integer.toString(255).getBytes(StandardCharsets.US_ASCII)); // max component value os.write(PnmConstants.PNM_NEWLINE); for (int y = 0; y < height; y++) { @@ -63,7 +64,7 @@ class PgmWriter implements PnmWriter { if (rawbits) { os.write((byte) sample); } else { - os.write(Integer.toString(sample).getBytes("US-ASCII")); // max component value + os.write(Integer.toString(sample).getBytes(StandardCharsets.US_ASCII)); // max component value os.write(PnmConstants.PNM_SEPARATOR); } } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/pnm/PpmWriter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/pnm/PpmWriter.java b/src/main/java/org/apache/commons/imaging/formats/pnm/PpmWriter.java index 146f2eb..1bea15f 100644 --- a/src/main/java/org/apache/commons/imaging/formats/pnm/PpmWriter.java +++ b/src/main/java/org/apache/commons/imaging/formats/pnm/PpmWriter.java @@ -19,6 +19,7 @@ package org.apache.commons.imaging.formats.pnm; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; +import java.nio.charset.StandardCharsets; import java.util.Map; import org.apache.commons.imaging.ImageWriteException; @@ -43,13 +44,13 @@ class PpmWriter implements PnmWriter { final int width = src.getWidth(); final int height = src.getHeight(); - os.write(Integer.toString(width).getBytes("US-ASCII")); + os.write(Integer.toString(width).getBytes(StandardCharsets.US_ASCII)); os.write(PnmConstants.PNM_SEPARATOR); - os.write(Integer.toString(height).getBytes("US-ASCII")); + os.write(Integer.toString(height).getBytes(StandardCharsets.US_ASCII)); os.write(PnmConstants.PNM_SEPARATOR); - os.write(Integer.toString(255).getBytes("US-ASCII")); // max component value + os.write(Integer.toString(255).getBytes(StandardCharsets.US_ASCII)); // max component value os.write(PnmConstants.PNM_NEWLINE); for (int y = 0; y < height; y++) { @@ -64,14 +65,14 @@ class PpmWriter implements PnmWriter { os.write((byte) green); os.write((byte) blue); } else { - os.write(Integer.toString(red).getBytes("US-ASCII")); // max component + os.write(Integer.toString(red).getBytes(StandardCharsets.US_ASCII)); // max component // value os.write(PnmConstants.PNM_SEPARATOR); - os.write(Integer.toString(green).getBytes("US-ASCII")); // max + os.write(Integer.toString(green).getBytes(StandardCharsets.US_ASCII)); // max // component // value os.write(PnmConstants.PNM_SEPARATOR); - os.write(Integer.toString(blue).getBytes("US-ASCII")); // max component + os.write(Integer.toString(blue).getBytes(StandardCharsets.US_ASCII)); // max component // value os.write(PnmConstants.PNM_SEPARATOR); } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/psd/ImageResourceBlock.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/psd/ImageResourceBlock.java b/src/main/java/org/apache/commons/imaging/formats/psd/ImageResourceBlock.java index 56c41ad..73c24e7 100644 --- a/src/main/java/org/apache/commons/imaging/formats/psd/ImageResourceBlock.java +++ b/src/main/java/org/apache/commons/imaging/formats/psd/ImageResourceBlock.java @@ -16,7 +16,7 @@ */ package org.apache.commons.imaging.formats.psd; -import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import org.apache.commons.imaging.util.Debug; @@ -31,8 +31,8 @@ class ImageResourceBlock { this.data = data; } - String getName() throws UnsupportedEncodingException { + String getName() { Debug.debug("getName: " + nameData.length); - return new String(nameData, "ISO-8859-1"); + return new String(nameData, StandardCharsets.ISO_8859_1); } } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java b/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java index 5dc1417..3ebf877 100644 --- a/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java @@ -29,8 +29,8 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; -import java.io.UnsupportedEncodingException; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -549,7 +549,7 @@ public class PsdImageParser extends ImageParser { final ImageResourceBlock block = blocks.get(i); pw.println("\t" + i + " (" + Integer.toHexString(block.id) + ", " + "'" - + new String(block.nameData, "ISO-8859-1") + + new String(block.nameData, StandardCharsets.ISO_8859_1) + "' (" + block.nameData.length + "), " @@ -729,12 +729,8 @@ public class PsdImageParser extends ImageParser { final ImageResourceBlock block = xmpBlocks.get(0); - try { - // segment data is UTF-8 encoded xml. - return new String(block.data, 0, block.data.length, "utf-8"); - } catch (final UnsupportedEncodingException e) { - throw new ImageReadException("Invalid JPEG XMP Segment.", e); - } + // segment data is UTF-8 encoded xml. + return new String(block.data, 0, block.data.length, StandardCharsets.UTF_8); } } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java index 5aa653f..d706db0 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java @@ -22,8 +22,8 @@ import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; -import java.io.UnsupportedEncodingException; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -315,13 +315,8 @@ public class TiffImageParser extends ImageParser { return null; } - try { - // segment data is UTF-8 encoded xml. - final String xml = new String(bytes, "utf-8"); - return xml; - } catch (final UnsupportedEncodingException e) { - throw new ImageReadException("Invalid JPEG XMP Segment.", e); - } + // segment data is UTF-8 encoded xml. + return new String(bytes, StandardCharsets.UTF_8); } @Override http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/tiff/fieldtypes/FieldTypeAscii.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/fieldtypes/FieldTypeAscii.java b/src/main/java/org/apache/commons/imaging/formats/tiff/fieldtypes/FieldTypeAscii.java index cc7e71d..2ab66e5 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/fieldtypes/FieldTypeAscii.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/fieldtypes/FieldTypeAscii.java @@ -16,8 +16,8 @@ */ package org.apache.commons.imaging.formats.tiff.fieldtypes; -import java.io.UnsupportedEncodingException; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import org.apache.commons.imaging.ImageWriteException; import org.apache.commons.imaging.formats.tiff.TiffField; @@ -47,23 +47,17 @@ public class FieldTypeAscii extends FieldType { // Exiftool however allows you to configure the charset used. for (int i = 0; i < bytes.length; i++) { if (bytes[i] == 0) { - try { - final String string = new String(bytes, nextStringPos, i - - nextStringPos, "UTF-8"); - strings[stringsAdded++] = string; - } catch (final UnsupportedEncodingException unsupportedEncoding) { // NOPMD - } + final String string = new String(bytes, nextStringPos, i + - nextStringPos, StandardCharsets.UTF_8); + strings[stringsAdded++] = string; nextStringPos = i + 1; } } if (nextStringPos < bytes.length) { // Buggy file, string wasn't null terminated - try { - final String string = new String(bytes, nextStringPos, bytes.length - - nextStringPos, "UTF-8"); - strings[stringsAdded++] = string; - } catch (final UnsupportedEncodingException unsupportedEncoding) { // NOPMD - } + final String string = new String(bytes, nextStringPos, bytes.length + - nextStringPos, StandardCharsets.UTF_8); + strings[stringsAdded++] = string; } if (strings.length == 1) { return strings[0]; @@ -80,12 +74,7 @@ public class FieldTypeAscii extends FieldType { result[result.length - 1] = 0; return result; } else if (o instanceof String) { - byte[] bytes; - try { - bytes = ((String) o).getBytes("UTF-8"); - } catch (final UnsupportedEncodingException cannotHappen) { - throw new IllegalArgumentException("Your Java doesn't support UTF-8", cannotHappen); - } + byte[] bytes = ((String) o).getBytes(StandardCharsets.UTF_8); final byte[] result = new byte[bytes.length + 1]; System.arraycopy(bytes, 0, result, 0, bytes.length); result[result.length - 1] = 0; @@ -94,23 +83,13 @@ public class FieldTypeAscii extends FieldType { final String[] strings = (String[]) o; int totalLength = 0; for (final String string : strings) { - byte[] bytes; - try { - bytes = string.getBytes("UTF-8"); - } catch (final UnsupportedEncodingException cannotHappen) { - throw new IllegalArgumentException("Your Java doesn't support UTF-8", cannotHappen); - } + byte[] bytes = string.getBytes(StandardCharsets.UTF_8); totalLength += (bytes.length + 1); } final byte[] result = new byte[totalLength]; int position = 0; for (final String string : strings) { - byte[] bytes; - try { - bytes = string.getBytes("UTF-8"); - } catch (final UnsupportedEncodingException cannotHappen) { - throw new IllegalArgumentException("Your Java doesn't support UTF-8", cannotHappen); - } + byte[] bytes = string.getBytes(StandardCharsets.UTF_8); System.arraycopy(bytes, 0, result, position, bytes.length); position += (bytes.length + 1); } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoAscii.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoAscii.java b/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoAscii.java index 42dc7d1..a7d7948 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoAscii.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoAscii.java @@ -16,8 +16,8 @@ */ package org.apache.commons.imaging.formats.tiff.taginfos; -import java.io.UnsupportedEncodingException; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import org.apache.commons.imaging.ImageWriteException; import org.apache.commons.imaging.formats.tiff.constants.TiffDirectoryType; @@ -45,23 +45,17 @@ public class TagInfoAscii extends TagInfo { // Exiftool however allows you to configure the charset used. for (int i = 0; i < bytes.length; i++) { if (bytes[i] == 0) { - try { - final String string = new String(bytes, nextStringPos, i - - nextStringPos, "UTF-8"); - strings[stringsAdded++] = string; - } catch (final UnsupportedEncodingException unsupportedEncoding) { // NOPMD - } + final String string = new String(bytes, nextStringPos, i + - nextStringPos, StandardCharsets.UTF_8); + strings[stringsAdded++] = string; nextStringPos = i + 1; } } if (nextStringPos < bytes.length) { // Buggy file, string wasn't null terminated - try { - final String string = new String(bytes, nextStringPos, bytes.length - - nextStringPos, "UTF-8"); - strings[stringsAdded++] = string; - } catch (final UnsupportedEncodingException unsupportedEncoding) { // NOPMD - } + final String string = new String(bytes, nextStringPos, bytes.length + - nextStringPos, StandardCharsets.UTF_8); + strings[stringsAdded++] = string; } return strings; } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoGpsText.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoGpsText.java b/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoGpsText.java index b34e64f..8973dae 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoGpsText.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoGpsText.java @@ -18,6 +18,7 @@ package org.apache.commons.imaging.formats.tiff.taginfos; import java.io.UnsupportedEncodingException; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import org.apache.commons.imaging.ImageReadException; import org.apache.commons.imaging.ImageWriteException; @@ -147,12 +148,8 @@ public final class TagInfoGpsText extends TagInfo { final byte[] bytes = entry.getByteArrayValue(); if (bytes.length < 8) { - try { - // try ASCII, with NO prefix. - return new String(bytes, "US-ASCII"); - } catch (final UnsupportedEncodingException e) { - throw new ImageReadException("GPS text field missing encoding prefix.", e); - } + // try ASCII, with NO prefix. + return new String(bytes, StandardCharsets.US_ASCII); } for (final TextEncoding encoding : TEXT_ENCODINGS) { @@ -176,12 +173,7 @@ public final class TagInfoGpsText extends TagInfo { } } - try { - // try ASCII, with NO prefix. - return new String(bytes, "US-ASCII"); - } catch (final UnsupportedEncodingException e) { - throw new ImageReadException("Unknown GPS text encoding prefix.", e); - } - + // try ASCII, with NO prefix. + return new String(bytes, StandardCharsets.US_ASCII); } } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoXpString.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoXpString.java b/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoXpString.java index a577fd4..7291d4c 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoXpString.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoXpString.java @@ -16,8 +16,8 @@ */ package org.apache.commons.imaging.formats.tiff.taginfos; -import java.io.UnsupportedEncodingException; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import org.apache.commons.imaging.ImageReadException; import org.apache.commons.imaging.ImageWriteException; @@ -41,14 +41,10 @@ public class TagInfoXpString extends TagInfo { throw new ImageWriteException("Text value not String", value); } final String s = (String) value; - try { - final byte[] bytes = s.getBytes("UTF-16LE"); - final byte[] paddedBytes = new byte[bytes.length + 2]; - System.arraycopy(bytes, 0, paddedBytes, 0, bytes.length); - return paddedBytes; - } catch (final UnsupportedEncodingException cannotHappen) { - return null; - } + final byte[] bytes = s.getBytes(StandardCharsets.UTF_16LE); + final byte[] paddedBytes = new byte[bytes.length + 2]; + System.arraycopy(bytes, 0, paddedBytes, 0, bytes.length); + return paddedBytes; } @Override @@ -56,17 +52,13 @@ public class TagInfoXpString extends TagInfo { if (entry.getFieldType() != FieldType.BYTE) { throw new ImageReadException("Text field not encoded as bytes."); } - try { - final byte[] bytes = entry.getByteArrayValue(); - final int length; - if (bytes.length >= 2 && bytes[bytes.length - 1] == 0 && bytes[bytes.length - 2] == 0) { - length = bytes.length - 2; - } else { - length = bytes.length; - } - return new String(bytes, 0, length, "UTF-16LE"); - } catch (final UnsupportedEncodingException cannotHappen) { - return null; + final byte[] bytes = entry.getByteArrayValue(); + final int length; + if (bytes.length >= 2 && bytes[bytes.length - 1] == 0 && bytes[bytes.length - 2] == 0) { + length = bytes.length - 2; + } else { + length = bytes.length; } + return new String(bytes, 0, length, StandardCharsets.UTF_16LE); } } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterBase.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterBase.java b/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterBase.java index aeffa81..6c09b49 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterBase.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterBase.java @@ -20,6 +20,7 @@ import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -480,7 +481,7 @@ public abstract class TiffImageWriterBase { } if (null != xmpXml) { - final byte[] xmpXmlBytes = xmpXml.getBytes("utf-8"); + final byte[] xmpXmlBytes = xmpXml.getBytes(StandardCharsets.UTF_8); directory.add(TiffTagConstants.TIFF_TAG_XMP, xmpXmlBytes); } http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImageParser.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImageParser.java b/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImageParser.java index c263dbc..01c8809 100644 --- a/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImageParser.java @@ -30,6 +30,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -342,9 +343,9 @@ public class XbmImageParser extends ImageParser { final String name = randomName(); - os.write(("#define " + name + "_width " + src.getWidth() + "\n").getBytes("US-ASCII")); - os.write(("#define " + name + "_height " + src.getHeight() + "\n").getBytes("US-ASCII")); - os.write(("static unsigned char " + name + "_bits[] = {").getBytes("US-ASCII")); + os.write(("#define " + name + "_width " + src.getWidth() + "\n").getBytes(StandardCharsets.US_ASCII)); + os.write(("#define " + name + "_height " + src.getHeight() + "\n").getBytes(StandardCharsets.US_ASCII)); + os.write(("static unsigned char " + name + "_bits[] = {").getBytes(StandardCharsets.US_ASCII)); int bitcache = 0; int bitsInCache = 0; @@ -365,33 +366,33 @@ public class XbmImageParser extends ImageParser { bitcache |= (sample << bitsInCache); ++bitsInCache; if (bitsInCache == 8) { - os.write(separator.getBytes("US-ASCII")); + os.write(separator.getBytes(StandardCharsets.US_ASCII)); separator = ","; if (written == 12) { - os.write("\n ".getBytes("US-ASCII")); + os.write("\n ".getBytes(StandardCharsets.US_ASCII)); written = 0; } - os.write(toPrettyHex(bitcache).getBytes("US-ASCII")); + os.write(toPrettyHex(bitcache).getBytes(StandardCharsets.US_ASCII)); bitcache = 0; bitsInCache = 0; ++written; } } if (bitsInCache != 0) { - os.write(separator.getBytes("US-ASCII")); + os.write(separator.getBytes(StandardCharsets.US_ASCII)); separator = ","; if (written == 12) { - os.write("\n ".getBytes("US-ASCII")); + os.write("\n ".getBytes(StandardCharsets.US_ASCII)); written = 0; } - os.write(toPrettyHex(bitcache).getBytes("US-ASCII")); + os.write(toPrettyHex(bitcache).getBytes(StandardCharsets.US_ASCII)); bitcache = 0; bitsInCache = 0; ++written; } } - os.write("\n};\n".getBytes("US-ASCII")); + os.write("\n};\n".getBytes(StandardCharsets.US_ASCII)); } /** http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java b/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java index 291d8d2..7c78b45 100644 --- a/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java @@ -32,6 +32,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -79,7 +80,7 @@ public class XpmImageParser extends ImageParser { throw new ImageReadException("Couldn't find rgb.txt in our resources"); } final Map<String, Integer> colors = new HashMap<>(); - try (InputStreamReader isReader = new InputStreamReader(rgbTxtStream, "US-ASCII"); + try (InputStreamReader isReader = new InputStreamReader(rgbTxtStream, StandardCharsets.US_ASCII); BufferedReader reader = new BufferedReader(isReader)) { String line; while ((line = reader.readLine()) != null) { @@ -676,12 +677,12 @@ public class XpmImageParser extends ImageParser { } String line = "/* XPM */\n"; - os.write(line.getBytes("US-ASCII")); + os.write(line.getBytes(StandardCharsets.US_ASCII)); line = "static char *" + randomName() + "[] = {\n"; - os.write(line.getBytes("US-ASCII")); + os.write(line.getBytes(StandardCharsets.US_ASCII)); line = "\"" + src.getWidth() + " " + src.getHeight() + " " + colors + " " + charsPerPixel + "\",\n"; - os.write(line.getBytes("US-ASCII")); + os.write(line.getBytes(StandardCharsets.US_ASCII)); for (int i = 0; i < colors; i++) { String color; @@ -692,15 +693,15 @@ public class XpmImageParser extends ImageParser { } line = "\"" + pixelsForIndex(i, charsPerPixel) + " c " + color + "\",\n"; - os.write(line.getBytes("US-ASCII")); + os.write(line.getBytes(StandardCharsets.US_ASCII)); } String separator = ""; for (int y = 0; y < src.getHeight(); y++) { - os.write(separator.getBytes("US-ASCII")); + os.write(separator.getBytes(StandardCharsets.US_ASCII)); separator = ",\n"; line = "\""; - os.write(line.getBytes("US-ASCII")); + os.write(line.getBytes(StandardCharsets.US_ASCII)); for (int x = 0; x < src.getWidth(); x++) { final int argb = src.getRGB(x, y); if ((argb & 0xff000000) == 0) { @@ -710,14 +711,14 @@ public class XpmImageParser extends ImageParser { palette.getPaletteIndex(0xffffff & argb), charsPerPixel); } - os.write(line.getBytes("US-ASCII")); + os.write(line.getBytes(StandardCharsets.US_ASCII)); } line = "\""; - os.write(line.getBytes("US-ASCII")); + os.write(line.getBytes(StandardCharsets.US_ASCII)); } line = "\n};\n"; - os.write(line.getBytes("US-ASCII")); + os.write(line.getBytes(StandardCharsets.US_ASCII)); } /** http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/icc/IccTag.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/icc/IccTag.java b/src/main/java/org/apache/commons/imaging/icc/IccTag.java index 87d8dce..c22970d 100644 --- a/src/main/java/org/apache/commons/imaging/icc/IccTag.java +++ b/src/main/java/org/apache/commons/imaging/icc/IccTag.java @@ -23,6 +23,7 @@ import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.nio.ByteOrder; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import org.apache.commons.imaging.ImageReadException; @@ -89,7 +90,7 @@ public class IccTag { (byte) (0xff & (signature >> 24)), (byte) (0xff & (signature >> 16)), (byte) (0xff & (signature >> 8)), - (byte) (0xff & (signature >> 0)), }, "US-ASCII") + (byte) (0xff & (signature >> 0)), }, StandardCharsets.US_ASCII) + ")"); if (data == null) { @@ -105,7 +106,7 @@ public class IccTag { (byte) (0xff & (dataTypeSignature >> 24)), (byte) (0xff & (dataTypeSignature >> 16)), (byte) (0xff & (dataTypeSignature >> 8)), - (byte) (0xff & (dataTypeSignature >> 0)), }, "US-ASCII") + (byte) (0xff & (dataTypeSignature >> 0)), }, StandardCharsets.US_ASCII) + ")"); if (itdt == null) { http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/icc/IccTagDataTypes.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/imaging/icc/IccTagDataTypes.java b/src/main/java/org/apache/commons/imaging/icc/IccTagDataTypes.java index 4c4d5d1..1c70c3a 100644 --- a/src/main/java/org/apache/commons/imaging/icc/IccTagDataTypes.java +++ b/src/main/java/org/apache/commons/imaging/icc/IccTagDataTypes.java @@ -22,6 +22,7 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import org.apache.commons.imaging.ImageReadException; @@ -40,7 +41,7 @@ public enum IccTagDataTypes implements IccTagDataType { final int stringLength = read4Bytes("stringLength", bis, "ICC: corrupt tag data", ByteOrder.BIG_ENDIAN); // bis.readByteArray("ignore", bytes.length -12, "none"); - final String s = new String(bytes, 12, stringLength - 1, "US-ASCII"); + final String s = new String(bytes, 12, stringLength - 1, StandardCharsets.US_ASCII); System.out.println(prefix + "s: '" + s + "'"); } } @@ -91,7 +92,7 @@ public enum IccTagDataTypes implements IccTagDataType { (byte) (0xff & (thesignature >> 24)), (byte) (0xff & (thesignature >> 16)), (byte) (0xff & (thesignature >> 8)), - (byte) (0xff & (thesignature >> 0)), }, "US-ASCII") + (byte) (0xff & (thesignature >> 0)), }, StandardCharsets.US_ASCII) + ")"); } } @@ -107,7 +108,7 @@ public enum IccTagDataTypes implements IccTagDataType { try (InputStream bis = new ByteArrayInputStream(bytes)) { read4Bytes("type_signature", bis, "ICC: corrupt tag data", ByteOrder.BIG_ENDIAN); read4Bytes("ignore", bis, "ICC: corrupt tag data", ByteOrder.BIG_ENDIAN); - final String s = new String(bytes, 8, bytes.length - 8, "US-ASCII"); + final String s = new String(bytes, 8, bytes.length - 8, StandardCharsets.US_ASCII); System.out.println(prefix + "s: '" + s + "'"); } }