OpenJDK / zgc / zgc
changeset 29508:5bfc7adc422a
4958064: JPGWriter does not throw UnsupportedException when canWriteSequence retuns false
Reviewed-by: prr, bae
author | serb |
---|---|
date | Fri, 27 Feb 2015 01:06:39 +0300 |
parents | f16389ada5f3 |
children | e3b07effb6e3 |
files | jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java jdk/test/javax/imageio/plugins/shared/CanWriteSequence.java |
diffstat | 2 files changed, 83 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java Thu Feb 26 16:41:39 2015 +0300 +++ b/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java Fri Feb 27 01:06:39 2015 +0300 @@ -1104,6 +1104,11 @@ currentImage++; // After a successful write } + @Override + public boolean canWriteSequence() { + return true; + } + public void prepareWriteSequence(IIOMetadata streamMetadata) throws IOException { setThreadLock();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/imageio/plugins/shared/CanWriteSequence.java Fri Feb 27 01:06:39 2015 +0300 @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.File; +import java.io.FileOutputStream; +import java.util.Iterator; + +import javax.imageio.ImageIO; +import javax.imageio.ImageWriter; +import javax.imageio.metadata.IIOMetadata; +import javax.imageio.spi.IIORegistry; +import javax.imageio.spi.ImageWriterSpi; +import javax.imageio.stream.ImageOutputStream; + +/** + * @test + * @bug 4958064 + * @author Sergey Bylokhov + */ +public final class CanWriteSequence { + + public static void main(final String[] args) throws Exception { + final IIORegistry registry = IIORegistry.getDefaultInstance(); + final Iterator<ImageWriterSpi> iter = + registry.getServiceProviders(ImageWriterSpi.class, + provider -> true, true); + // Validates all supported ImageWriters + while (iter.hasNext()) { + final ImageWriter writer = iter.next().createWriterInstance(); + System.out.println("ImageWriter = " + writer); + test(writer); + } + System.out.println("Test passed"); + } + + private static void test(final ImageWriter writer) throws Exception { + final File file = File.createTempFile("temp", ".img"); + file.deleteOnExit(); + final FileOutputStream fos = new FileOutputStream(file); + final ImageOutputStream ios = ImageIO.createImageOutputStream(fos); + writer.setOutput(ios); + final IIOMetadata data = writer.getDefaultStreamMetadata(null); + + if (writer.canWriteSequence()) { + writer.prepareWriteSequence(data); + } else { + try { + writer.prepareWriteSequence(data); + throw new RuntimeException( + "UnsupportedOperationException was not thrown"); + } catch (final UnsupportedOperationException ignored) { + // expected + } + } + writer.dispose(); + ios.close(); + } +} \ No newline at end of file