You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by aa...@apache.org on 2010/06/15 09:50:02 UTC
svn commit: r954734 - in
/harmony/enhanced/java/trunk/classlib/modules/imageio/src:
main/java/javax/imageio/spi/ServiceRegistry.java
test/java/javax/imageio/spi/ServiceRegistryTest.java
Author: aaf
Date: Tue Jun 15 07:50:02 2010
New Revision: 954734
URL: http://svn.apache.org/viewvc?rev=954734&view=rev
Log:
Committed Lang's patch for HARMONY-6552: implemented ServiceRegistry.deregisterAll().
Modified:
harmony/enhanced/java/trunk/classlib/modules/imageio/src/main/java/javax/imageio/spi/ServiceRegistry.java
harmony/enhanced/java/trunk/classlib/modules/imageio/src/test/java/javax/imageio/spi/ServiceRegistryTest.java
Modified: harmony/enhanced/java/trunk/classlib/modules/imageio/src/main/java/javax/imageio/spi/ServiceRegistry.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/classlib/modules/imageio/src/main/java/javax/imageio/spi/ServiceRegistry.java?rev=954734&r1=954733&r2=954734&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/classlib/modules/imageio/src/main/java/javax/imageio/spi/ServiceRegistry.java (original)
+++ harmony/enhanced/java/trunk/classlib/modules/imageio/src/main/java/javax/imageio/spi/ServiceRegistry.java Tue Jun 15 07:50:02 2010
@@ -96,14 +96,12 @@ public class ServiceRegistry {
return categories.unsetOrdering(category, firstProvider, secondProvider);
}
- public void deregisterAll(Class<?> category) throws NotImplementedException {
- // TODO: implement
- throw new NotImplementedException();
+ public void deregisterAll(Class<?> category) {
+ categories.removeAll(category);
}
- public void deregisterAll() throws NotImplementedException {
- // TODO: implement
- throw new NotImplementedException();
+ public void deregisterAll() {
+ categories.removeAll();
}
@Override
@@ -263,6 +261,22 @@ public class ServiceRegistry {
providers.removeProvider(provider, registry, e.getKey());
}
}
+
+ void removeAll(Class<?> category) {
+ Object obj = categories.get(category);
+
+ if (obj == null) {
+ throw new IllegalArgumentException(Messages.getString("imageio.92", category));
+ }
+
+ ((ProvidersMap) obj).clear(registry);
+ }
+
+ void removeAll() {
+ for ( Map.Entry<Class<?>, ProvidersMap> e : categories.entrySet()) {
+ removeAll(e.getKey());
+ }
+ }
}
private static class ProvidersMap {
@@ -304,6 +318,19 @@ public class ServiceRegistry {
return true;
}
+
+ void clear(ServiceRegistry registry) {
+ for (Map.Entry<Class<?>, Object> e : providers.entrySet()) {
+ Object provider = e.getValue();
+
+ if (provider instanceof RegisterableService) {
+ ((RegisterableService) provider).onDeregistration(registry, e.getKey());
+ }
+ }
+
+ providers.clear();
+ nodeMap.clear();
+ }
Iterator<Class<?>> getProviderClasses() {
return providers.keySet().iterator();
Modified: harmony/enhanced/java/trunk/classlib/modules/imageio/src/test/java/javax/imageio/spi/ServiceRegistryTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/classlib/modules/imageio/src/test/java/javax/imageio/spi/ServiceRegistryTest.java?rev=954734&r1=954733&r2=954734&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/classlib/modules/imageio/src/test/java/javax/imageio/spi/ServiceRegistryTest.java (original)
+++ harmony/enhanced/java/trunk/classlib/modules/imageio/src/test/java/javax/imageio/spi/ServiceRegistryTest.java Tue Jun 15 07:50:02 2010
@@ -30,6 +30,32 @@ import javax.imageio.spi.ImageReaderSpi;
import javax.imageio.spi.ImageWriterSpi;
public class ServiceRegistryTest extends TestCase {
+
+ 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));
+ }
public void testContains() {
Class[] CATEGORIES = new Class[] {