Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/imageio/AppletResourceTest.java
41145 views
1
/*
2
* Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/*
25
* @test
26
* @bug 4481957
27
* @summary Tests that applet-supplied ImageReader, ImageWriter, and
28
* IIOMetadataFormat implementations do not throw unexpected exceptions
29
* when indirectly attempting to access ResourceBundles
30
* @run main AppletResourceTest
31
*/
32
33
import java.awt.Rectangle;
34
import java.awt.image.BufferedImage;
35
import java.io.IOException;
36
import java.util.Iterator;
37
import java.util.ListResourceBundle;
38
import java.util.Locale;
39
import java.util.MissingResourceException;
40
import java.util.Vector;
41
42
import javax.imageio.IIOException;
43
import javax.imageio.ImageReadParam;
44
import javax.imageio.ImageReader;
45
import javax.imageio.ImageTypeSpecifier;
46
import javax.imageio.event.IIOReadWarningListener;
47
import javax.imageio.metadata.IIOInvalidTreeException;
48
import javax.imageio.metadata.IIOMetadata;
49
import javax.imageio.spi.ImageReaderSpi;
50
51
import org.w3c.dom.Node;
52
53
public class AppletResourceTest {
54
55
public static void main(String[] argv) {
56
new AppletResourceTest().init();
57
}
58
59
public void init() {
60
DummyImageReaderImpl reader;
61
MyReadWarningListener listener = new MyReadWarningListener();
62
Locale[] locales = {new Locale("ru"),
63
new Locale("fr"),
64
new Locale("uk")};
65
66
reader = new DummyImageReaderImpl(new DummyImageReaderSpiImpl());
67
reader.setAvailableLocales(locales);
68
reader.setLocale(new Locale("fr"));
69
reader.addIIOReadWarningListener(listener);
70
71
String baseName = "AppletResourceTest$BugStats";
72
try {
73
reader.processWarningOccurred("WarningMessage");
74
reader.processWarningOccurred(baseName, "water");
75
} catch (MissingResourceException mre) {
76
throw new RuntimeException("Test failed: couldn't load resource");
77
}
78
79
80
}
81
82
private class MyReadWarningListener implements IIOReadWarningListener {
83
public void warningOccurred(ImageReader source,
84
String warning)
85
{
86
System.out.println("warning occurred: " + warning);
87
}
88
}
89
90
public static class BugStats extends ListResourceBundle {
91
92
public Object[][] getContents(){
93
return contents;
94
}
95
96
private Object[][] contents = {
97
{"coffee", new String("coffee from Stats class")},
98
{"tea", new String("tea from Stats class")},
99
{"water", new String("water from Stats class")}
100
};
101
}
102
103
104
public static class DummyImageReaderImpl extends ImageReader {
105
106
public DummyImageReaderImpl(ImageReaderSpi originatingProvider) {
107
super(originatingProvider);
108
}
109
110
public int getNumImages(boolean allowSearch) throws IOException {
111
return 5;
112
}
113
114
public int getWidth(int imageIndex) throws IOException {
115
if (input == null)
116
throw new IllegalStateException();
117
if (imageIndex >= 5 || imageIndex < 0)
118
throw new IndexOutOfBoundsException();
119
120
return 10;
121
}
122
123
public int getHeight(int imageIndex) throws IOException {
124
if (input == null)
125
throw new IllegalStateException();
126
if (imageIndex >= 5 || imageIndex < 0)
127
throw new IndexOutOfBoundsException();
128
129
return 15;
130
}
131
132
public Iterator getImageTypes(int imageIndex) throws IOException {
133
if (input == null)
134
throw new IllegalStateException();
135
if (imageIndex >= 5 || imageIndex < 0)
136
throw new IndexOutOfBoundsException();
137
138
Vector imageTypes = new Vector();
139
imageTypes.add(ImageTypeSpecifier.createFromBufferedImageType
140
(BufferedImage.TYPE_BYTE_GRAY ));
141
return imageTypes.iterator();
142
}
143
144
public IIOMetadata getStreamMetadata() throws IOException {
145
return new DummyIIOMetadataImpl(true, null, null, null, null);
146
}
147
148
public IIOMetadata getImageMetadata(int imageIndex)
149
throws IOException {
150
151
if (input == null)
152
throw new IllegalStateException();
153
if (imageIndex >= 5 || imageIndex < 0)
154
throw new IndexOutOfBoundsException();
155
if (seekForwardOnly) {
156
if (imageIndex < minIndex)
157
throw new IndexOutOfBoundsException();
158
minIndex = imageIndex;
159
}
160
return new DummyIIOMetadataImpl(true, null, null, null, null);
161
}
162
163
164
public BufferedImage read(int imageIndex, ImageReadParam param)
165
throws IOException {
166
if (input == null)
167
throw new IllegalStateException();
168
if (imageIndex >= 5 || imageIndex < 0)
169
throw new IndexOutOfBoundsException();
170
if (seekForwardOnly) {
171
if (imageIndex < minIndex)
172
throw new IndexOutOfBoundsException();
173
minIndex = imageIndex;
174
}
175
176
return getDestination(param, getImageTypes(imageIndex), 10, 15);
177
}
178
179
// protected methods - now public
180
181
public boolean abortRequested() {
182
return super.abortRequested();
183
}
184
185
public void clearAbortRequest() {
186
super.clearAbortRequest();
187
}
188
189
public void processImageComplete() {
190
super.processImageComplete();
191
}
192
193
public void processImageProgress(float percentageDone) {
194
super.processImageProgress(percentageDone);
195
}
196
197
public void processImageStarted(int imageIndex) {
198
super.processImageStarted(imageIndex);
199
}
200
201
public void processImageUpdate(BufferedImage theImage,
202
int minX,
203
int minY,
204
int width,
205
int height,
206
int periodX,
207
int periodY,
208
int[] bands) {
209
super.processImageUpdate(theImage,
210
minX,
211
minY,
212
width,
213
height,
214
periodX,
215
periodY,
216
bands);
217
}
218
219
public void processPassComplete(BufferedImage theImage) {
220
super. processPassComplete(theImage);
221
}
222
223
public void processPassStarted(BufferedImage theImage,
224
int pass, int minPass,
225
int maxPass,
226
int minX,
227
int minY,
228
int periodX,
229
int periodY,
230
int[] bands) {
231
super.processPassStarted(theImage,
232
pass,
233
minPass,
234
maxPass,
235
minX,
236
minY,
237
periodX,
238
periodY,
239
bands);
240
}
241
242
public void processReadAborted() {
243
super.processReadAborted();
244
}
245
246
public void processSequenceComplete() {
247
super.processSequenceComplete();
248
}
249
250
public void processSequenceStarted(int minIndex) {
251
super.processSequenceStarted(minIndex);
252
}
253
254
public void processThumbnailComplete() {
255
super.processThumbnailComplete();
256
}
257
258
public void processThumbnailPassComplete(BufferedImage theThumbnail) {
259
super.processThumbnailPassComplete(theThumbnail);
260
}
261
262
public void processThumbnailPassStarted(BufferedImage theThumbnail,
263
int pass,
264
int minPass,
265
int maxPass,
266
int minX,
267
int minY,
268
int periodX,
269
int periodY,
270
int[] bands) {
271
super.processThumbnailPassStarted(theThumbnail,
272
pass,
273
minPass,
274
maxPass,
275
minX,
276
minY,
277
periodX,
278
periodY,
279
bands);
280
}
281
282
public void processThumbnailProgress(float percentageDone) {
283
super.processThumbnailProgress(percentageDone);
284
}
285
286
public void processThumbnailStarted(int imageIndex, int thumbnailIndex) {
287
super.processThumbnailStarted(imageIndex, thumbnailIndex);
288
}
289
290
public void processThumbnailUpdate(BufferedImage theThumbnail,
291
int minX,
292
int minY,
293
int width,
294
int height,
295
int periodX,
296
int periodY,
297
int[] bands) {
298
super.processThumbnailUpdate(theThumbnail,
299
minX,
300
minY,
301
width,
302
height,
303
periodX,
304
periodY,
305
bands);
306
}
307
308
public void processWarningOccurred(String warning) {
309
super.processWarningOccurred(warning);
310
}
311
312
313
314
public static Rectangle getSourceRegion(ImageReadParam param,
315
int srcWidth,
316
int srcHeight) {
317
return ImageReader.getSourceRegion(param, srcWidth, srcHeight);
318
}
319
320
public static void computeRegions(ImageReadParam param,
321
int srcWidth,
322
int srcHeight,
323
BufferedImage image,
324
Rectangle srcRegion,
325
Rectangle destRegion) {
326
ImageReader.computeRegions(param,
327
srcWidth,
328
srcHeight,
329
image,
330
srcRegion,
331
destRegion);
332
}
333
334
public static void checkReadParamBandSettings(ImageReadParam param,
335
int numSrcBands,
336
int numDstBands) {
337
ImageReader.checkReadParamBandSettings( param,
338
numSrcBands,
339
numDstBands);
340
}
341
342
public static BufferedImage getDestination(ImageReadParam param,
343
Iterator imageTypes,
344
int width,
345
int height) throws IIOException {
346
return ImageReader.getDestination(param,
347
imageTypes,
348
width,
349
height);
350
}
351
352
public void setAvailableLocales(Locale[] locales) {
353
if (locales == null || locales.length == 0)
354
availableLocales = null;
355
else
356
availableLocales = (Locale[])locales.clone();
357
}
358
359
public void processWarningOccurred(String baseName, String keyword) {
360
super.processWarningOccurred(baseName, keyword);
361
}
362
}
363
364
public static class DummyIIOMetadataImpl extends IIOMetadata {
365
366
public DummyIIOMetadataImpl() {
367
super();
368
}
369
370
public DummyIIOMetadataImpl(boolean standardMetadataFormatSupported,
371
String nativeMetadataFormatName,
372
String nativeMetadataFormatClassName,
373
String[] extraMetadataFormatNames,
374
String[] extraMetadataFormatClassNames) {
375
super(standardMetadataFormatSupported,
376
nativeMetadataFormatName,
377
nativeMetadataFormatClassName,
378
extraMetadataFormatNames,
379
extraMetadataFormatClassNames);
380
}
381
382
public boolean isReadOnly() {
383
return true;
384
}
385
386
public Node getAsTree(String formatName) {
387
return null;
388
}
389
390
public void mergeTree(String formatName, Node root)
391
throws IIOInvalidTreeException {
392
throw new IllegalStateException();
393
}
394
395
public void reset() {
396
throw new IllegalStateException();
397
}
398
}
399
400
public static class DummyImageReaderSpiImpl extends ImageReaderSpi {
401
402
static final String[] names ={ "myformat" };
403
404
public DummyImageReaderSpiImpl() {
405
super("vendorName",
406
"version",
407
names,
408
null,
409
null,
410
"DummyImageReaderImpl",
411
STANDARD_INPUT_TYPE,
412
null,
413
true,
414
null,
415
null,
416
null,
417
null,
418
true,
419
null,
420
null,
421
null,
422
null);
423
}
424
public boolean canDecodeInput(Object source)
425
throws IOException {
426
return true;
427
}
428
public ImageReader createReaderInstance(Object extension)
429
throws IOException {
430
return new DummyImageReaderImpl(this);
431
}
432
public String getDescription(Locale locale) {
433
return "DummyImageReaderSpiImpl";
434
}
435
}
436
}
437
438