Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 44103 invoked from network); 14 Jun 2010 16:11:16 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 14 Jun 2010 16:11:16 -0000 Received: (qmail 67795 invoked by uid 500); 14 Jun 2010 16:11:16 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 67772 invoked by uid 500); 14 Jun 2010 16:11:15 -0000 Mailing-List: contact commits-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list commits@harmony.apache.org Received: (qmail 67765 invoked by uid 99); 14 Jun 2010 16:11:15 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 14 Jun 2010 16:11:15 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 14 Jun 2010 16:11:13 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 5DEE923889E0; Mon, 14 Jun 2010 16:10:26 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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 Date: Mon, 14 Jun 2010 16:10:26 -0000 To: commits@harmony.apache.org From: tellison@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100614161026.5DEE923889E0@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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, 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> 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.> 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])); } }