Skip to content

Commit 2721380

Browse files
TimPushkinAlexey Bakhtin
authored andcommitted
8271456: Avoid looking up standard charsets in "java.desktop" module
Reviewed-by: abakhtin, sgehwolf Backport-of: 6b55ef3
1 parent 7c21bad commit 2721380

33 files changed

+493
-423
lines changed

src/java.desktop/macosx/classes/com/apple/laf/AquaFileView.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,20 @@
2525

2626
package com.apple.laf;
2727

28-
import java.io.*;
29-
import java.util.*;
28+
import java.io.File;
29+
import java.io.IOException;
30+
import java.util.LinkedHashMap;
31+
import java.util.LinkedList;
32+
import java.util.Map;
3033
import java.util.Map.Entry;
3134

3235
import javax.swing.Icon;
3336
import javax.swing.filechooser.FileView;
3437

3538
import com.apple.laf.AquaUtils.RecyclableSingleton;
3639

40+
import static java.nio.charset.StandardCharsets.UTF_8;
41+
3742
@SuppressWarnings("serial") // JDK implementation class
3843
class AquaFileView extends FileView {
3944
private static final boolean DEBUG = false;
@@ -106,11 +111,7 @@ static class FileInfo {
106111
FileInfo(final File file){
107112
isDirectory = file.isDirectory();
108113
absolutePath = file.getAbsolutePath();
109-
try {
110-
pathBytes = absolutePath.getBytes("UTF-8");
111-
} catch (final UnsupportedEncodingException e) {
112-
pathBytes = new byte[0];
113-
}
114+
pathBytes = absolutePath.getBytes(UTF_8);
114115
}
115116
}
116117

src/java.desktop/macosx/classes/sun/lwawt/macosx/CDataTransferer.java

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
21
/*
3-
* Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
43
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
54
*
65
* This code is free software; you can redistribute it and/or modify it
@@ -26,20 +25,27 @@
2625

2726
package sun.lwawt.macosx;
2827

29-
import java.awt.*;
30-
31-
import java.io.*;
32-
import java.net.URI;
33-
import java.net.URISyntaxException;
28+
import java.awt.Image;
29+
import java.awt.datatransfer.DataFlavor;
30+
import java.awt.datatransfer.Transferable;
31+
import java.awt.datatransfer.UnsupportedFlavorException;
32+
import java.io.ByteArrayOutputStream;
33+
import java.io.IOException;
3434
import java.net.URL;
3535
import java.nio.charset.Charset;
3636
import java.text.Normalizer;
3737
import java.text.Normalizer.Form;
38-
import java.util.*;
39-
import java.util.regex.*;
40-
import java.awt.datatransfer.*;
41-
import java.nio.charset.StandardCharsets;
42-
import sun.awt.datatransfer.*;
38+
import java.util.ArrayList;
39+
import java.util.Collections;
40+
import java.util.HashMap;
41+
import java.util.Map;
42+
import java.util.regex.Matcher;
43+
import java.util.regex.Pattern;
44+
45+
import sun.awt.datatransfer.DataTransferer;
46+
import sun.awt.datatransfer.ToolkitThreadBlockedHandler;
47+
48+
import static java.nio.charset.StandardCharsets.UTF_8;
4349

4450
public class CDataTransferer extends DataTransferer {
4551
private static final Map<String, Long> predefinedClipboardNameMap;
@@ -133,7 +139,7 @@ public Object translateBytes(byte[] bytes, DataFlavor flavor,
133139
String charset = Charset.defaultCharset().name();
134140
if (transferable != null && transferable.isDataFlavorSupported(javaTextEncodingFlavor)) {
135141
try {
136-
charset = new String((byte[]) transferable.getTransferData(javaTextEncodingFlavor), StandardCharsets.UTF_8);
142+
charset = new String((byte[]) transferable.getTransferData(javaTextEncodingFlavor), UTF_8);
137143
} catch (UnsupportedFlavorException cannotHappen) {
138144
}
139145
}
@@ -160,7 +166,8 @@ public Object translateBytes(byte[] bytes, DataFlavor flavor,
160166
// class by base method
161167
format = CF_STRING;
162168
} else if (format == CF_STRING) {
163-
bytes = Normalizer.normalize(new String(bytes, "UTF8"), Form.NFC).getBytes("UTF8");
169+
String src = new String(bytes, UTF_8);
170+
bytes = Normalizer.normalize(src, Form.NFC).getBytes(UTF_8);
164171
}
165172

166173
return super.translateBytes(bytes, flavor, format, transferable);

src/java.desktop/share/classes/com/sun/imageio/plugins/bmp/BMPMetadata.java

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2003, 2021, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -25,19 +25,15 @@
2525

2626
package com.sun.imageio.plugins.bmp;
2727

28-
import java.io.UnsupportedEncodingException;
29-
import java.util.ArrayList;
30-
import java.util.Iterator;
31-
import java.util.List;
32-
import javax.imageio.ImageTypeSpecifier;
3328
import javax.imageio.metadata.IIOMetadata;
34-
import javax.imageio.metadata.IIOMetadataNode;
35-
import javax.imageio.metadata.IIOMetadataFormat;
3629
import javax.imageio.metadata.IIOMetadataFormatImpl;
37-
import org.w3c.dom.Node;
38-
import com.sun.imageio.plugins.common.I18N;
30+
import javax.imageio.metadata.IIOMetadataNode;
3931

32+
import com.sun.imageio.plugins.common.I18N;
4033
import com.sun.imageio.plugins.common.ImageUtil;
34+
import org.w3c.dom.Node;
35+
36+
import static java.nio.charset.StandardCharsets.ISO_8859_1;
4137

4238
public class BMPMetadata extends IIOMetadata implements BMPConstants {
4339
public static final String nativeMetadataFormatName =
@@ -114,11 +110,7 @@ public Node getAsTree(String formatName) {
114110
}
115111

116112
private String toISO8859(byte[] data) {
117-
try {
118-
return new String(data, "ISO-8859-1");
119-
} catch (UnsupportedEncodingException e) {
120-
return "";
121-
}
113+
return new String(data, ISO_8859_1);
122114
}
123115

124116
private Node getNativeTree() {

src/java.desktop/share/classes/com/sun/imageio/plugins/gif/GIFImageMetadata.java

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -25,18 +25,17 @@
2525

2626
package com.sun.imageio.plugins.gif;
2727

28-
import java.io.UnsupportedEncodingException;
29-
import java.util.ArrayList;
3028
import java.util.Iterator;
3129
import java.util.List;
32-
import javax.imageio.ImageTypeSpecifier;
30+
3331
import javax.imageio.metadata.IIOInvalidTreeException;
34-
import javax.imageio.metadata.IIOMetadata;
35-
import javax.imageio.metadata.IIOMetadataNode;
36-
import javax.imageio.metadata.IIOMetadataFormat;
3732
import javax.imageio.metadata.IIOMetadataFormatImpl;
33+
import javax.imageio.metadata.IIOMetadataNode;
34+
3835
import org.w3c.dom.Node;
3936

37+
import static java.nio.charset.StandardCharsets.ISO_8859_1;
38+
4039
public class GIFImageMetadata extends GIFMetadata {
4140

4241
// package scope
@@ -132,11 +131,7 @@ public Node getAsTree(String formatName) {
132131
}
133132

134133
private String toISO8859(byte[] data) {
135-
try {
136-
return new String(data, "ISO-8859-1");
137-
} catch (UnsupportedEncodingException e) {
138-
return "";
139-
}
134+
return new String(data, ISO_8859_1);
140135
}
141136

142137
private Node getNativeTree() {
@@ -384,12 +379,7 @@ public IIOMetadataNode getStandardTextNode() {
384379

385380
while (commentIter.hasNext()) {
386381
byte[] comment = commentIter.next();
387-
String s = null;
388-
try {
389-
s = new String(comment, "ISO-8859-1");
390-
} catch (UnsupportedEncodingException e) {
391-
throw new RuntimeException("Encoding ISO-8859-1 unknown!");
392-
}
382+
String s = new String(comment, ISO_8859_1);
393383

394384
node = new IIOMetadataNode("TextEntry");
395385
node.setAttribute("value", s);

src/java.desktop/share/classes/com/sun/imageio/plugins/gif/GIFWritableImageMetadata.java

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2005, 2021, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -25,19 +25,17 @@
2525

2626
package com.sun.imageio.plugins.gif;
2727

28-
import java.io.UnsupportedEncodingException;
2928
import java.nio.charset.Charset;
3029
import java.util.ArrayList;
31-
import java.util.Iterator;
32-
import java.util.List;
33-
import javax.imageio.ImageTypeSpecifier;
30+
3431
import javax.imageio.metadata.IIOInvalidTreeException;
35-
import javax.imageio.metadata.IIOMetadata;
36-
import javax.imageio.metadata.IIOMetadataNode;
37-
import javax.imageio.metadata.IIOMetadataFormat;
3832
import javax.imageio.metadata.IIOMetadataFormatImpl;
33+
import javax.imageio.metadata.IIOMetadataNode;
34+
3935
import org.w3c.dom.Node;
4036

37+
import static java.nio.charset.StandardCharsets.ISO_8859_1;
38+
4139
class GIFWritableImageMetadata extends GIFImageMetadata {
4240

4341
// package scope
@@ -95,11 +93,7 @@ public void reset() {
9593
}
9694

9795
private byte[] fromISO8859(String data) {
98-
try {
99-
return data.getBytes("ISO-8859-1");
100-
} catch (UnsupportedEncodingException e) {
101-
return "".getBytes();
102-
}
96+
return data.getBytes(ISO_8859_1);
10397
}
10498

10599
protected void mergeNativeTree(Node root) throws IIOInvalidTreeException {

src/java.desktop/share/classes/com/sun/imageio/plugins/jpeg/COMMarkerSegment.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2001, 2021, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -25,15 +25,16 @@
2525

2626
package com.sun.imageio.plugins.jpeg;
2727

28+
import java.io.IOException;
29+
30+
import javax.imageio.metadata.IIOInvalidTreeException;
2831
import javax.imageio.metadata.IIOMetadataNode;
2932
import javax.imageio.stream.ImageOutputStream;
30-
import javax.imageio.metadata.IIOInvalidTreeException;
31-
32-
import java.io.IOException;
33-
import java.io.UnsupportedEncodingException;
3433

3534
import org.w3c.dom.Node;
3635

36+
import static java.nio.charset.StandardCharsets.ISO_8859_1;
37+
3738
/**
3839
* A Comment marker segment. Retains an array of bytes representing the
3940
* comment data as it is read from the stream. If the marker segment is
@@ -45,7 +46,6 @@
4546
* byte array, again assuming the default local encoding.
4647
*/
4748
class COMMarkerSegment extends MarkerSegment {
48-
private static final String ENCODING = "ISO-8859-1";
4949

5050
/**
5151
* Constructs a marker segment from the given buffer, which contains
@@ -96,10 +96,7 @@ class COMMarkerSegment extends MarkerSegment {
9696
* consulted directly.
9797
*/
9898
String getComment() {
99-
try {
100-
return new String (data, ENCODING);
101-
} catch (UnsupportedEncodingException e) {} // Won't happen
102-
return null;
99+
return new String(data, ISO_8859_1);
103100
}
104101

105102
/**

src/java.desktop/share/classes/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.java

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,40 +25,41 @@
2525

2626
package com.sun.imageio.plugins.jpeg;
2727

28-
import javax.imageio.IIOException;
29-
import javax.imageio.IIOImage;
30-
import javax.imageio.ImageTypeSpecifier;
31-
import javax.imageio.ImageReader;
32-
import javax.imageio.metadata.IIOInvalidTreeException;
33-
import javax.imageio.metadata.IIOMetadataNode;
34-
import javax.imageio.metadata.IIOMetadata;
35-
import javax.imageio.stream.ImageInputStream;
36-
import javax.imageio.stream.ImageOutputStream;
37-
import javax.imageio.stream.MemoryCacheImageOutputStream;
38-
import javax.imageio.event.IIOReadProgressListener;
39-
4028
import java.awt.Graphics;
41-
import java.awt.color.ICC_Profile;
42-
import java.awt.color.ICC_ColorSpace;
4329
import java.awt.color.ColorSpace;
30+
import java.awt.color.ICC_ColorSpace;
31+
import java.awt.color.ICC_Profile;
32+
import java.awt.image.BufferedImage;
4433
import java.awt.image.ColorModel;
45-
import java.awt.image.SampleModel;
46-
import java.awt.image.IndexColorModel;
4734
import java.awt.image.ComponentColorModel;
48-
import java.awt.image.BufferedImage;
4935
import java.awt.image.DataBuffer;
5036
import java.awt.image.DataBufferByte;
37+
import java.awt.image.IndexColorModel;
5138
import java.awt.image.Raster;
39+
import java.awt.image.SampleModel;
5240
import java.awt.image.WritableRaster;
53-
import java.io.IOException;
5441
import java.io.ByteArrayOutputStream;
55-
import java.util.List;
42+
import java.io.IOException;
5643
import java.util.ArrayList;
5744
import java.util.Iterator;
45+
import java.util.List;
5846

47+
import javax.imageio.IIOException;
48+
import javax.imageio.IIOImage;
49+
import javax.imageio.ImageReader;
50+
import javax.imageio.ImageTypeSpecifier;
51+
import javax.imageio.event.IIOReadProgressListener;
52+
import javax.imageio.metadata.IIOInvalidTreeException;
53+
import javax.imageio.metadata.IIOMetadataNode;
54+
import javax.imageio.stream.ImageInputStream;
55+
import javax.imageio.stream.ImageOutputStream;
56+
import javax.imageio.stream.MemoryCacheImageOutputStream;
57+
58+
import org.w3c.dom.NamedNodeMap;
5959
import org.w3c.dom.Node;
6060
import org.w3c.dom.NodeList;
61-
import org.w3c.dom.NamedNodeMap;
61+
62+
import static java.nio.charset.StandardCharsets.US_ASCII;
6263

6364
/**
6465
* A JFIF (JPEG File Interchange Format) APP0 (Application-Specific)
@@ -1353,7 +1354,7 @@ static void writeICC(ICC_Profile profile, ImageOutputStream ios)
13531354
ios.write(0xff);
13541355
ios.write(JPEG.APP2);
13551356
MarkerSegment.write2bytes(ios, segLength);
1356-
byte [] id = ID.getBytes("US-ASCII");
1357+
byte[] id = ID.getBytes(US_ASCII);
13571358
ios.write(id);
13581359
ios.write(0); // Null-terminate the string
13591360
ios.write(chunkNum++);

0 commit comments

Comments
 (0)