/** * 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); } } }
final IIORegistry ioRegistry = IIORegistry.getDefaultInstance(); Set<IIOServiceProvider> providersToUnload = new HashSet(); for (Iterator<Class<?>> cats = ioRegistry.getCategories(); cats.hasNext(); ) {
@Test public void testJPEG2000Registration() { IIORegistry registry = IIORegistry.getDefaultInstance(); assertNoSunJPEG2000(registry, ImageReaderSpi.class); assertNoSunJPEG2000(registry, ImageWriterSpi.class); }
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 ); }
private void maybeInitJPEGProvider() { // NOTE: Can't do this from constructor, as ImageIO itself is not initialized yet, // and the lookup below will produce a NPE.. if (jpegProvider == null) { // Prefer the one we know ImageReaderSpi provider = lookupProviderByName(IIORegistry.getDefaultInstance(), "com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi", ImageReaderSpi.class); if (provider == null) { try { provider = getJPEGProviders().next(); } catch (Exception ignore) { // It's pretty safe to assume there's always a JPEG reader out there // In any case, we deregister the provider if there isn't one IIORegistry.getDefaultInstance().deregisterServiceProvider(this, ImageReaderSpi.class); } } jpegProvider = provider; } }
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())); } } }
private static void deregisterOSXTIFFImageReaderSpi() { IIORegistry registry = IIORegistry.getDefaultInstance(); ImageReaderSpi provider = lookupProviderByName(registry, "com.sun.imageio.plugins.tiff.TIFFImageReaderSpi", ImageReaderSpi.class); if (provider != null) { registry.deregisterServiceProvider(provider); } } }
private static ImageReaderSpi lookupDelegateProvider() { return lookupProviderByName(IIORegistry.getDefaultInstance(), "com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi", ImageReaderSpi.class); }
private static ImageWriterSpi lookupDelegateProvider() { return IIOUtil.lookupProviderByName(IIORegistry.getDefaultInstance(), "com.sun.imageio.plugins.jpeg.JPEGImageWriterSpi", ImageWriterSpi.class); }
private static ImageReaderSpi lookupDelegateProvider() { return lookupProviderByName(IIORegistry.getDefaultInstance(), "com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi", ImageReaderSpi.class); }
T standard = null; T codeclib = null; final IIORegistry registry = IIORegistry.getDefaultInstance(); for (final Iterator<T> it = registry.getServiceProviders(category, false); it.hasNext(); ) { final T provider = it.next();
IIORegistry.getDefaultInstance() .getServiceProviders(ImageInputStreamSpi.class, true); } catch (IllegalArgumentException e) {
IIORegistry.getDefaultInstance(); FilterFactory.INSTANCE.getFilter(COSName.FLATE_DECODE);
List providers = com.sun.media.imageioimpl.common.ImageUtil.getJDKImageReaderWriterSPI( IIORegistry.getDefaultInstance(), "PNG", false); if (providers == null || providers.isEmpty()) { throw new IllegalStateException("Unable to find JDK Png encoder!");
/** @return the {@link IIORegistry} instance used by the initializer */ public synchronized IIORegistry getRegistry() { if (registry == null) { registry = IIORegistry.getDefaultInstance(); } return registry; }
@Test public void testDestroyConcurrentModRegression() { ServletContext context = mock(ServletContext.class); ServletContextEvent destroyed = mock(ServletContextEvent.class); when(destroyed.getServletContext()).thenReturn(context); ServletContextListener listener = new IIOProviderContextListener(); listener.contextInitialized(mock(ServletContextEvent.class)); ImageReaderSpi provider1 = new MockImageReaderSpiOne(); ImageReaderSpi provider2 = new MockImageReaderSpiToo(); // NOTE: Fake registering for simplicity, but it still exposes the original problem with de-registering IIORegistry registry = IIORegistry.getDefaultInstance(); registry.registerServiceProvider(provider1); registry.registerServiceProvider(provider2); assertTrue(registry.contains(provider1)); assertTrue(registry.contains(provider2)); listener.contextDestroyed(destroyed); assertFalse(registry.contains(provider1)); assertFalse(registry.contains(provider2)); }
IIORegistry.getDefaultInstance().registerServiceProvider(new URLImageInputStreamSpi()); ImageIO.setUseCache(false);
/** Register the JPEG-2000 readers with the reader service. */ private static IIORegistry registerServiceProviders() { IIORegistry registry = IIORegistry.getDefaultInstance(); Iterator<J2KImageReaderSpi> iter = ServiceLoader.load(J2KImageReaderSpi.class).iterator(); registry.registerServiceProviders(iter); return registry; }
private static void deregisterOSXTIFFImageReaderSpi() { IIORegistry registry = IIORegistry.getDefaultInstance(); ImageReaderSpi provider = lookupProviderByName(registry, "com.sun.imageio.plugins.tiff.TIFFImageReaderSpi"); if (provider != null) { registry.deregisterServiceProvider(provider); } } }
/** Set up the JPEG-2000 image reader. */ private J2KImageReader getReader() { final IIORegistry registry = IIORegistry.getDefaultInstance(); final Iterator<J2KImageReaderSpi> iter = ServiceRegistry.lookupProviders(J2KImageReaderSpi.class); registry.registerServiceProviders(iter); final J2KImageReaderSpi spi = registry.getServiceProviderByClass(J2KImageReaderSpi.class); return new J2KImageReader(spi); }