### Eclipse Workspace Patch 1.0 #P imageio Index: src/main/java/javax/imageio/spi/ImageReaderSpi.java =================================================================== --- src/main/java/javax/imageio/spi/ImageReaderSpi.java (revision 927570) +++ src/main/java/javax/imageio/spi/ImageReaderSpi.java (working copy) @@ -83,8 +83,7 @@ throw new NotImplementedException(); } - public String[] getImageWriterSpiNames() throws NotImplementedException { - // TODO: implement - throw new NotImplementedException(); + public String[] getImageWriterSpiNames() { + return writerSpiNames; } } Index: src/main/java/javax/imageio/ImageIO.java =================================================================== --- src/main/java/javax/imageio/ImageIO.java (revision 927570) +++ src/main/java/javax/imageio/ImageIO.java (working copy) @@ -217,14 +217,56 @@ new MIMETypeFilter(MIMEType), true)); } - public static ImageWriter getImageWriter(ImageReader reader) throws NotImplementedException { - // TODO: implement - throw new NotImplementedException(); + public static ImageWriter getImageWriter(ImageReader reader) { + if (reader == null) + throw new IllegalArgumentException("reader cannot be null"); + + ImageReaderSpi readerSpi = reader.getOriginatingProvider(); + if (readerSpi.getImageWriterSpiNames() == null ) + return null; + + String writerSpiName = readerSpi.getImageWriterSpiNames()[0]; + + Iterator writerSpis; + writerSpis = registry.getServiceProviders(ImageWriterSpi.class,true); + + try { + while (writerSpis.hasNext()) { + ImageWriterSpi writerSpi = writerSpis.next(); + if (writerSpi.getClass().getName().equals(writerSpiName)); + return writerSpi.createWriterInstance(); + } + } catch (IOException e) { + + } + + return null; } - public static ImageReader getImageReader(ImageWriter writer) throws NotImplementedException { - // TODO: implement - throw new NotImplementedException(); + public static ImageReader getImageReader(ImageWriter writer) { + if (writer == null) + throw new IllegalArgumentException("writer cannot be null"); + + ImageWriterSpi writerSpi = writer.getOriginatingProvider(); + if (writerSpi.getImageReaderSpiNames() == null ) + return null; + + String readerSpiName = writerSpi.getImageReaderSpiNames()[0]; + + Iterator readerSpis; + readerSpis = registry.getServiceProviders(ImageReaderSpi.class,true); + + try { + while (readerSpis.hasNext()) { + ImageReaderSpi readerSpi = readerSpis.next(); + if (readerSpi.getClass().getName().equals(readerSpiName)); + return readerSpi.createReaderInstance(); + } + } catch (IOException e) { + + } + + return null; } public static Iterator getImageWriters(ImageTypeSpecifier type,