src/share/classes/javax/imageio/spi/ServiceRegistry.java
Print this page
rev 9345 : 8035487: Fix raw and unchecked lint warnings in javax.imageio.spi
Reviewed-by:
*** 97,107 ****
*
*/
public class ServiceRegistry {
// Class -> Registry
! private Map categoryMap = new HashMap();
/**
* Constructs a <code>ServiceRegistry</code> instance with a
* set of categories taken from the <code>categories</code>
* argument.
--- 97,107 ----
*
*/
public class ServiceRegistry {
// Class -> Registry
! private Map<Class<?>, SubRegistry> categoryMap = new HashMap<>();
/**
* Constructs a <code>ServiceRegistry</code> instance with a
* set of categories taken from the <code>categories</code>
* argument.
*** 115,125 ****
public ServiceRegistry(Iterator<Class<?>> categories) {
if (categories == null) {
throw new IllegalArgumentException("categories == null!");
}
while (categories.hasNext()) {
! Class category = (Class)categories.next();
SubRegistry reg = new SubRegistry(this, category);
categoryMap.put(category, reg);
}
}
--- 115,125 ----
public ServiceRegistry(Iterator<Class<?>> categories) {
if (categories == null) {
throw new IllegalArgumentException("categories == null!");
}
while (categories.hasNext()) {
! Class<?> category = categories.next();
SubRegistry reg = new SubRegistry(this, category);
categoryMap.put(category, reg);
}
}
*** 215,239 ****
*
* @return an <code>Iterator</code> containing
* <code>Class</code>objects.
*/
public Iterator<Class<?>> getCategories() {
! Set keySet = categoryMap.keySet();
return keySet.iterator();
}
/**
* Returns an Iterator containing the subregistries to which the
* provider belongs.
*/
! private Iterator getSubRegistries(Object provider) {
! List l = new ArrayList();
! Iterator iter = categoryMap.keySet().iterator();
while (iter.hasNext()) {
! Class c = (Class)iter.next();
if (c.isAssignableFrom(provider.getClass())) {
! l.add((SubRegistry)categoryMap.get(c));
}
}
return l.iterator();
}
--- 215,239 ----
*
* @return an <code>Iterator</code> containing
* <code>Class</code>objects.
*/
public Iterator<Class<?>> getCategories() {
! Set<Class<?>> keySet = categoryMap.keySet();
return keySet.iterator();
}
/**
* Returns an Iterator containing the subregistries to which the
* provider belongs.
*/
! private Iterator<SubRegistry> getSubRegistries(Object provider) {
! List<SubRegistry> l = new ArrayList<>();
! Iterator<Class<?>> iter = categoryMap.keySet().iterator();
while (iter.hasNext()) {
! Class<?> c = iter.next();
if (c.isAssignableFrom(provider.getClass())) {
! l.add(categoryMap.get(c));
}
}
return l.iterator();
}
*** 266,276 ****
public <T> boolean registerServiceProvider(T provider,
Class<T> category) {
if (provider == null) {
throw new IllegalArgumentException("provider == null!");
}
! SubRegistry reg = (SubRegistry)categoryMap.get(category);
if (reg == null) {
throw new IllegalArgumentException("category unknown!");
}
if (!category.isAssignableFrom(provider.getClass())) {
throw new ClassCastException();
--- 266,276 ----
public <T> boolean registerServiceProvider(T provider,
Class<T> category) {
if (provider == null) {
throw new IllegalArgumentException("provider == null!");
}
! SubRegistry reg = categoryMap.get(category);
if (reg == null) {
throw new IllegalArgumentException("category unknown!");
}
if (!category.isAssignableFrom(provider.getClass())) {
throw new ClassCastException();
*** 299,311 ****
*/
public void registerServiceProvider(Object provider) {
if (provider == null) {
throw new IllegalArgumentException("provider == null!");
}
! Iterator regs = getSubRegistries(provider);
while (regs.hasNext()) {
! SubRegistry reg = (SubRegistry)regs.next();
reg.registerServiceProvider(provider);
}
}
/**
--- 299,311 ----
*/
public void registerServiceProvider(Object provider) {
if (provider == null) {
throw new IllegalArgumentException("provider == null!");
}
! Iterator<SubRegistry> regs = getSubRegistries(provider);
while (regs.hasNext()) {
! SubRegistry reg = regs.next();
reg.registerServiceProvider(provider);
}
}
/**
*** 369,379 ****
public <T> boolean deregisterServiceProvider(T provider,
Class<T> category) {
if (provider == null) {
throw new IllegalArgumentException("provider == null!");
}
! SubRegistry reg = (SubRegistry)categoryMap.get(category);
if (reg == null) {
throw new IllegalArgumentException("category unknown!");
}
if (!category.isAssignableFrom(provider.getClass())) {
throw new ClassCastException();
--- 369,379 ----
public <T> boolean deregisterServiceProvider(T provider,
Class<T> category) {
if (provider == null) {
throw new IllegalArgumentException("provider == null!");
}
! SubRegistry reg = categoryMap.get(category);
if (reg == null) {
throw new IllegalArgumentException("category unknown!");
}
if (!category.isAssignableFrom(provider.getClass())) {
throw new ClassCastException();
*** 392,404 ****
*/
public void deregisterServiceProvider(Object provider) {
if (provider == null) {
throw new IllegalArgumentException("provider == null!");
}
! Iterator regs = getSubRegistries(provider);
while (regs.hasNext()) {
! SubRegistry reg = (SubRegistry)regs.next();
reg.deregisterServiceProvider(provider);
}
}
/**
--- 392,404 ----
*/
public void deregisterServiceProvider(Object provider) {
if (provider == null) {
throw new IllegalArgumentException("provider == null!");
}
! Iterator<SubRegistry> regs = getSubRegistries(provider);
while (regs.hasNext()) {
! SubRegistry reg = regs.next();
reg.deregisterServiceProvider(provider);
}
}
/**
*** 415,427 ****
*/
public boolean contains(Object provider) {
if (provider == null) {
throw new IllegalArgumentException("provider == null!");
}
! Iterator regs = getSubRegistries(provider);
while (regs.hasNext()) {
! SubRegistry reg = (SubRegistry)regs.next();
if (reg.contains(provider)) {
return true;
}
}
--- 415,427 ----
*/
public boolean contains(Object provider) {
if (provider == null) {
throw new IllegalArgumentException("provider == null!");
}
! Iterator<SubRegistry> regs = getSubRegistries(provider);
while (regs.hasNext()) {
! SubRegistry reg = regs.next();
if (reg.contains(provider)) {
return true;
}
}
*** 449,463 ****
* @exception IllegalArgumentException if there is no category
* corresponding to <code>category</code>.
*/
public <T> Iterator<T> getServiceProviders(Class<T> category,
boolean useOrdering) {
! SubRegistry reg = (SubRegistry)categoryMap.get(category);
if (reg == null) {
throw new IllegalArgumentException("category unknown!");
}
! return reg.getServiceProviders(useOrdering);
}
/**
* A simple filter interface used by
* <code>ServiceRegistry.getServiceProviders</code> to select
--- 449,465 ----
* @exception IllegalArgumentException if there is no category
* corresponding to <code>category</code>.
*/
public <T> Iterator<T> getServiceProviders(Class<T> category,
boolean useOrdering) {
! SubRegistry reg = categoryMap.get(category);
if (reg == null) {
throw new IllegalArgumentException("category unknown!");
}
! @SuppressWarnings("unchecked")
! Iterator<T> it = (Iterator<T>)reg.getServiceProviders(useOrdering);
! return it;
}
/**
* A simple filter interface used by
* <code>ServiceRegistry.getServiceProviders</code> to select
*** 506,521 ****
* corresponding to <code>category</code>.
*/
public <T> Iterator<T> getServiceProviders(Class<T> category,
Filter filter,
boolean useOrdering) {
! SubRegistry reg = (SubRegistry)categoryMap.get(category);
if (reg == null) {
throw new IllegalArgumentException("category unknown!");
}
! Iterator iter = getServiceProviders(category, useOrdering);
! return new FilterIterator(iter, filter);
}
/**
* Returns the currently registered service provider object that
* is of the given class type. At most one object of a given
--- 508,523 ----
* corresponding to <code>category</code>.
*/
public <T> Iterator<T> getServiceProviders(Class<T> category,
Filter filter,
boolean useOrdering) {
! SubRegistry reg = categoryMap.get(category);
if (reg == null) {
throw new IllegalArgumentException("category unknown!");
}
! Iterator<T> iter = getServiceProviders(category, useOrdering);
! return new FilterIterator<>(iter, filter);
}
/**
* Returns the currently registered service provider object that
* is of the given class type. At most one object of a given
*** 536,550 ****
*/
public <T> T getServiceProviderByClass(Class<T> providerClass) {
if (providerClass == null) {
throw new IllegalArgumentException("providerClass == null!");
}
! Iterator iter = categoryMap.keySet().iterator();
while (iter.hasNext()) {
! Class c = (Class)iter.next();
if (c.isAssignableFrom(providerClass)) {
! SubRegistry reg = (SubRegistry)categoryMap.get(c);
T provider = reg.getServiceProviderByClass(providerClass);
if (provider != null) {
return provider;
}
}
--- 538,552 ----
*/
public <T> T getServiceProviderByClass(Class<T> providerClass) {
if (providerClass == null) {
throw new IllegalArgumentException("providerClass == null!");
}
! Iterator<Class<?>> iter = categoryMap.keySet().iterator();
while (iter.hasNext()) {
! Class<?> c = iter.next();
if (c.isAssignableFrom(providerClass)) {
! SubRegistry reg = categoryMap.get(c);
T provider = reg.getServiceProviderByClass(providerClass);
if (provider != null) {
return provider;
}
}
*** 587,597 ****
throw new IllegalArgumentException("provider is null!");
}
if (firstProvider == secondProvider) {
throw new IllegalArgumentException("providers are the same!");
}
! SubRegistry reg = (SubRegistry)categoryMap.get(category);
if (reg == null) {
throw new IllegalArgumentException("category unknown!");
}
if (reg.contains(firstProvider) &&
reg.contains(secondProvider)) {
--- 589,599 ----
throw new IllegalArgumentException("provider is null!");
}
if (firstProvider == secondProvider) {
throw new IllegalArgumentException("providers are the same!");
}
! SubRegistry reg = categoryMap.get(category);
if (reg == null) {
throw new IllegalArgumentException("category unknown!");
}
if (reg.contains(firstProvider) &&
reg.contains(secondProvider)) {
*** 633,643 ****
throw new IllegalArgumentException("provider is null!");
}
if (firstProvider == secondProvider) {
throw new IllegalArgumentException("providers are the same!");
}
! SubRegistry reg = (SubRegistry)categoryMap.get(category);
if (reg == null) {
throw new IllegalArgumentException("category unknown!");
}
if (reg.contains(firstProvider) &&
reg.contains(secondProvider)) {
--- 635,645 ----
throw new IllegalArgumentException("provider is null!");
}
if (firstProvider == secondProvider) {
throw new IllegalArgumentException("providers are the same!");
}
! SubRegistry reg = categoryMap.get(category);
if (reg == null) {
throw new IllegalArgumentException("category unknown!");
}
if (reg.contains(firstProvider) &&
reg.contains(secondProvider)) {
*** 654,664 ****
*
* @exception IllegalArgumentException if there is no category
* corresponding to <code>category</code>.
*/
public void deregisterAll(Class<?> category) {
! SubRegistry reg = (SubRegistry)categoryMap.get(category);
if (reg == null) {
throw new IllegalArgumentException("category unknown!");
}
reg.clear();
}
--- 656,666 ----
*
* @exception IllegalArgumentException if there is no category
* corresponding to <code>category</code>.
*/
public void deregisterAll(Class<?> category) {
! SubRegistry reg = categoryMap.get(category);
if (reg == null) {
throw new IllegalArgumentException("category unknown!");
}
reg.clear();
}
*** 666,678 ****
/**
* Deregisters all currently registered service providers from all
* categories.
*/
public void deregisterAll() {
! Iterator iter = categoryMap.values().iterator();
while (iter.hasNext()) {
! SubRegistry reg = (SubRegistry)iter.next();
reg.clear();
}
}
/**
--- 668,680 ----
/**
* Deregisters all currently registered service providers from all
* categories.
*/
public void deregisterAll() {
! Iterator<SubRegistry> iter = categoryMap.values().iterator();
while (iter.hasNext()) {
! SubRegistry reg = iter.next();
reg.clear();
}
}
/**
*** 697,715 ****
*/
class SubRegistry {
ServiceRegistry registry;
! Class category;
// Provider Objects organized by partial oridering
! PartiallyOrderedSet poset = new PartiallyOrderedSet();
// Class -> Provider Object of that class
! Map<Class<?>,Object> map = new HashMap();
! public SubRegistry(ServiceRegistry registry, Class category) {
this.registry = registry;
this.category = category;
}
public boolean registerServiceProvider(Object provider) {
--- 699,719 ----
*/
class SubRegistry {
ServiceRegistry registry;
! Class<?> category;
// Provider Objects organized by partial oridering
! PartiallyOrderedSet<Object> poset = new PartiallyOrderedSet<>();
// Class -> Provider Object of that class
! // No way to express heterogeneous map, we want
! // Map<Class<T>, T>, where T is ?
! Map<Class<?>, Object> map = new HashMap<>();
! public SubRegistry(ServiceRegistry registry, Class<?> category) {
this.registry = registry;
this.category = category;
}
public boolean registerServiceProvider(Object provider) {
*** 763,786 ****
public boolean unsetOrdering(Object firstProvider,
Object secondProvider) {
return poset.unsetOrdering(firstProvider, secondProvider);
}
! public Iterator getServiceProviders(boolean useOrdering) {
if (useOrdering) {
return poset.iterator();
} else {
return map.values().iterator();
}
}
public <T> T getServiceProviderByClass(Class<T> providerClass) {
return (T)map.get(providerClass);
}
public void clear() {
! Iterator iter = map.values().iterator();
while (iter.hasNext()) {
Object provider = iter.next();
iter.remove();
if (provider instanceof RegisterableService) {
--- 767,791 ----
public boolean unsetOrdering(Object firstProvider,
Object secondProvider) {
return poset.unsetOrdering(firstProvider, secondProvider);
}
! public Iterator<Object> getServiceProviders(boolean useOrdering) {
if (useOrdering) {
return poset.iterator();
} else {
return map.values().iterator();
}
}
+ @SuppressWarnings("unchecked")
public <T> T getServiceProviderByClass(Class<T> providerClass) {
return (T)map.get(providerClass);
}
public void clear() {
! Iterator<Object> iter = map.values().iterator();
while (iter.hasNext()) {
Object provider = iter.next();
iter.remove();
if (provider instanceof RegisterableService) {
*** 801,816 ****
* A class for wrapping <code>Iterators</code> with a filter function.
* This provides an iterator for a subset without duplication.
*/
class FilterIterator<T> implements Iterator<T> {
! private Iterator<T> iter;
private ServiceRegistry.Filter filter;
private T next = null;
! public FilterIterator(Iterator<T> iter,
ServiceRegistry.Filter filter) {
this.iter = iter;
this.filter = filter;
advance();
}
--- 806,821 ----
* A class for wrapping <code>Iterators</code> with a filter function.
* This provides an iterator for a subset without duplication.
*/
class FilterIterator<T> implements Iterator<T> {
! private Iterator<? extends T> iter;
private ServiceRegistry.Filter filter;
private T next = null;
! public FilterIterator(Iterator<? extends T> iter,
ServiceRegistry.Filter filter) {
this.iter = iter;
this.filter = filter;
advance();
}