Code drop from //branches/cupcake/...@124589
diff --git a/awt/javax/imageio/spi/ServiceRegistry.java b/awt/javax/imageio/spi/ServiceRegistry.java
index 1a18b02..79b02a3 100644
--- a/awt/javax/imageio/spi/ServiceRegistry.java
+++ b/awt/javax/imageio/spi/ServiceRegistry.java
@@ -18,48 +18,53 @@
  * @author Rustem V. Rafikov
  * @version $Revision: 1.3 $
  */
+
 package javax.imageio.spi;
 
 import java.util.*;
 import java.util.Map.Entry;
 
 /**
- * The ServiceRegistry class provides ability to register, 
- * deregister, look up and obtain service provider instances (SPIs).
- * A service means a set of interfaces and classes, and a service 
- * provider is an implementation of a service. Service providers can 
- * be associated with one or more categories. Each category is defined 
- * by a class or interface. Only a single instance of a each class is 
- * allowed to be registered as a category. 
+ * The ServiceRegistry class provides ability to register, deregister, look up
+ * and obtain service provider instances (SPIs). A service means a set of
+ * interfaces and classes, and a service provider is an implementation of a
+ * service. Service providers can be associated with one or more categories.
+ * Each category is defined by a class or interface. Only a single instance of a
+ * each class is allowed to be registered as a category.
+ * 
+ * @since Android 1.0
  */
 public class ServiceRegistry {
 
-    /** The categories. */
+    /**
+     * The categories.
+     */
     CategoriesMap categories = new CategoriesMap(this);
 
     /**
      * Instantiates a new ServiceRegistry with the specified categories.
      * 
-     * @param categoriesIterator an Iterator of Class objects 
-     * for defining of categories.
+     * @param categoriesIterator
+     *            an Iterator of Class objects for defining of categories.
      */
     public ServiceRegistry(Iterator<Class<?>> categoriesIterator) {
         if (null == categoriesIterator) {
             throw new IllegalArgumentException("categories iterator should not be NULL");
         }
-        while(categoriesIterator.hasNext()) {
-            Class<?> c =  categoriesIterator.next();
+        while (categoriesIterator.hasNext()) {
+            Class<?> c = categoriesIterator.next();
             categories.addCategory(c);
         }
     }
 
     /**
-     * Looks up and instantiates the available providers of this service using 
+     * Looks up and instantiates the available providers of this service using
      * the specified class loader.
      * 
-     * @param providerClass the Class object of the provider to be looked up.
-     * @param loader the class loader to be used.
-     * 
+     * @param providerClass
+     *            the Class object of the provider to be looked up.
+     * @param loader
+     *            the class loader to be used.
      * @return the iterator of providers objects for this service.
      */
     public static <T> Iterator<T> lookupProviders(Class<T> providerClass, ClassLoader loader) {
@@ -67,11 +72,11 @@
     }
 
     /**
-     * Looks up and instantiates the available providers of this service using 
+     * Looks up and instantiates the available providers of this service using
      * the context class loader.
      * 
-     * @param providerClass the Class object of the provider to be looked up.
-     * 
+     * @param providerClass
+     *            the Class object of the provider to be looked up.
      * @return the iterator of providers objects for this service.
      */
     public static <T> Iterator<T> lookupProviders(Class<T> providerClass) {
@@ -79,14 +84,15 @@
     }
 
     /**
-     * Registers the specified service provider object in the
-     * specified categories.
+     * Registers the specified service provider object in the specified
+     * categories.
      * 
-     * @param provider the specified provider to be registered.
-     * @param category the category.
-     * 
-     * @return true if no provider of the same class is registered 
-     * in this category, false otherwise.
+     * @param provider
+     *            the specified provider to be registered.
+     * @param category
+     *            the category.
+     * @return true, if no provider of the same class is registered in this
+     *         category, false otherwise.
      */
     public <T> boolean registerServiceProvider(T provider, Class<T> category) {
         return categories.addProvider(provider, category);
@@ -95,7 +101,8 @@
     /**
      * Registers a list of service providers.
      * 
-     * @param providers the list of service providers.
+     * @param providers
+     *            the list of service providers.
      */
     public void registerServiceProviders(Iterator<?> providers) {
         for (Iterator<?> iterator = providers; iterator.hasNext();) {
@@ -104,67 +111,70 @@
     }
 
     /**
-     * Registers the specified service provider object in all
-     * categories.
+     * Registers the specified service provider object in all categories.
      * 
-     * @param provider the service provider.
+     * @param provider
+     *            the service provider.
      */
     public void registerServiceProvider(Object provider) {
         categories.addProvider(provider, null);
     }
 
     /**
-     * Deregisters the specifies service provider from the
-     * specified category.
+     * Deregisters the specifies service provider from the specified category.
      * 
-     * @param provider the service provider to be deregistered.
-     * @param category the specified category.
-     * 
-     * @return true if the provider was already registered 
-     * in the specified category, false otherwise.
+     * @param provider
+     *            the service provider to be deregistered.
+     * @param category
+     *            the specified category.
+     * @return true, if the provider was already registered in the specified
+     *         category, false otherwise.
      */
     public <T> boolean deregisterServiceProvider(T provider, Class<T> category) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Deregisters the specified service provider from all
-     * categories.
+     * Deregisters the specified service provider from all categories.
      * 
-     * @param provider the specified service provider.
+     * @param provider
+     *            the specified service provider.
      */
     public void deregisterServiceProvider(Object provider) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Gets an Iterator of registered service providers
-     * in the specified category which satisfy the specified Filter. 
-     * The useOrdering parameter indicates whether the iterator will 
-     * return all of the server provider objects in a set order. 
+     * Gets an Iterator of registered service providers in the specified
+     * category which satisfy the specified Filter. The useOrdering parameter
+     * indicates whether the iterator will return all of the server provider
+     * objects in a set order.
      * 
-     * @param category the specified category.
-     * @param filter the specified filter.
-     * @param useOrdering the flag indicating that providers are ordered
-     * in the returned Iterator.
-     * 
+     * @param category
+     *            the specified category.
+     * @param filter
+     *            the specified filter.
+     * @param useOrdering
+     *            the flag indicating that providers are ordered in the returned
+     *            Iterator.
      * @return the iterator of registered service providers.
      */
     @SuppressWarnings("unchecked")
     public <T> Iterator<T> getServiceProviders(Class<T> category, Filter filter, boolean useOrdering) {
-        return new FilteredIterator<T>(filter, (Iterator<T>)categories.getProviders(category, useOrdering));
+        return new FilteredIterator<T>(filter, (Iterator<T>)categories.getProviders(category,
+                useOrdering));
     }
 
     /**
-     * Gets an Iterator of all registered service providers
-     * in the specified category. The useOrdering parameter
-     * indicates whether the iterator will return all of the server 
-     * provider objects in a set order. 
+     * Gets an Iterator of all registered service providers in the specified
+     * category. The useOrdering parameter indicates whether the iterator will
+     * return all of the server provider objects in a set order.
      * 
-     * @param category the specified category.
-     * @param useOrdering the flag indicating that providers are ordered
-     * in the returned Iterator.
-     * 
+     * @param category
+     *            the specified category.
+     * @param useOrdering
+     *            the flag indicating that providers are ordered in the returned
+     *            Iterator.
      * @return the Iterator of service providers.
      */
     @SuppressWarnings("unchecked")
@@ -173,11 +183,11 @@
     }
 
     /**
-     * Gets the registered service provider object that has the 
-     * specified class type.
+     * Gets the registered service provider object that has the specified class
+     * type.
      * 
-     * @param providerClass the specified provider class.
-     * 
+     * @param providerClass
+     *            the specified provider class.
      * @return the service provider object.
      */
     public <T> T getServiceProviderByClass(Class<T> providerClass) {
@@ -185,28 +195,32 @@
     }
 
     /**
-     * Sets an ordering between two service provider objects 
-     * within the specified category. 
+     * Sets an ordering between two service provider objects within the
+     * specified category.
      * 
-     * @param category the specified category.
-     * @param firstProvider the first provider.
-     * @param secondProvider the second provider.
-     * 
-     * @return true if a previously unset order was set.
+     * @param category
+     *            the specified category.
+     * @param firstProvider
+     *            the first provider.
+     * @param secondProvider
+     *            the second provider.
+     * @return true, if a previously unset order was set.
      */
     public <T> boolean setOrdering(Class<T> category, T firstProvider, T secondProvider) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Unsets an ordering between two service provider objects 
-     * within the specified category.
+     * Unsets an ordering between two service provider objects within the
+     * specified category.
      * 
-     * @param category the specified category.
-     * @param firstProvider the first provider.
-     * @param secondProvider the second provider.
-     * 
-     * @return true if a previously unset order was removed.
+     * @param category
+     *            the specified category.
+     * @param firstProvider
+     *            the first provider.
+     * @param secondProvider
+     *            the second provider.
+     * @return true, if a previously unset order was removed.
      */
     public <T> boolean unsetOrdering(Class<T> category, T firstProvider, T secondProvider) {
         throw new UnsupportedOperationException("Not supported yet");
@@ -215,7 +229,8 @@
     /**
      * Deregisters all providers from the specified category.
      * 
-     * @param category the specified category.
+     * @param category
+     *            the specified category.
      */
     public void deregisterAll(Class<?> category) {
         throw new UnsupportedOperationException("Not supported yet");
@@ -229,32 +244,31 @@
     }
 
     /**
-     * Finalizes this object. 
+     * Finalizes this object.
      * 
-     * @throws Throwable throws if an error occurs during 
-     * finalization.
+     * @throws Throwable
+     *             if an error occurs during finalization.
      */
     @Override
     public void finalize() throws Throwable {
-        //TODO uncomment when deregisterAll is implemented
-        //deregisterAll();
+        // TODO uncomment when deregisterAll is implemented
+        // deregisterAll();
     }
 
     /**
      * Checks whether the specified provider has been already registered.
      * 
-     * @param provider the provider to be checked.
-     * 
+     * @param provider
+     *            the provider to be checked.
      * @return true, if the specified provider has been already registered,
-     * false otherwise.
+     *         false otherwise.
      */
     public boolean contains(Object provider) {
         throw new UnsupportedOperationException("Not supported yet");
     }
 
     /**
-     * Gets an iterator of Class objects representing the current 
-     * categories.
+     * Gets an iterator of Class objects representing the current categories.
      * 
      * @return the Iterator of Class objects.
      */
@@ -263,20 +277,22 @@
     }
 
     /**
-     * The ServiceRegistry.Filter interface is used by 
-     * ServiceRegistry.getServiceProviders to filter providers according
-     * to the specified criterion. 
+     * The ServiceRegistry.Filter interface is used by
+     * ServiceRegistry.getServiceProviders to filter providers according to the
+     * specified criterion.
+     * 
+     * @since Android 1.0
      */
     public static interface Filter {
-        
+
         /**
-         * Returns true if the specified provider satisfies the 
-         * criterion of this Filter.
+         * Returns true if the specified provider satisfies the criterion of
+         * this Filter.
          * 
-         * @param provider the provider.
-         * 
-         * @return true if the specified provider satisfies the 
-         * criterion of this Filter, false otherwise.
+         * @param provider
+         *            the provider.
+         * @return true, if the specified provider satisfies the criterion of
+         *         this Filter, false otherwise.
          */
         boolean filter(Object provider);
     }
@@ -285,30 +301,36 @@
      * The Class CategoriesMap.
      */
     private static class CategoriesMap {
-        
-        /** The categories. */
+
+        /**
+         * The categories.
+         */
         Map<Class<?>, ProvidersMap> categories = new HashMap<Class<?>, ProvidersMap>();
 
-        /** The registry. */
+        /**
+         * The registry.
+         */
         ServiceRegistry registry;
 
         /**
          * Instantiates a new categories map.
          * 
-         * @param registry the registry
+         * @param registry
+         *            the registry.
          */
         public CategoriesMap(ServiceRegistry registry) {
             this.registry = registry;
         }
 
-        //-- TODO: useOrdering
+        // -- TODO: useOrdering
         /**
          * Gets the providers.
          * 
-         * @param category the category
-         * @param useOrdering the use ordering
-         * 
-         * @return the providers
+         * @param category
+         *            the category.
+         * @param useOrdering
+         *            the use ordering.
+         * @return the providers.
          */
         Iterator<?> getProviders(Class<?> category, boolean useOrdering) {
             ProvidersMap providers = categories.get(category);
@@ -321,7 +343,7 @@
         /**
          * List.
          * 
-         * @return the iterator< class<?>>
+         * @return the iterator< class<?>>.
          */
         Iterator<Class<?>> list() {
             return categories.keySet().iterator();
@@ -330,7 +352,8 @@
         /**
          * Adds the category.
          * 
-         * @param category the category
+         * @param category
+         *            the category.
          */
         void addCategory(Class<?> category) {
             categories.put(category, new ProvidersMap());
@@ -341,10 +364,11 @@
          * <code>null</code> then the provider will be added to all categories
          * which the provider is assignable from.
          * 
-         * @param provider provider to add
-         * @param category category to add provider to
-         * 
-         * @return if there were such provider in some category
+         * @param provider
+         *            provider to add.
+         * @param category
+         *            category to add provider to.
+         * @return true, if there were such provider in some category.
          */
         boolean addProvider(Object provider, Class<?> category) {
             if (provider == null) {
@@ -355,11 +379,11 @@
             if (category == null) {
                 rt = findAndAdd(provider);
             } else {
-                rt  = addToNamed(provider, category);
+                rt = addToNamed(provider, category);
             }
 
             if (provider instanceof RegisterableService) {
-                ((RegisterableService) provider).onRegistration(registry, category);
+                ((RegisterableService)provider).onRegistration(registry, category);
             }
 
             return rt;
@@ -368,10 +392,11 @@
         /**
          * Adds the to named.
          * 
-         * @param provider the provider
-         * @param category the category
-         * 
-         * @return true, if successful
+         * @param provider
+         *            the provider.
+         * @param category
+         *            the category.
+         * @return true, if successful.
          */
         private boolean addToNamed(Object provider, Class<?> category) {
             Object obj = categories.get(category);
@@ -380,15 +405,15 @@
                 throw new IllegalArgumentException("Unknown category: " + category);
             }
 
-            return ((ProvidersMap) obj).addProvider(provider);
+            return ((ProvidersMap)obj).addProvider(provider);
         }
 
         /**
          * Find and add.
          * 
-         * @param provider the provider
-         * 
-         * @return true, if successful
+         * @param provider
+         *            the provider.
+         * @return true, if successful.
          */
         private boolean findAndAdd(Object provider) {
             boolean rt = false;
@@ -405,17 +430,19 @@
      * The Class ProvidersMap.
      */
     private static class ProvidersMap {
-        //-- TODO: providers ordering support
+        // -- TODO: providers ordering support
 
-        /** The providers. */
+        /**
+         * The providers.
+         */
         Map<Class<?>, Object> providers = new HashMap<Class<?>, Object>();
 
         /**
          * Adds the provider.
          * 
-         * @param provider the provider
-         * 
-         * @return true, if successful
+         * @param provider
+         *            the provider.
+         * @return true, if successful.
          */
         boolean addProvider(Object provider) {
             return providers.put(provider.getClass(), provider) != null;
@@ -424,19 +451,19 @@
         /**
          * Gets the provider classes.
          * 
-         * @return the provider classes
+         * @return the provider classes.
          */
         Iterator<Class<?>> getProviderClasses() {
             return providers.keySet().iterator();
         }
 
-        //-- TODO ordering
+        // -- TODO ordering
         /**
          * Gets the providers.
          * 
-         * @param userOrdering the user ordering
-         * 
-         * @return the providers
+         * @param userOrdering
+         *            the user ordering.
+         * @return the providers.
          */
         Iterator<?> getProviders(boolean userOrdering) {
             return providers.values().iterator();
@@ -448,20 +475,28 @@
      */
     private static class FilteredIterator<E> implements Iterator<E> {
 
-        /** The filter. */
+        /**
+         * The filter.
+         */
         private Filter filter;
-        
-        /** The backend. */
+
+        /**
+         * The backend.
+         */
         private Iterator<E> backend;
-        
-        /** The next obj. */
+
+        /**
+         * The next obj.
+         */
         private E nextObj;
 
         /**
          * Instantiates a new filtered iterator.
          * 
-         * @param filter the filter
-         * @param backend the backend
+         * @param filter
+         *            the filter.
+         * @param backend
+         *            the backend.
          */
         public FilteredIterator(Filter filter, Iterator<E> backend) {
             this.filter = filter;
@@ -472,7 +507,7 @@
         /**
          * Next.
          * 
-         * @return the e
+         * @return the e.
          */
         public E next() {
             if (nextObj == null) {
@@ -486,7 +521,7 @@
         /**
          * Checks for next.
          * 
-         * @return true, if successful
+         * @return true, if successful.
          */
         public boolean hasNext() {
             return nextObj != null;
@@ -500,7 +535,8 @@
         }
 
         /**
-         * Sets nextObj to a next provider matching the criterion given by the filter.
+         * Sets nextObj to a next provider matching the criterion given by the
+         * filter.
          */
         private void findNext() {
             nextObj = null;