com.google.code.appengine.imageio.spi.IIORegistry Maven / Gradle / Ivy
The newest version!
/*
* 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
*/
package com.google.code.appengine.imageio.spi;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Arrays;
import java.util.Collections;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.Map;
import org.apache.harmony.x.imageio.plugins.gif.GIFImageReaderSpi;
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;
import com.google.code.appengine.imageio.spi.IIORegistry;
import com.google.code.appengine.imageio.spi.ServiceRegistry;
public final class IIORegistry extends ServiceRegistry {
private static Map instances =
Collections.synchronizedMap(new IdentityHashMap());
private static final Class[] CATEGORIES = new Class[] {
com.google.code.appengine.imageio.spi.ImageWriterSpi.class,
com.google.code.appengine.imageio.spi.ImageReaderSpi.class,
com.google.code.appengine.imageio.spi.ImageInputStreamSpi.class,
// javax.imageio.spi.ImageTranscoderSpi.class,
com.google.code.appengine.imageio.spi.ImageOutputStreamSpi.class };
private IIORegistry() {
super(Arrays.> asList(CATEGORIES).iterator());
registerBuiltinSpis();
registerApplicationClasspathSpis();
}
private void registerBuiltinSpis() {
registerServiceProvider(new JPEGImageWriterSpi());
registerServiceProvider(new JPEGImageReaderSpi());
registerServiceProvider(new PNGImageReaderSpi());
registerServiceProvider(new PNGImageWriterSpi());
registerServiceProvider(new GIFImageReaderSpi());
registerServiceProvider(new FileIOSSpi());
registerServiceProvider(new FileIISSpi());
registerServiceProvider(new RAFIOSSpi());
registerServiceProvider(new RAFIISSpi());
registerServiceProvider(new OutputStreamIOSSpi());
registerServiceProvider(new InputStreamIISSpi());
}
public static IIORegistry getDefaultInstance() {
ThreadGroup tg = Thread.currentThread().getThreadGroup();
synchronized (instances) {
IIORegistry instance = instances.get(tg);
if (instance == null) {
synchronized(IIORegistry.class) {
instance = new IIORegistry();
}
instances.put(tg, instance);
}
return instance;
}
}
@SuppressWarnings("unchecked")
public void registerApplicationClasspathSpis() {
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
Iterator> categories = getCategories();
while (categories.hasNext()) {
Iterator providers = lookupProviders(categories.next());
registerServiceProviders(providers);
}
return this;
}
});
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy