/** * Unregisters providers in the "https://github.com/geosolutions-it/evo-odas/issues/102" for a * given category (reader, writer). ImageIO contains a pure java reader and a writer, but also a * couple based on native libs (if present). * * @param category */ private <T extends ImageReaderWriterSpi> void unregisterImageIOJpeg2000Support( Class<T> category) { IIORegistry registry = IIORegistry.getDefaultInstance(); Iterator<T> it = registry.getServiceProviders(category, false); ArrayList<T> providers = Lists.newArrayList(it); for (T spi : providers) { if (COM_SUN_JPEG2000_PACKAGE.equals(spi.getClass().getPackage().getName())) { registry.deregisterServiceProvider(spi); } } }
Iterator<ImageWriterSpi> services = registry.getServiceProviders(ImageWriterSpi.class, new ServiceRegistry.Filter() { @Override
private <T extends ImageReaderWriterSpi> void assertNoSunJPEG2000( IIORegistry registry, Class<T> category) { Iterator<T> it = registry.getServiceProviders(category, false); while (it.hasNext()) { T spi = it.next(); assertThat( spi.getClass().getPackage().getName(), not(startsWith(GeoserverInitStartupListener.COM_SUN_JPEG2000_PACKAGE))); } } }
for (Iterator<Class<?>> cats = ioRegistry.getCategories(); cats.hasNext(); ) { Class<?> category = cats.next(); for (Iterator it = ioRegistry.getServiceProviders(category, false); it.hasNext(); ) { final IIOServiceProvider provider = (IIOServiceProvider) it.next();
private Iterator<ImageReaderSpi> getJPEGProviders() { return IIORegistry.getDefaultInstance().getServiceProviders( ImageReaderSpi.class, new ServiceRegistry.Filter() { public boolean filter(Object provider) { if (provider instanceof ImageReaderSpi) { ImageReaderSpi spi = (ImageReaderSpi) provider; for (String format : spi.getFormatNames()) { if ("JPEG".equals(format)) { return true; } } } return false; } }, true ); }
public void contextDestroyed(final ServletContextEvent event) { // De-register any locally registered IIO plugins. Relies on each web app having its own context class loader. final IIORegistry registry = IIORegistry.getDefaultInstance(); final LocalFilter localFilter = new LocalFilter(Thread.currentThread().getContextClassLoader()); // scanForPlugins uses context class loader Iterator<Class<?>> categories = registry.getCategories(); while (categories.hasNext()) { Class<?> category = categories.next(); Iterator<?> providers = registry.getServiceProviders(category, localFilter, false); // Copy the providers, as de-registering while iterating over providers will lead to ConcurrentModificationExceptions. List<Object> providersCopy = new ArrayList<Object>(); while (providers.hasNext()) { providersCopy.add(providers.next()); } for (Object provider : providersCopy) { registry.deregisterServiceProvider(provider); event.getServletContext().log(String.format("Unregistered locally installed provider class: %s", provider.getClass())); } } }
T codeclib = null; final IIORegistry registry = IIORegistry.getDefaultInstance(); for (final Iterator<T> it = registry.getServiceProviders(category, false); it.hasNext(); ) { final T provider = it.next(); final String[] formats = provider.getFormatNames();
iter = IIORegistry.getDefaultInstance() .getServiceProviders(ImageInputStreamSpi.class, true); } catch (IllegalArgumentException e) { return null;
private static <S extends ImageReaderWriterSpi> String[] getReaderWriterInfo(Class<S> spiClass, SpiInfo spiInfo) { // Ensure category is present Iterator<S> iter; try { iter = theRegistry.getServiceProviders(spiClass, true); } catch (IllegalArgumentException e) { return new String[0]; } HashSet<String> s = new HashSet<String>(); while (iter.hasNext()) { ImageReaderWriterSpi spi = iter.next(); Collections.addAll(s, spiInfo.info(spi)); } return s.toArray(new String[s.size()]); }
/** * This constructor will construct register all image formats available in * ImageIO into ExportFileTypeRegistry. The ImageExportFileTypeRegistration * will deregister itself immediately. */ public ImageIOExportFileType() { // NOTE: registry is not valid yet, imageRegistry is valid // run over all ImageWriterSpis and store their formats Alphabetically // copy them at this time to avoid a ConcurrentModificationException // see https://github.com/freehep/freehep-vectorgraphics/issues/23 IIORegistry imageRegistry = IIORegistry.getDefaultInstance(); Iterator<?> providers = imageRegistry.getServiceProviders( ImageWriterSpi.class, false); while (providers.hasNext()) { ImageWriterSpi writerSpi = (ImageWriterSpi) providers.next(); providerList.add(writerSpi); } }
/** * This constructor will construct register all image formats available in * ImageIO into ExportFileTypeRegistry. The ImageExportFileTypeRegistration * will deregister itself immediately. */ public ImageIOExportFileType() { // NOTE: registry is not valid yet, imageRegistry is valid // run over all ImageWriterSpis and store their formats Alphabetically // copy them at this time to avoid a ConcurrentModificationException // see https://github.com/freehep/freehep-vectorgraphics/issues/23 IIORegistry imageRegistry = IIORegistry.getDefaultInstance(); Iterator<?> providers = imageRegistry.getServiceProviders( ImageWriterSpi.class, false); while (providers.hasNext()) { ImageWriterSpi writerSpi = (ImageWriterSpi) providers.next(); providerList.add(writerSpi); } }
private Iterator<ImageReaderSpi> getJPEGProviders() { return IIORegistry.getDefaultInstance().getServiceProviders( ImageReaderSpi.class, new ServiceRegistry.Filter() { public boolean filter(Object provider) { if (provider instanceof ImageReaderSpi) { ImageReaderSpi spi = (ImageReaderSpi) provider; for (String format : spi.getFormatNames()) { if ("JPEG".equals(format)) { return true; } } } return false; } }, true ); }
@Override public void onRegistration(ServiceRegistry registry, Class<?> category) { super.onRegistration(registry, category); if (!TurboJpegUtilities.isTurboJpegAvailable()) { IIORegistry iioRegistry = (IIORegistry) registry; final Class<ImageWriterSpi> spiClass = ImageWriterSpi.class; final Iterator<ImageWriterSpi> iter = iioRegistry.getServiceProviders(spiClass,true); while (iter.hasNext()) { final ImageWriterSpi provider = (ImageWriterSpi) iter.next(); if (provider instanceof TurboJpegImageWriterSpi) { registry.deregisterServiceProvider(provider); } } } }
/** * Retrieves a JPEG reader which supports native JPEG stream metadata. */ private static ImageReader getJPEGTablesReader() { ImageReader jpegReader = null; try { IIORegistry registry = IIORegistry.getDefaultInstance(); Class imageReaderClass = Class.forName("javax.imageio.spi.ImageReaderSpi"); Iterator readerSPIs = registry.getServiceProviders(imageReaderClass, new JPEGSPIFilter(), true); if(readerSPIs.hasNext()) { ImageReaderSpi jpegReaderSPI = (ImageReaderSpi)readerSPIs.next(); jpegReader = jpegReaderSPI.createReaderInstance(); } } catch(Exception e) { // Ignore it ... } return jpegReader; }
/** * Retrieves a JPEG reader which supports native JPEG stream metadata. */ private static ImageReader getJPEGTablesReader() { ImageReader jpegReader = null; try { IIORegistry registry = IIORegistry.getDefaultInstance(); Class imageReaderClass = Class.forName("javax.imageio.spi.ImageReaderSpi"); Iterator readerSPIs = registry.getServiceProviders(imageReaderClass, new JPEGSPIFilter(), true); if(readerSPIs.hasNext()) { ImageReaderSpi jpegReaderSPI = (ImageReaderSpi)readerSPIs.next(); jpegReader = jpegReaderSPI.createReaderInstance(); } } catch(Exception e) { // Ignore it ... } return jpegReader; }
/** * Retrieves a JPEG reader which supports native JPEG stream metadata. */ private static ImageReader getJPEGTablesReader() { ImageReader jpegReader = null; try { IIORegistry registry = IIORegistry.getDefaultInstance(); Class imageReaderClass = Class.forName("javax.imageio.spi.ImageReaderSpi"); Iterator readerSPIs = registry.getServiceProviders(imageReaderClass, new JPEGSPIFilter(), true); if(readerSPIs.hasNext()) { ImageReaderSpi jpegReaderSPI = (ImageReaderSpi)readerSPIs.next(); jpegReader = jpegReaderSPI.createReaderInstance(); } } catch(Exception e) { // Ignore it ... } return jpegReader; }
/** * Retrieves a JPEG reader which supports native JPEG stream metadata. */ private static ImageReader getJPEGTablesReader() { ImageReader jpegReader = null; try { IIORegistry registry = IIORegistry.getDefaultInstance(); Class imageReaderClass = Class.forName("javax.imageio.spi.ImageReaderSpi"); Iterator readerSPIs = registry.getServiceProviders(imageReaderClass, new JPEGSPIFilter(), true); if(readerSPIs.hasNext()) { ImageReaderSpi jpegReaderSPI = (ImageReaderSpi)readerSPIs.next(); jpegReader = jpegReaderSPI.createReaderInstance(); } } catch(Exception e) { // Ignore it ... } return jpegReader; }
/** * Allows to deregister GDAL based spi in case GDAL libraries are * unavailable. */ public void onRegistration( final ServiceRegistry registry, final Class<?> category) { super.onRegistration(registry, category); if (!GDALUtilities.isGDALAvailable()) { IIORegistry iioRegistry = (IIORegistry) registry; final Class<ImageReaderSpi> spiClass = ImageReaderSpi.class; final Iterator<ImageReaderSpi> iter = iioRegistry.getServiceProviders(spiClass,true); while (iter.hasNext()) { final ImageReaderSpi provider = (ImageReaderSpi) iter.next(); if (provider instanceof GDALImageReaderSpi) { registry.deregisterServiceProvider(provider); } } } } }
/** * Allows to deregister GDAL based spi in case GDAL libraries are * unavailable. */ public void onRegistration( final ServiceRegistry registry, final Class<?> category) { super.onRegistration(registry, category); if (!GDALUtilities.isGDALAvailable()) { IIORegistry iioRegistry = (IIORegistry) registry; final Class<ImageReaderSpi> spiClass = ImageReaderSpi.class; final Iterator<ImageReaderSpi> iter = iioRegistry.getServiceProviders(spiClass,true); while (iter.hasNext()) { final ImageReaderSpi provider = (ImageReaderSpi) iter.next(); if (provider instanceof GDALImageReaderSpi) { registry.deregisterServiceProvider(provider); } } } } }
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); } } }