| /* |
| * Copyright (c) 2016, 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. |
| */ |
| |
| /* |
| * @test |
| * @bug 8163258 |
| * @summary Test verifies that when we create our own ImageReaderSpi |
| * implementaion with MIMEType or FileSuffix as null, it should |
| * not throw NullPointerException when we call |
| * ImageIO.getReaderMIMETypes() or ImageIO.getReaderFileSuffixes(). |
| * @run main GetReaderWriterInfoNullTest |
| */ |
| |
| import java.awt.image.BufferedImage; |
| import java.io.IOException; |
| import java.util.Iterator; |
| import java.util.Locale; |
| import javax.imageio.IIOException; |
| import javax.imageio.ImageReadParam; |
| import javax.imageio.ImageReader; |
| import javax.imageio.ImageTypeSpecifier; |
| import javax.imageio.metadata.IIOMetadata; |
| import javax.imageio.spi.ImageReaderSpi; |
| import javax.imageio.stream.ImageInputStream; |
| import javax.imageio.ImageIO; |
| import javax.imageio.spi.IIORegistry; |
| |
| class TestImageReaderSpi extends ImageReaderSpi { |
| |
| public TestImageReaderSpi(String[] FORMATNAMES, String[] SUFFIXES, |
| String[] MIMETYPES) { |
| super("J Duke", // vendor |
| "1.0", // version |
| FORMATNAMES, // format names |
| SUFFIXES, // file suffixes |
| MIMETYPES, // mimetypes |
| "readTest.TestImageReader", // reader class name |
| new Class<?>[] { ImageInputStream.class }, // input types |
| null, // writer class names. |
| true, // supports native metadata, |
| null, // [no] native stream metadata format |
| null, // [no] native stream metadata class |
| null, // [no] native extra stream metadata format |
| null, // [no] native extra stream metadata class |
| true, // supports standard metadata, |
| null, // metadata format name, |
| null, // metadata format class name |
| null, // [no] extra image metadata format |
| null // [no] extra image metadata format class |
| ); |
| } |
| |
| @Override |
| public boolean canDecodeInput(Object source) throws IOException { |
| throw new UnsupportedOperationException("Not supported yet."); |
| } |
| |
| @Override |
| public String getDescription(Locale locale) { |
| throw new UnsupportedOperationException("Not supported yet."); |
| } |
| |
| @Override |
| public ImageReader createReaderInstance(Object extension) |
| throws IOException { |
| throw new UnsupportedOperationException("Not supported yet."); |
| } |
| |
| } |
| |
| class TestImageReader extends ImageReader { |
| |
| public TestImageReader(ImageReaderSpi originatingProvider) { |
| super(originatingProvider); |
| } |
| |
| @Override |
| public int getNumImages(boolean allowSearch) throws IOException { |
| throw new UnsupportedOperationException("Not supported yet."); |
| } |
| |
| @Override |
| public int getWidth(int imageIndex) throws IOException { |
| throw new UnsupportedOperationException("Not supported yet."); |
| } |
| |
| @Override |
| public int getHeight(int imageIndex) throws IOException { |
| throw new UnsupportedOperationException("Not supported yet."); |
| } |
| |
| @Override |
| public Iterator<ImageTypeSpecifier> getImageTypes(int imageIndex) |
| throws IOException { |
| throw new UnsupportedOperationException("Not supported yet."); |
| } |
| |
| @Override |
| public IIOMetadata getStreamMetadata() throws IOException { |
| throw new UnsupportedOperationException("Not supported yet."); |
| } |
| |
| @Override |
| public IIOMetadata getImageMetadata(int imageIndex) throws IOException { |
| throw new UnsupportedOperationException("Not supported yet."); |
| } |
| |
| @Override |
| public BufferedImage read(int imageIndex, ImageReadParam param) |
| throws IOException { |
| throw new UnsupportedOperationException("Not supported yet."); |
| } |
| } |
| public class GetReaderWriterInfoNullTest { |
| static final String[] FORMATNAMES = {"readTest"}; |
| static final String[] SUFFIXES = {"readTest"}; |
| static final String[] MIMETYPES = {"readTest"}; |
| public static void main (String[] args) throws IIOException { |
| // Verify getReaderMIMETypes() behavior by keeping MIMEType as null. |
| TestImageReaderSpi mimeNullReadSpi = |
| new TestImageReaderSpi(FORMATNAMES, SUFFIXES, null); |
| IIORegistry.getDefaultInstance(). |
| registerServiceProvider(mimeNullReadSpi); |
| ImageIO.getReaderMIMETypes(); |
| IIORegistry.getDefaultInstance(). |
| deregisterServiceProvider(mimeNullReadSpi); |
| |
| /* |
| * Verify getReaderFileSuffixes() behavior by keeping |
| * file suffix as null. |
| */ |
| TestImageReaderSpi suffixNullReadSpi = |
| new TestImageReaderSpi(FORMATNAMES, null, MIMETYPES); |
| IIORegistry.getDefaultInstance(). |
| registerServiceProvider(suffixNullReadSpi); |
| ImageIO.getReaderFileSuffixes(); |
| IIORegistry.getDefaultInstance(). |
| deregisterServiceProvider(suffixNullReadSpi); |
| } |
| } |
| |