/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @author Rustem V. Rafikov * @version $Revision: 1.3 $ */ package javax.imageio.spi; import java.util.Arrays; import org.apache.harmony.x.imageio.plugins.jpeg.JPEGImageReaderSpi; import org.apache.harmony.x.imageio.plugins.jpeg.JPEGImageWriterSpi; import org.apache.harmony.x.imageio.plugins.png.PNGImageReaderSpi; import org.apache.harmony.x.imageio.plugins.png.PNGImageWriterSpi; import org.apache.harmony.x.imageio.spi.FileIISSpi; import org.apache.harmony.x.imageio.spi.FileIOSSpi; import org.apache.harmony.x.imageio.spi.InputStreamIISSpi; import org.apache.harmony.x.imageio.spi.OutputStreamIOSSpi; import org.apache.harmony.x.imageio.spi.RAFIISSpi; import org.apache.harmony.x.imageio.spi.RAFIOSSpi; /* * @author Rustem V. Rafikov, Viskov Nikolay * @version $Revision: 1.3 $ */ /** * The IIORegistry class registers service provider instances (SPI). Service * provider instances are recognized by specific meta-information in the JAR * files containing them. The JAR files with SPI classes are loaded from the * application class path. * * @since Android 1.0 */ public final class IIORegistry extends ServiceRegistry { /** * The instance. */ private static IIORegistry instance; /** * The Constant CATEGORIES. */ private static final Class[] CATEGORIES = new Class[] { javax.imageio.spi.ImageWriterSpi.class, javax.imageio.spi.ImageReaderSpi.class, javax.imageio.spi.ImageInputStreamSpi.class, // javax.imageio.spi.ImageTranscoderSpi.class, javax.imageio.spi.ImageOutputStreamSpi.class }; /** * Instantiates a new IIO registry. */ private IIORegistry() { super(Arrays.<Class<?>> asList(CATEGORIES).iterator()); registerBuiltinSpis(); registerApplicationClasspathSpis(); } /** * Register built-in SPIs. */ private void registerBuiltinSpis() { registerServiceProvider(new JPEGImageWriterSpi()); registerServiceProvider(new JPEGImageReaderSpi()); registerServiceProvider(new PNGImageReaderSpi()); registerServiceProvider(new PNGImageWriterSpi()); registerServiceProvider(new FileIOSSpi()); registerServiceProvider(new FileIISSpi()); registerServiceProvider(new RAFIOSSpi()); registerServiceProvider(new RAFIISSpi()); registerServiceProvider(new OutputStreamIOSSpi()); registerServiceProvider(new InputStreamIISSpi()); // -- TODO implement } /** * Gets the default IIORegistry instance. * * @return the default IIORegistry instance. */ public static IIORegistry getDefaultInstance() { // TODO implement own instance for each ThreadGroup (see also // ThreadLocal) synchronized (IIORegistry.class) { if (instance == null) { instance = new IIORegistry(); } return instance; } } /** * Registers all service providers from the application class path. */ public void registerApplicationClasspathSpis() { // -- TODO implement for non-builtin plugins } }