public static void main(String[] args) throws IOException, MalformedURLException { /* deregister ImageOutputStreamSpi so that we creatImageOutputStream * returns null while writing. */ localRegistry.deregisterAll(ImageOutputStreamSpi.class); /* verify possible ImageIO.write() scenario's for null stream output * from createImageOutputStream() API in ImageIO class. */ verifyFileWrite(); verifyStreamWrite(); /* deregister ImageInputStreamSpi so that we creatImageInputStream * returns null while reading. */ localRegistry.deregisterAll(ImageInputStreamSpi.class); /* verify possible ImageIO.read() scenario's for null stream output * from createImageInputStream API in ImageIO class. */ verifyFileRead(); verifyStreamRead(); verifyUrlRead(); }
private void registerSpi() { // We will register a new Spi for creating NIO-based ImageInputStreams. final IIORegistry defaultInstance = IIORegistry.getDefaultInstance(); Iterator<ImageInputStreamSpi> serviceProviders = defaultInstance.getServiceProviders(ImageInputStreamSpi.class, true); ImageInputStreamSpi toUnorder = null; if (defaultInstance.getServiceProviderByClass(FileImageInputStreamSpi.class) == null) { // register only if not already registered while (serviceProviders.hasNext()) { ImageInputStreamSpi current = serviceProviders.next(); if (current.getInputClass() == File.class) { toUnorder = current; break; } } channelImageInputStreamSpi = new FileImageInputStreamSpi(); defaultInstance.registerServiceProvider(channelImageInputStreamSpi); if (toUnorder != null) { // Make the custom Spi to be the first one to be used. defaultInstance.setOrdering(ImageInputStreamSpi.class, channelImageInputStreamSpi, toUnorder); } } }
/** * Registers a file image input strwM SPI for image input stream, if none is yet registered. */ protected void registerSpi() { final IIORegistry defaultInstance = IIORegistry.getDefaultInstance(); Iterator<ImageInputStreamSpi> serviceProviders = defaultInstance.getServiceProviders(ImageInputStreamSpi.class, true); ImageInputStreamSpi toUnorder = null; if (defaultInstance.getServiceProviderByClass(FileImageInputStreamSpi.class) == null) { // register only if not already registered while (serviceProviders.hasNext()) { ImageInputStreamSpi current = serviceProviders.next(); if (current.getInputClass() == File.class) { toUnorder = current; break; } } imageInputStreamSpi = new FileImageInputStreamSpi(); defaultInstance.registerServiceProvider(imageInputStreamSpi); if (toUnorder != null) { // Make the custom Spi to be the first one to be used. defaultInstance.setOrdering(ImageInputStreamSpi.class, imageInputStreamSpi, toUnorder); } } }
public static void main(String[] args) throws InterruptedException { final ArrayList<Class<?>> services = new ArrayList<Class<?>>(); services.add(ImageInputStreamSpi.class); final ServiceRegistry reg = new ServiceRegistry(services.iterator()); //create new thread for Registerer and Consumer Class Thread registerer = new Thread(new Registerer(reg)); Thread consumer = new Thread(new Consumer(reg)); //run both registerer and consumer thread parallely registerer.start(); consumer.start(); }
@Override public void run() { start = System.currentTimeMillis(); end = start + duration; while (start < end) { //access the ServiceProvider API reg.getServiceProviders(ImageInputStreamSpi.class, true); start = System.currentTimeMillis(); } }
/** * Create an image input stream from the given object. The * collection of ImageInputStreamSpis registered with the * IIORegistry is searched for an image input stream that can take * input from the given object. null is returned if no such SPI is * registered. * * The image data will be cached in the current cache directory if * caching is enabled. * * @param input an object from which to read image data * * @return an ImageInputStream that can read data from input, or * null * * @exception IllegalArgumentException if input is null * @exception IOException if caching is required but not enabled */ public static ImageInputStream createImageInputStream (Object input) throws IOException { if (input == null) throw new IllegalArgumentException ("null argument"); Iterator spis = getRegistry().getServiceProviders (ImageInputStreamSpi.class, true); ImageInputStreamSpi foundSpi = null; while(spis.hasNext()) { ImageInputStreamSpi spi = (ImageInputStreamSpi) spis.next(); if (input.getClass().equals(spi.getInputClass())) { foundSpi = spi; break; } } return foundSpi == null ? null : foundSpi.createInputStreamInstance (input, getUseCache(), getCacheDirectory()); }