public void testDeregisterAll() { Class[] CATEGORIES = new Class[] {ImageReaderSpi.class}; ServiceRegistry registry = new ServiceRegistry(Arrays.<Class<?>>asList(CATEGORIES).iterator()); ImageReaderSpi reader1 = new Reader1Spi(); ImageReaderSpi reader2 = new Reader2Spi(); // Register two providers registry.registerServiceProvider(reader1, CATEGORIES[0]); registry.registerServiceProvider(reader2, CATEGORIES[0]); registry.deregisterAll(ImageReaderSpi.class); assertFalse( "Reader1 is still regitered, deregisterAll(Class) failed", registry.contains(reader1)); assertFalse( "Reader2 is still regitered, deregisterAll(Class) failed", registry.contains(reader2)); // Re-register two providers registry.registerServiceProvider(reader1, CATEGORIES[0]); registry.registerServiceProvider(reader2, CATEGORIES[0]); registry.deregisterAll(); assertFalse("Reader1 is still regitered, deregisterAll() failed", registry.contains(reader1)); assertFalse("Reader2 is still regitered, deregisterAll() failed", registry.contains(reader2)); }
@SuppressWarnings("unchecked") public void testDeregisterServiceProvider() throws Exception { Class[] CATEGORIES = new Class[] { javax.imageio.spi.ImageReaderSpi.class, javax.imageio.spi.SampleImageReaderSpi.class }; ServiceRegistry registry = new ServiceRegistry(Arrays.<Class<?>>asList(CATEGORIES).iterator()); SampleImageReaderSpi spi = new SampleImageReaderSpi(); // Test deregisterServiceProvider(Object, Class) registry.registerServiceProvider(spi, CATEGORIES[0]); assertTrue( "deregisterServiceProvider(Object, Class) returns incorrect value for a registered provider ", registry.deregisterServiceProvider(spi, CATEGORIES[0])); assertFalse( "deregisterServiceProvider(Object, Class) returns incorrect value for a unregistered provider", registry.deregisterServiceProvider(spi, CATEGORIES[0])); // Test deregisterServiceProvider(Object) registry.registerServiceProvider(spi, CATEGORIES[0]); registry.registerServiceProvider(spi, CATEGORIES[1]); registry.deregisterServiceProvider(spi); assertFalse( "deregisterServiceProvider(Object) failed to remove all providers", registry.deregisterServiceProvider(spi, CATEGORIES[0])); assertFalse( "deregisterServiceProvider(Object) failed to remove all providers", registry.deregisterServiceProvider(spi, CATEGORIES[1])); }
public void testRegistryServiceProvider() throws Exception { Class[] CATEGORIES = new Class[] {ImageWriterSpi.class, ImageReaderSpi.class}; ServiceRegistry registry = new ServiceRegistry(Arrays.<Class<?>>asList(CATEGORIES).iterator()); SampleImageReaderSpi spiA = new SampleImageReaderSpi(); SampleImageReaderSpi spiB = new SampleImageReaderSpi(); assertTrue( "registerServiceProvider() returns incorrect value for the empty registry", registry.registerServiceProvider(spiA, CATEGORIES[1])); assertFalse( "registerServiceProvider() returns incorrect value if a provider of the same class was previously registered", registry.registerServiceProvider(spiB, CATEGORIES[1])); }
public void testGetServiceProviderByClass() { Class[] CATEGORIES = new Class[] {ImageReaderSpi.class}; ServiceRegistry registry = new ServiceRegistry(Arrays.<Class<?>>asList(CATEGORIES).iterator()); ImageReaderSpi reader = new SampleImageReaderSpi(); registry.registerServiceProvider(reader, CATEGORIES[0]); ImageReaderSpi provider = registry.getServiceProviderByClass(SampleImageReaderSpi.class); assertEquals(reader, provider); }
public void testContains() { Class[] CATEGORIES = new Class[] {ImageReaderSpi.class}; ServiceRegistry registry = new ServiceRegistry(Arrays.<Class<?>>asList(CATEGORIES).iterator()); ImageReaderSpi reader1 = new SampleImageReaderSpi(); ImageReaderSpi reader2 = new SampleImageReaderSpi(); registry.registerServiceProvider(reader1, CATEGORIES[0]); assertTrue("Failed to check if reader1 registered", registry.contains(reader1)); assertFalse("Failed to check if reader2 registered", registry.contains(reader2)); }
public void testGetServiceProviders() { Class[] CATEGORIES = new Class[] {ImageReaderSpi.class}; ServiceRegistry registry = new ServiceRegistry(Arrays.<Class<?>>asList(CATEGORIES).iterator()); ImageReaderSpi reader = new SampleImageReaderSpi(); ImageReaderSpi reader1 = new Reader1Spi(); ImageReaderSpi reader2 = new Reader2Spi(); // Add 3 different providers to the registry registry.registerServiceProvider(reader, CATEGORIES[0]); registry.registerServiceProvider(reader1, CATEGORIES[0]); registry.registerServiceProvider(reader2, CATEGORIES[0]); // Add a different type of provider to the category ImageWriterSpi writer = new SampleImageWriterSpi(); try { registry.registerServiceProvider(writer, CATEGORIES[0]); fail("ClassCastException expected"); } catch (ClassCastException expected) { // Ok } // Set ordering between these providers // reader2 > reader1 > reader assertTrue( "Failed to set ordering: reader2 > reader1", registry.setOrdering(CATEGORIES[0], reader2, reader1)); assertTrue( "Failed to set ordering: reader1 > reader", registry.setOrdering(CATEGORIES[0], reader1, reader)); // Return false if this ordering has already been set assertFalse( "Failed to check if the ordering reader1 > reader has been set", registry.setOrdering(CATEGORIES[0], reader1, reader)); // If two providers are the same try { registry.setOrdering(CATEGORIES[0], reader, reader); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException expected) { // Ok } // If either provider is null try { registry.setOrdering(CATEGORIES[0], null, reader); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException expected) { // Ok } // Get the iterator of sorted providers Iterator it = registry.getServiceProviders(CATEGORIES[0], true); // Verify the order assertEquals("Failed to return reader2", it.next(), reader2); assertEquals("Failed to return reader1", it.next(), reader1); assertEquals("Failed to return reader", it.next(), reader); // The iterator should be able to run more than once it = registry.getServiceProviders(CATEGORIES[0], true); // Verify the order assertEquals("Failed to return reader2", it.next(), reader2); assertEquals("Failed to return reader1", it.next(), reader1); assertEquals("Failed to return reader", it.next(), reader); // Unset orderings assertTrue( "Failed to unset ordering: reader2 > reader1", registry.unsetOrdering(CATEGORIES[0], reader2, reader1)); assertTrue( "Failed to unset ordering: reader1 > reader", registry.unsetOrdering(CATEGORIES[0], reader1, reader)); // Return false if this ordering is not set assertFalse( "Failed to check if the ordering is not set", registry.unsetOrdering(CATEGORIES[0], reader2, reader)); }