You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2010/06/14 18:10:26 UTC
svn commit: r954535 - in
/harmony/enhanced/java/trunk/classlib/modules/imageio/src:
main/java/javax/imageio/spi/ServiceRegistry.java
test/java/javax/imageio/spi/ServiceRegistryTest.java
Author: tellison
Date: Mon Jun 14 16:10:26 2010
New Revision: 954535
URL: http://svn.apache.org/viewvc?rev=954535&view=rev
Log:
Apply patch for HARMONY-6548 (Implementation of method deregisterServiceProvider(Object))
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=954535&r1=954534&r2=954535&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 Mon Jun 14 16:10:26 2010
@@ -69,9 +69,8 @@ public class ServiceRegistry {
return categories.removeProvider(provider, category);
}
- public void deregisterServiceProvider(Object provider) throws NotImplementedException {
- // TODO: implement
- throw new NotImplementedException();
+ public void deregisterServiceProvider(Object provider) {
+ categories.removeProvider(provider);
}
// @SuppressWarnings("unchecked")
@@ -233,12 +232,23 @@ public class ServiceRegistry {
Object obj = categories.get(category);
- if (null == obj) {
+ if (obj == null) {
throw new IllegalArgumentException(Messages.getString("imageio.92", category));
}
return ((ProvidersMap) obj).removeProvider(provider, registry, category);
}
+
+ void removeProvider(Object provider) {
+ if (provider == null) {
+ throw new IllegalArgumentException(Messages.getString("imageio.5E"));
+ }
+
+ for (Entry<Class<?>, ProvidersMap> e : categories.entrySet()) {
+ ProvidersMap providers = e.getValue();
+ providers.removeProvider(provider, registry, e.getKey());
+ }
+ }
}
private static class ProvidersMap {
@@ -262,17 +272,19 @@ public class ServiceRegistry {
boolean removeProvider(Object provider,
ServiceRegistry registry, Class<?> category) {
- //TODO remove provider from nodeMap after task HARMONY-6507 has been resolved
- Object obj = providers.remove(provider.getClass());
+ Object obj = providers.get(provider.getClass());
if ((obj == null) || (obj != provider)) {
return false;
}
+ providers.remove(provider.getClass());
+ nodeMap.remove(provider);
+
if (provider instanceof RegisterableService) {
((RegisterableService) provider).onDeregistration(registry, category);
}
- return (obj == null ? false : true);
+ return true;
}
Iterator<Class<?>> getProviderClasses() {
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=954535&r1=954534&r2=954535&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 Mon Jun 14 16:10:26 2010
@@ -126,21 +126,34 @@ public class ServiceRegistryTest extends
}
@SuppressWarnings("unchecked")
- public void testDeregisterServiceProvider() {
+ public void testDeregisterServiceProvider() throws Exception {
Class[] CATEGORIES = new Class[] {
- javax.imageio.spi.ImageReaderSpi.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() returns incorrect value for a registered provider ",
+ assertTrue("deregisterServiceProvider(Object, Class) returns incorrect value for a registered provider ",
registry.deregisterServiceProvider(spi, CATEGORIES[0]));
- assertFalse("deregisterServiceProvider() returns incorrect value for a unregistered provider",
+ 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]));
}
}