blob: 01ddeaafeea4a41355266a6d4409b4ec29e55808 [file] [log] [blame]
/*
* 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
}
}