blob: 3c1c989db3403f0f8a7eb3324b8c085edec34566 [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.
*/
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 builtin 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
}
}