aboutsummaryrefslogtreecommitdiff
path: root/libjava/classpath/javax/imageio/spi
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/javax/imageio/spi')
-rw-r--r--libjava/classpath/javax/imageio/spi/IIORegistry.java119
-rw-r--r--libjava/classpath/javax/imageio/spi/IIOServiceProvider.java163
-rw-r--r--libjava/classpath/javax/imageio/spi/ImageInputStreamSpi.java144
-rw-r--r--libjava/classpath/javax/imageio/spi/ImageOutputStreamSpi.java143
-rw-r--r--libjava/classpath/javax/imageio/spi/ImageReaderSpi.java121
-rw-r--r--libjava/classpath/javax/imageio/spi/ImageReaderWriterSpi.java511
-rw-r--r--libjava/classpath/javax/imageio/spi/ImageTranscoderSpi.java84
-rw-r--r--libjava/classpath/javax/imageio/spi/ImageWriterSpi.java135
-rw-r--r--libjava/classpath/javax/imageio/spi/RegisterableService.java82
-rw-r--r--libjava/classpath/javax/imageio/spi/ServiceRegistry.java961
-rw-r--r--libjava/classpath/javax/imageio/spi/package.html46
11 files changed, 0 insertions, 2509 deletions
diff --git a/libjava/classpath/javax/imageio/spi/IIORegistry.java b/libjava/classpath/javax/imageio/spi/IIORegistry.java
deleted file mode 100644
index faa571d..0000000
--- a/libjava/classpath/javax/imageio/spi/IIORegistry.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/* IIORegistry.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.imageio.spi;
-
-import gnu.classpath.ServiceFactory;
-
-import java.awt.Toolkit;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import gnu.java.awt.ClasspathToolkit;
-import gnu.javax.imageio.bmp.BMPImageReaderSpi;
-import gnu.javax.imageio.bmp.BMPImageWriterSpi;
-import gnu.javax.imageio.gif.GIFImageReaderSpi;
-import gnu.javax.imageio.png.PNGImageReaderSpi;
-
-public final class IIORegistry extends ServiceRegistry
-{
- private static final HashSet defaultCategories = new HashSet();
-
- private static HashMap instances = new HashMap();
-
- static
- {
- defaultCategories.add(ImageReaderSpi.class);
- defaultCategories.add(ImageWriterSpi.class);
- defaultCategories.add(ImageTranscoderSpi.class);
- defaultCategories.add(ImageInputStreamSpi.class);
- defaultCategories.add(ImageOutputStreamSpi.class);
- }
-
- public static synchronized IIORegistry getDefaultInstance()
- {
- // XXX: This leaks memory if a ThreadGroup isn't available anymore.
- ThreadGroup group = Thread.currentThread().getThreadGroup();
- IIORegistry registry = (IIORegistry) instances.get(group);
-
- if (registry == null)
- {
- registry = new IIORegistry();
- instances.put(group, registry);
- }
-
- return registry;
- }
-
- private IIORegistry()
- {
- super(defaultCategories.iterator());
-
- // XXX: Register built-in Spis here.
- registerServiceProvider(new PNGImageReaderSpi()); // Register PNG decoder.
- registerServiceProvider(new GIFImageReaderSpi()); // Register GIF decoder.
- registerServiceProvider(new BMPImageReaderSpi());
- registerServiceProvider(new BMPImageWriterSpi());
-
- Toolkit toolkit = Toolkit.getDefaultToolkit();
- if (toolkit instanceof ClasspathToolkit)
- ((ClasspathToolkit)toolkit).registerImageIOSpis(this);
-
- registerApplicationClasspathSpis();
- }
-
- /**
- * Registers all available service providers found on the application
- * classpath.
- */
- public void registerApplicationClasspathSpis()
- {
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- Iterator categories = getCategories();
-
- while (categories.hasNext())
- {
- Class category = (Class) categories.next();
- Iterator providers = ServiceFactory.lookupProviders(category, loader);
-
- while (providers.hasNext())
- registerServiceProvider((IIOServiceProvider) providers.next());
- }
- }
-}
diff --git a/libjava/classpath/javax/imageio/spi/IIOServiceProvider.java b/libjava/classpath/javax/imageio/spi/IIOServiceProvider.java
deleted file mode 100644
index 48fa7d4..0000000
--- a/libjava/classpath/javax/imageio/spi/IIOServiceProvider.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/* IIOServiceProvider.java -- General service provider for image I/O.
- Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.imageio.spi;
-
-import java.util.Locale;
-
-
-/**
- * An abstract superclass for service providers that perform image I/O.
- *
- * @since 1.4
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class IIOServiceProvider
- implements RegisterableService
-{
- /**
- * The vendor of this service provider, or <code>null</code> if the
- * subclass constructor did not set this field.
- *
- * @see #getVendorName()
- */
- protected String vendorName;
-
-
- /**
- * The version of this service provider, or <code>null</code> if the
- * subclass constructor did not set this field.
- *
- * @see #getVersion()
- */
- protected String version;
-
-
- /**
- * Constructs a general <code>IIOServiceProvider</code>, given the
- * vendor name and a version string.
- *
- * @throws IllegalArgumentException if <code>vendorName</code>
- * or <code>version</code> is <code>null</code>.
- */
- public IIOServiceProvider(String vendorName, String version)
- {
- if (vendorName == null || version == null)
- throw new IllegalArgumentException();
-
- this.vendorName = vendorName;
- this.version = version;
- }
-
-
- /**
- * Constructs a general <code>IIOServiceProvider</code> without
- * specifying a vendor name and a version string. The subclass
- * constructor should set the {@link #vendorName} and {@link
- * #version} to non-null values.
- */
- public IIOServiceProvider()
- {
- }
-
-
- /**
- * Informs this service provider that it has been registered in a
- * {@link ServiceRegistry}. If this provider gets registered as an
- * implementor for several service categories, its
- * <code>onRegistration</code> method will be called multiple times.
- * The default implementation does nothing.
- *
- * @param registry the registry to which this service provider has
- * been added.
- *
- * @param category the service category for which this provider has
- * been registered as an implementor.
- */
- public void onRegistration(ServiceRegistry registry, Class<?> category)
- {
- }
-
-
- /**
- * Informs this service provider that it has been de-registered from
- * a {@link ServiceRegistry}. If this provider had been registered
- * as an implementor for several service categories, its
- * <code>onDeregistration</code> method will be called multiple
- * times. The default implementation does nothing.
- *
- * @param registry the registry from which this service provider has
- * been removed.
- *
- * @param category the service category for which this provider has
- * been registered as an implementor.
- */
- public void onDeregistration(ServiceRegistry registry, Class<?> category)
- {
- }
-
-
- /**
- * Returns the name of the vendor of this service provider.
- */
- public String getVendorName()
- {
- return vendorName;
- }
-
-
- /**
- * Returns an identifier string for the version of this service
- * provider.
- */
- public String getVersion()
- {
- return version;
- }
-
-
- /**
- * Returns a short description of this service provider that can be
- * presented to a human user.
- *
- * @param locale the locale for which the description string should
- * be localized.
- */
- public abstract String getDescription(Locale locale);
-}
diff --git a/libjava/classpath/javax/imageio/spi/ImageInputStreamSpi.java b/libjava/classpath/javax/imageio/spi/ImageInputStreamSpi.java
deleted file mode 100644
index 2b60868..0000000
--- a/libjava/classpath/javax/imageio/spi/ImageInputStreamSpi.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/* ImageInputStreamSpi.java -- Service provider for image input streams.
- Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.imageio.spi;
-
-import java.io.File;
-import java.io.IOException;
-
-import javax.imageio.stream.ImageInputStream;
-
-/**
- * An abstract superclass for service providers that create
- * {@linkplain javax.imageio.stream.ImageInputStream image input
- * streams} for a file, URL, byte array or any other source.
- *
- * @since 1.4
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ImageInputStreamSpi
- extends IIOServiceProvider
-{
- /**
- * Indicates which kind of input is processable by the streams
- * created by {@link #createInputStreamInstance(Object)}.
- */
- protected Class<?> inputClass;
-
-
- /**
- * Constructs a service provider for image input streams, given no
- * parameters. It is up to the sub-class to set {@link #vendorName},
- * {@link #version} and {@link #inputClass} to non-null values.
- */
- protected ImageInputStreamSpi()
- {
- }
-
-
- /**
- * Constructs a service provider for image input streams, given the
- * vendor name and a version string.
- *
- * @throws IllegalArgumentException if <code>vendorName</code>
- * or <code>version</code> is <code>null</code>.
- */
- public ImageInputStreamSpi(String vendorName, String version,
- Class<?> inputClass)
- {
- super(vendorName, version);
- this.inputClass = inputClass;
- }
-
-
- /**
- * Determines which kind of input is processable by the streams
- * created by {@link #createInputStreamInstance(Object)}.
- */
- public Class<?> getInputClass()
- {
- return inputClass;
- }
-
-
- /**
- * Determines whether <code>ImageInputStreams</code> created
- * by this service provider benefit from using a cache file.
- *
- * <p>The default behavior is to return <code>false</code>.
- *
- * @return <code>true</code> if the created streams are faster or
- * need less memory when a cache file is being used;
- * <code>false</code> if no positive effect results from the cache
- * file.
- */
- public boolean canUseCacheFile()
- {
- return false;
- }
-
-
- /**
- * Determines whether <code>ImageInputStreams</code> created
- * by this service provider require the use of a cache file.
- *
- * <p>The default behavior is to return <code>false</code>.
- *
- * @return <code>true</code> if the created streams can only work
- * when a cache file is being used; <code>false</code> if no cache
- * file is needed.
- */
- public boolean needsCacheFile()
- {
- return false;
- }
-
-
- public abstract ImageInputStream createInputStreamInstance(Object input,
- boolean useCache,
- File cacheDir)
- throws IOException;
-
-
- public ImageInputStream createInputStreamInstance(Object input)
- throws IOException
- {
- return createInputStreamInstance(input, canUseCacheFile(), null);
- }
-}
diff --git a/libjava/classpath/javax/imageio/spi/ImageOutputStreamSpi.java b/libjava/classpath/javax/imageio/spi/ImageOutputStreamSpi.java
deleted file mode 100644
index 872e718..0000000
--- a/libjava/classpath/javax/imageio/spi/ImageOutputStreamSpi.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/* ImageOutputStreamSpi.java -- Service provider for image output streams.
- Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.imageio.spi;
-
-import java.io.File;
-import java.io.IOException;
-
-import javax.imageio.stream.ImageOutputStream;
-
-/**
- * An abstract superclass for service providers that create
- * {@linkplain javax.imageio.stream.ImageOutputStream image output
- * streams} for a file, URL, byte array or any other target.
- *
- * @since 1.4
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ImageOutputStreamSpi
- extends IIOServiceProvider
-{
- /**
- * Indicates which kind of output is produced by the streams
- * created by {@link #createOutputStreamInstance(Object)}.
- */
- protected Class<?> outputClass;
-
-
- /**
- * Constructs a service provider for image output streams, given no
- * parameters. It is up to the sub-class to set {@link #vendorName},
- * {@link #version} and {@link #outputClass} to non-null values.
- */
- protected ImageOutputStreamSpi()
- {
- }
-
-
- /**
- * Constructs a service provider for image output streams, given the
- * vendor name, a version string and the kind of producable output.
- *
- * @throws IllegalArgumentException if <code>vendorName</code>
- * or <code>version</code> is <code>null</code>.
- */
- public ImageOutputStreamSpi(String vendorName, String version,
- Class<?> outputClass)
- {
- super(vendorName, version);
- this.outputClass = outputClass;
- }
-
-
- /**
- * Determines which kind of output is produced by the streams
- * created by {@link #createOutputStreamInstance(Object)}.
- */
- public Class<?> getOutputClass()
- {
- return outputClass;
- }
-
-
- /**
- * Determines whether <code>ImageOutputStreams</code> created
- * by this service provider benefit from using a cache file.
- *
- * <p>The default behavior is to return <code>false</code>.
- *
- * @return <code>true</code> if the created streams are faster or
- * need less memory when a cache file is being used;
- * <code>false</code> if no positive effect results from the cache
- * file.
- */
- public boolean canUseCacheFile()
- {
- return false;
- }
-
-
- /**
- * Determines whether <code>ImageOutputStreams</code> created
- * by this service provider require the use of a cache file.
- *
- * <p>The default behavior is to return <code>false</code>.
- *
- * @return <code>true</code> if the created streams can only work
- * when a cache file is being used; <code>false</code> if no cache
- * file is needed.
- */
- public boolean needsCacheFile()
- {
- return false;
- }
-
-
- public abstract ImageOutputStream createOutputStreamInstance(
- Object output, boolean useCache, File cacheDir)
- throws IOException;
-
-
- public ImageOutputStream createOutputStreamInstance(Object output)
- throws IOException
- {
- return createOutputStreamInstance(output, canUseCacheFile(), null);
- }
-}
diff --git a/libjava/classpath/javax/imageio/spi/ImageReaderSpi.java b/libjava/classpath/javax/imageio/spi/ImageReaderSpi.java
deleted file mode 100644
index 3ffa93a..0000000
--- a/libjava/classpath/javax/imageio/spi/ImageReaderSpi.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/* ImageReaderSpi.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.imageio.spi;
-
-import java.io.IOException;
-
-import javax.imageio.ImageReader;
-import javax.imageio.stream.ImageInputStream;
-
-/**
- * @author Michael Koch (konqueror@gmx.de)
- */
-public abstract class ImageReaderSpi extends ImageReaderWriterSpi
-{
- public static final Class[] STANDARD_INPUT_TYPE =
- { ImageInputStream.class };
-
- protected Class[] inputTypes;
- protected String[] writerSpiNames;
-
- protected ImageReaderSpi()
- {
- // Do nothing here.
- }
-
- public ImageReaderSpi(String vendorName, String version, String[] names,
- String[] suffixes, String[] MIMETypes,
- String readerClassName, Class[] inputTypes,
- String[] writerSpiNames,
- boolean supportsStandardStreamMetadataFormat,
- String nativeStreamMetadataFormatName,
- String nativeStreamMetadataFormatClassName,
- String[] extraStreamMetadataFormatNames,
- String[] extraStreamMetadataFormatClassNames,
- boolean supportsStandardImageMetadataFormat,
- String nativeImageMetadataFormatName,
- String nativeImageMetadataFormatClassName,
- String[] extraImageMetadataFormatNames,
- String[] extraImageMetadataFormatClassNames)
- {
- super(vendorName, version, names, suffixes, MIMETypes, readerClassName,
- supportsStandardStreamMetadataFormat, nativeStreamMetadataFormatName,
- nativeStreamMetadataFormatClassName, extraStreamMetadataFormatNames,
- extraStreamMetadataFormatClassNames, supportsStandardImageMetadataFormat,
- nativeImageMetadataFormatName, nativeImageMetadataFormatClassName,
- extraImageMetadataFormatNames, extraImageMetadataFormatClassNames);
-
- if (inputTypes == null
- || inputTypes.length == 0)
- throw new IllegalArgumentException("inputTypes may not be null or empty");
-
- this.inputTypes = inputTypes;
- this.writerSpiNames = writerSpiNames;
- }
-
- public abstract boolean canDecodeInput(Object source)
- throws IOException;
-
- public ImageReader createReaderInstance()
- throws IOException
- {
- return createReaderInstance(null);
- }
-
- public abstract ImageReader createReaderInstance(Object extension)
- throws IOException;
-
- public String[] getImageWriterSpiNames()
- {
- return writerSpiNames;
- }
-
- public Class[] getInputTypes()
- {
- return inputTypes;
- }
-
- public boolean isOwnReader(ImageReader reader)
- {
- if (reader == null)
- throw new IllegalArgumentException("reader may not be null");
-
- return pluginClassName.equals(reader.getClass().getName());
- }
-}
diff --git a/libjava/classpath/javax/imageio/spi/ImageReaderWriterSpi.java b/libjava/classpath/javax/imageio/spi/ImageReaderWriterSpi.java
deleted file mode 100644
index 40d44e3..0000000
--- a/libjava/classpath/javax/imageio/spi/ImageReaderWriterSpi.java
+++ /dev/null
@@ -1,511 +0,0 @@
-/* ImageReaderWriterSpi.java -- Superclass for image reader and writer spis.
- Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.imageio.spi;
-
-import javax.imageio.metadata.IIOMetadataFormat;
-import javax.imageio.metadata.IIOMetadataFormatImpl;
-
-/**
- * An abstract superclass that contains the common parts of {@link
- * javax.imageio.spi.ImageReaderSpi} and {@link
- * javax.imageio.spi.ImageWriterSpi}.
- *
- * @since 1.4
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ImageReaderWriterSpi
- extends IIOServiceProvider
-{
- /**
- * The human-readable, localized names of the supported image
- * formats. This value should be non-<code>null</code> after
- * construction.
- *
- * @see #getFormatNames()
- */
- protected String[] names;
-
-
- /**
- * The file suffixes of the supported image formats. This value
- * should be non-<code>null</code> after construction.
- *
- * @see #getFileSuffixes()
- */
- protected String[] suffixes;
-
-
- /**
- * The MIME types of the supported image formats. This value
- * should be non-<code>null</code> after construction.
- *
- * @see #getMIMETypes()
- */
- protected String[] MIMETypes;
-
-
- /**
- * The fully qualified name of the class that implements the {@link
- * javax.imageio.ImageReader} or {@link javax.imageio.ImageWriter}
- * interface. This value should be non-<code>null</code> after
- * construction.
- *
- * @see #getPluginClassName()
- */
- protected String pluginClassName;
-
-
- /**
- * Indicates whether the per-stream {@linkplain
- * javax.imageio.metadata.IIOMetadata metadata objects} associated
- * with this plug-in support format
- * <code>&#x201c;javax_imageio_1.0&#x201d;</code> in their
- * <code>getAsTree</code> and <code>setAsTree</code> methods.
- *
- * @see #isStandardStreamMetadataFormatSupported()
- */
- protected boolean supportsStandardStreamMetadataFormat;
-
-
- /**
- * The name of the format that allows encoding all stream metadata
- * without loss, or <code>null</code> if this plug-in does not
- * provide a format that preserves all stream metadata.
- */
- protected String nativeStreamMetadataFormatName;
-
- protected String nativeStreamMetadataFormatClassName;
-
-
- /**
- * The names of additional formats for encoding stream metadata,
- * other than the {@linkplain
- * #isStandardStreamMetadataFormatSupported() standard} and the
- * {@linkplain #getNativeStreamMetadataFormatName() native} formats,
- * or <code>null</code> if this plug-in does not provide any extra
- * formats.
- */
- protected String[] extraStreamMetadataFormatNames;
-
-
- protected String[] extraStreamMetadataFormatClassNames;
-
-
- /**
- * Indicates whether the per-image {@linkplain
- * javax.imageio.metadata.IIOMetadata metadata objects} associated
- * with this plug-in support format
- * <code>&#x201c;javax_imageio_1.0&#x201d;</code> in their
- * <code>getAsTree</code> and <code>setAsTree</code> methods.
- *
- * @see #isStandardImageMetadataFormatSupported()
- */
- protected boolean supportsStandardImageMetadataFormat;
-
-
- /**
- * The name of the format that allows encoding all image metadata
- * without loss, or <code>null</code> if this plug-in does not
- * provide a format that preserves all image metadata.
- */
- protected String nativeImageMetadataFormatName;
-
- protected String nativeImageMetadataFormatClassName;
-
-
- /**
- * The names of additional formats for encoding image metadata,
- * other than the {@linkplain
- * #isStandardImageMetadataFormatSupported() standard} and the
- * {@linkplain #getNativeImageMetadataFormatName() native} formats,
- * or <code>null</code> if this plug-in does not provide any extra
- * formats.
- */
- protected String[] extraImageMetadataFormatNames;
-
-
- protected String[] extraImageMetadataFormatClassNames;
-
-
- /**
- * Constructs an <code>ImageReaderWriteSpi</code> instance, without
- * specifying a number of parameters. Constructors of concrete
- * subclasses must ensure that they set all inherited fields to
- * meaningful values.
- */
- public ImageReaderWriterSpi()
- {
- }
-
-
- /**
- * Constructs an <code>ImageReaderWriteSpi</code> instance,
- * specifying a number of parameters.
- *
- * @param names the human-readable, localized names of the supported
- * image formats, for example <code>[&#x201c;Tagged Image File
- * Format&#x201d;, &#x201c;Portable Network
- * Graphics&#x201d;]</code>.
- *
- * @param suffixes the file suffixes of the supported image formats,
- * for example <code>[&#x201c;tiff&#x201d;, &#x201c;tif&#x201d;,
- * &#x201c;png&#x201d;]</code>.
- *
- * @param MIMETypes the MIME types of the supported image formats,
- * for example <code>[&#x201c;image/tiff&#x201d;,
- * &#x201c;image/png&#x201d;]</code>.
- *
- * @param pluginClassName the fully qualified name of the class that
- * implements the {@link javax.imageio.ImageReader} or {@link
- * javax.imageio.ImageWriter} interface.
- *
- * @param supportsStandardStreamMetadataFormat whether the
- * per-stream {@linkplain javax.imageio.metadata.IIOMetadata
- * metadata objects} associated with this plug-in support format
- * <code>&#x201c;javax_imageio_1.0&#x201d;</code> in their
- * <code>getAsTree</code> and <code>setAsTree</code> methods.
- *
- * @param nativeStreamMetadataFormatName the name of the format that
- * allows encoding all stream metadata without loss, or
- * <code>null</code> if this plug-in does not provide a format that
- * preserves all stream metadata.
- *
- * @param extraStreamMetadataFormatNames the names of additional
- * formats for encoding stream metadata, other than the {@linkplain
- * #isStandardStreamMetadataFormatSupported() standard} and the
- * {@linkplain #getNativeStreamMetadataFormatName() native} formats,
- * or <code>null</code> if this plug-in does not provide any extra
- * formats.
- *
- * @param supportsStandardImageMetadataFormat whether the per-image
- * {@linkplain javax.imageio.metadata.IIOMetadata metadata objects}
- * associated with this plug-in support format
- * <code>&#x201c;javax_imageio_1.0&#x201d;</code> in their
- * <code>getAsTree</code> and <code>setAsTree</code> methods.
- *
- * @param nativeImageMetadataFormatName the name of the format that
- * allows encoding all image metadata without loss, or
- * <code>null</code> if this plug-in does not provide a format that
- * preserves all image metadata.
- *
- * @param extraImageMetadataFormatNames the names of additional
- * formats for encoding image metadata, other than the {@linkplain
- * #isStandardImageMetadataFormatSupported() standard} and the
- * {@linkplain #getNativeImageMetadataFormatName() native} formats,
- * or <code>null</code> if this plug-in does not provide any extra
- * formats.
- *
- * @throws IllegalArgumentException if <code>vendorName</code>
- * or <code>version</code> is <code>null</code>.
- */
- public ImageReaderWriterSpi(String vendorName, String version,
- String[] names, String[] suffixes,
- String[] MIMETypes, String pluginClassName,
- boolean supportsStandardStreamMetadataFormat,
- String nativeStreamMetadataFormatName,
- String nativeStreamMetadataFormatClassName,
- String[] extraStreamMetadataFormatNames,
- String[] extraStreamMetadataFormatClassNames,
- boolean supportsStandardImageMetadataFormat,
- String nativeImageMetadataFormatName,
- String nativeImageMetadataFormatClassName,
- String[] extraImageMetadataFormatNames,
- String[] extraImageMetadataFormatClassNames)
- {
- /* The inherited constructor will throw IllegalArgumentException
- * if one of its arguments is null.
- */
- super(vendorName, version);
-
- if (names == null || names.length == 0 || pluginClassName == null)
- throw new IllegalArgumentException();
-
- this.names = names;
- this.suffixes = suffixes;
- this.MIMETypes = MIMETypes;
- this.pluginClassName = pluginClassName;
-
- this.supportsStandardStreamMetadataFormat
- = supportsStandardStreamMetadataFormat;
-
- this.nativeStreamMetadataFormatName
- = nativeStreamMetadataFormatName;
-
- this.nativeStreamMetadataFormatClassName
- = nativeStreamMetadataFormatClassName;
-
- this.extraStreamMetadataFormatNames
- = extraStreamMetadataFormatNames;
-
- this.extraStreamMetadataFormatClassNames
- = extraStreamMetadataFormatClassNames;
-
- this.supportsStandardImageMetadataFormat
- = supportsStandardImageMetadataFormat;
-
- this.nativeImageMetadataFormatName
- = nativeImageMetadataFormatName;
-
- this.nativeImageMetadataFormatClassName
- = nativeImageMetadataFormatClassName;
-
- this.extraImageMetadataFormatNames
- = extraImageMetadataFormatNames;
-
- this.extraImageMetadataFormatClassNames
- = extraImageMetadataFormatClassNames;
- }
-
-
- /**
- * Returns the human-readable, localized names of the supported
- * image formats. For example, a plug-in might return an array with
- * the elements <code>[&#x201c;Tagged Image File Format&#x201d;,
- * &#x201c;Portable Network Graphics&#x201d;]</code>.
- */
- public String[] getFormatNames()
- {
- return (String[]) names.clone();
- }
-
-
- /**
- * Returns the file suffixes of the supported image formats, for
- * example <code>[&#x201c;tiff&#x201d;, &#x201c;tif&#x201d;,
- * &#x201c;png&#x201d;]</code>.
- */
- public String[] getFileSuffixes()
- {
- return suffixes;
- }
-
-
- /**
- * Returns the MIME types of the supported image formats, for
- * example <code>[&#x201c;image/tiff&#x201d;,
- * &#x201c;image/png&#x201d;]</code>.
- *
- * @return an array of MIME type strings, or <code>null</code> if
- * none of the supported formats has an associated MIME type.
- */
- public String[] getMIMETypes()
- {
- return MIMETypes;
- }
-
-
- /**
- * Returns the fully qualified name of the class that implements the
- * {@link javax.imageio.ImageReader} or {@link
- * javax.imageio.ImageWriter} interface.
- */
- public String getPluginClassName()
- {
- return pluginClassName;
- }
-
-
- /**
- * Returns whether the per-stream {@linkplain
- * javax.imageio.metadata.IIOMetadata metadata objects} associated
- * with this plug-in support format
- * <code>&#x201c;javax_imageio_1.0&#x201d;</code> in their
- * <code>getAsTree</code> and <code>setAsTree</code> methods.
- */
- public boolean isStandardStreamMetadataFormatSupported()
- {
- return supportsStandardStreamMetadataFormat;
- }
-
-
- /**
- * Returns the name of the format that allows encoding all stream
- * metadata without loss, or <code>null</code> if this plug-in does
- * not provide a format that preserves all stream metadata.
- *
- * @see #getNativeImageMetadataFormatName()
- */
- public String getNativeStreamMetadataFormatName()
- {
- return nativeStreamMetadataFormatName;
- }
-
-
- /**
- * Returns the names of additional formats for encoding stream
- * metadata, other than the {@linkplain
- * #isStandardStreamMetadataFormatSupported() standard} and the
- * {@linkplain #getNativeStreamMetadataFormatName() native} formats,
- * or <code>null</code> if this plug-in does not provide any extra
- * formats.
- *
- * @see #getExtraImageMetadataFormatNames()
- */
- public String[] getExtraStreamMetadataFormatNames()
- {
- return extraStreamMetadataFormatNames;
- }
-
-
- /**
- * Returns whether the per-image {@linkplain
- * javax.imageio.metadata.IIOMetadata metadata objects} associated
- * with this plug-in support format
- * <code>&#x201c;javax_imageio_1.0&#x201d;</code> in their
- * <code>getAsTree</code> and <code>setAsTree</code> methods.
- */
- public boolean isStandardImageMetadataFormatSupported()
- {
- return supportsStandardImageMetadataFormat;
- }
-
-
- /**
- * Returns the name of the format that allows encoding all image
- * metadata without loss, or <code>null</code> if this plug-in does
- * not provide a format that preserves all image metadata.
- *
- * @see #getNativeStreamMetadataFormatName()
- */
- public String getNativeImageMetadataFormatName()
- {
- return nativeImageMetadataFormatName;
- }
-
-
- /**
- * Returns the names of additional formats for encoding image
- * metadata, other than the {@linkplain
- * #isStandardImageMetadataFormatSupported() standard} and the
- * {@linkplain #getNativeImageMetadataFormatName() native} formats,
- * or <code>null</code> if this plug-in does not provide any extra
- * formats.
- *
- * @see #getExtraStreamMetadataFormatNames()
- */
- public String[] getExtraImageMetadataFormatNames()
- {
- return extraImageMetadataFormatNames;
- }
-
- /**
- * Returns an IIOMetadataFormat object that represents the requested
- * stream metadata format or null if the given format is supported
- * but no IIOMetadataFormat can be created for it.
- *
- * @param formatName the requested stream metadata format name
- *
- * @return an IIOMetadataFormat object or null
- *
- * @throws IllegalArgumentException if formatName is null or is not
- * one of the standard metadata format or this provider's native or
- * extra stream metadata formats
- */
- public IIOMetadataFormat getStreamMetadataFormat (String formatName)
- {
- if (formatName == null)
- throw new IllegalArgumentException ("null stream metadata format name");
-
- if (!formatName.equals (getNativeStreamMetadataFormatName())
- && !formatName.equals (IIOMetadataFormatImpl.standardMetadataFormatName))
- {
- String[] extraNames = getExtraStreamMetadataFormatNames ();
- boolean foundName = false;
- for (int i = 0; i < extraNames.length; i++)
- {
- if (formatName.equals(extraNames[i]))
- {
- foundName = true;
- break;
- }
- }
- if (!foundName)
- throw new IllegalArgumentException ("unsupported stream metadata format name");
- }
-
- if (formatName.equals (IIOMetadataFormatImpl.standardMetadataFormatName))
- return IIOMetadataFormatImpl.getStandardFormatInstance ();
- else
- // Default implementation returns null.
- return null;
- }
-
- /**
- * Returns an IIOMetadataFormat object that represents the requested
- * image metadata format or null if the given format is supported
- * but no IIOMetadataFormat can be created for it.
- *
- * @param formatName the requested image metadata format name
- *
- * @return an IIOMetadataFormat object or null
- *
- * @throws IllegalArgumentException if formatName is null or is not
- * one of the standard metadata format or this provider's native or
- * extra image metadata formats
- */
- public IIOMetadataFormat getImageMetadataFormat (String formatName)
- {
- if (formatName == null)
- throw new IllegalArgumentException ("null image metadata format name");
-
- if (!formatName.equals (getNativeImageMetadataFormatName())
- && !formatName.equals (IIOMetadataFormatImpl.standardMetadataFormatName))
- {
- String[] extraNames = getExtraImageMetadataFormatNames ();
- boolean foundName = false;
- for (int i = 0; i < extraNames.length; i++)
- {
- if (formatName.equals(extraNames[i]))
- {
- foundName = true;
- break;
- }
- }
- if (!foundName)
- throw new IllegalArgumentException ("unsupported image metadata format name");
- }
-
- if (formatName.equals (IIOMetadataFormatImpl.standardMetadataFormatName))
- return IIOMetadataFormatImpl.getStandardFormatInstance ();
- else
- // Default implementation returns null.
- return null;
- }
-}
diff --git a/libjava/classpath/javax/imageio/spi/ImageTranscoderSpi.java b/libjava/classpath/javax/imageio/spi/ImageTranscoderSpi.java
deleted file mode 100644
index 1c04ad2..0000000
--- a/libjava/classpath/javax/imageio/spi/ImageTranscoderSpi.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/* ImageTranscoderSpi.java -- Factory for image metadata transcoders.
- Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.imageio.spi;
-
-import javax.imageio.ImageTranscoder;
-
-
-/**
- * An abstract superclass for service providers that create
- * {@linkplain javax.imageio.ImageTranscoder image metadata
- * transcoders}.
- *
- * @since 1.4
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public abstract class ImageTranscoderSpi
- extends IIOServiceProvider
-{
- /**
- * Constructs a service provider for image metadata transcoders,
- * given no parameters. It is up to the sub-class to set {@link
- * #vendorName} and {@link #version} to non-null values.
- */
- protected ImageTranscoderSpi()
- {
- }
-
-
- /**
- * Constructs a service provider for image metadata transcoders,
- * given the vendor name and a version string.
- *
- * @throws IllegalArgumentException if <code>vendorName</code>
- * or <code>version</code> is <code>null</code>.
- */
- public ImageTranscoderSpi(String vendorName, String version)
- {
- super(vendorName, version);
- }
-
-
- public abstract String getReaderServiceProviderName();
-
- public abstract String getWriterServiceProviderName();
-
- public abstract ImageTranscoder createTranscoderInstance();
-}
diff --git a/libjava/classpath/javax/imageio/spi/ImageWriterSpi.java b/libjava/classpath/javax/imageio/spi/ImageWriterSpi.java
deleted file mode 100644
index 6a07348..0000000
--- a/libjava/classpath/javax/imageio/spi/ImageWriterSpi.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/* ImageWriterSpi.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.imageio.spi;
-
-import java.awt.image.RenderedImage;
-import java.io.IOException;
-
-import javax.imageio.ImageTypeSpecifier;
-import javax.imageio.ImageWriter;
-import javax.imageio.stream.ImageOutputStream;
-
-/**
- * @author Michael Koch (konqueror@gmx.de)
- */
-public abstract class ImageWriterSpi extends ImageReaderWriterSpi
-{
- public static final Class[] STANDARD_OUTPUT_TYPE =
- { ImageOutputStream.class };
-
- protected Class[] outputTypes;
- protected String[] readerSpiNames;
-
- protected ImageWriterSpi()
- {
- // Do nothing here.
- }
-
- public ImageWriterSpi(String vendorName, String version, String[] names,
- String[] suffixes, String[] MIMETypes,
- String writerClassName, Class[] outputTypes,
- String[] readerSpiNames,
- boolean supportsStandardStreamMetadataFormat,
- String nativeStreamMetadataFormatName,
- String nativeStreamMetadataFormatClassName,
- String[] extraStreamMetadataFormatNames,
- String[] extraStreamMetadataFormatClassNames,
- boolean supportsStandardImageMetadataFormat,
- String nativeImageMetadataFormatName,
- String nativeImageMetadataFormatClassName,
- String[] extraImageMetadataFormatNames,
- String[] extraImageMetadataFormatClassNames)
- {
- super(vendorName, version, names, suffixes, MIMETypes, writerClassName,
- supportsStandardStreamMetadataFormat, nativeStreamMetadataFormatName,
- nativeStreamMetadataFormatClassName, extraStreamMetadataFormatNames,
- extraStreamMetadataFormatClassNames, supportsStandardImageMetadataFormat,
- nativeImageMetadataFormatName, nativeImageMetadataFormatClassName,
- extraImageMetadataFormatNames, extraImageMetadataFormatClassNames);
-
- if (writerClassName == null)
- throw new IllegalArgumentException("writerClassName is null");
-
- if (outputTypes == null
- || outputTypes.length == 0)
- throw new IllegalArgumentException("outputTypes may not be null or empty");
-
- this.outputTypes = outputTypes;
- this.readerSpiNames = readerSpiNames;
- }
-
- public abstract boolean canEncodeImage(ImageTypeSpecifier type);
-
- public boolean canEncodeImage(RenderedImage image)
- {
- return canEncodeImage (new ImageTypeSpecifier(image));
- }
-
- public ImageWriter createWriterInstance()
- throws IOException
- {
- return createWriterInstance(null);
- }
-
- public abstract ImageWriter createWriterInstance(Object extension)
- throws IOException;
-
- public String[] getImageReaderSpiNames()
- {
- return readerSpiNames;
- }
-
- public Class[] getOutputTypes()
- {
- return outputTypes;
- }
-
- public boolean isFormatLossless()
- {
- return true;
- }
-
- public boolean isOwnWriter(ImageWriter writer)
- {
- if (writer == null)
- throw new IllegalArgumentException("writer may not be null");
-
- return pluginClassName.equals(writer.getClass().getName());
- }
-}
diff --git a/libjava/classpath/javax/imageio/spi/RegisterableService.java b/libjava/classpath/javax/imageio/spi/RegisterableService.java
deleted file mode 100644
index b424e04..0000000
--- a/libjava/classpath/javax/imageio/spi/RegisterableService.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/* RegisterableService.java -- An interface for service providers.
- Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.imageio.spi;
-
-
-/**
- * An interface which service providers may optionally implement in
- * order to get notified when they are added or removed from a {@link
- * ServiceRegistry}.
- *
- * @since 1.4
- *
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public interface RegisterableService
-{
- /**
- * Informs this service provider that it has been registered in a
- * {@link ServiceRegistry}. If this provider gets registered as an
- * implementor for several service categories, its
- * <code>onRegistration</code> method will be called multiple times.
- *
- * @param registry the registry to which this service provider has
- * been added.
- *
- * @param category the service category for which this provider has
- * been registered as an implementor.
- */
- void onRegistration(ServiceRegistry registry, Class<?> category);
-
-
- /**
- * Informs this service provider that it has been de-registered from
- * a {@link ServiceRegistry}. If this provider had been registered
- * as an implementor for several service categories, its
- * <code>onDeregistration</code> method will be called multiple
- * times.
- *
- * @param registry the registry from which this service provider has
- * been removed.
- *
- * @param category the service category for which this provider has
- * been registered as an implementor.
- */
- void onDeregistration(ServiceRegistry registry, Class<?> category);
-}
diff --git a/libjava/classpath/javax/imageio/spi/ServiceRegistry.java b/libjava/classpath/javax/imageio/spi/ServiceRegistry.java
deleted file mode 100644
index d923596..0000000
--- a/libjava/classpath/javax/imageio/spi/ServiceRegistry.java
+++ /dev/null
@@ -1,961 +0,0 @@
-/* ServiceRegistry.java -- A simple registry for service providers.
- Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.imageio.spi;
-
-import gnu.classpath.ServiceFactory;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.IdentityHashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-/**
- * A registry for service providers.
- *
- * @since 1.4
- *
- * @author Michael Koch (konqueror@gmx.de)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
-public class ServiceRegistry
-{
- // Package-private to avoid a trampoline.
- /**
- * The service categories of this registry.
- *
- * <p>Note that we expect that only very few categories will
- * typically be used with a registry. The most common case will be
- * one, it seems unlikely that any registry would contain more than
- * five or six categories. Therefore, we intentionally avoid the
- * overhead of a HashMap.
- *
- * @see #providers
- */
- final Class[] categories;
-
-
- /**
- * The registered providers for each service category, indexed by
- * the same index as the {@link #categories} array. If no provider
- * is registered for a category, the array entry will be
- * <code>null</code>.
- *
- * <p>Note that we expect that only very few providers will
- * typically be registered for a category. The most common case will
- * be one or two. Therefore, we intentionally avoid the overhead of
- * a HashMap.
- */
- private final LinkedList[] providers;
-
-
- /**
- * The ordring constaints for each service category, indexed by the
- * same index as the {@link #categories} array. The constraints for
- * a service category are stored as a <code>Map&lt;Object,
- * Set&lt;Object&gt;&gt;</code>, where the Map&#x2019;s values are
- * those providers that need to come after the key. If no
- * constraints are imposed on the providers of a category, the array
- * entry will be <code>null</code>. If no constraints have been set
- * whatsoever, <code>constraints</code> will be <code>null</code>.
- *
- * <p>Note that we expect that only very few constraints will
- * typically be imposed on a category. The most common case will
- * be zero.
- */
- private IdentityHashMap[] constraints;
-
-
- /**
- * Constructs a <code>ServiceRegistry</code> for the specified
- * service categories.
- *
- * @param categories the categories to support
- *
- * @throws IllegalArgumentException if <code>categories</code> is
- * <code>null</code>, or if its {@link Iterator#next()} method
- * returns <code>null</code>.
- *
- * @throws ClassCastException if <code>categories</code> does not
- * iterate over instances of {@link java.lang.Class}.
- */
- public ServiceRegistry(Iterator<Class<?>> categories)
- {
- ArrayList cats = new ArrayList(/* expected size */ 10);
-
- if (categories == null)
- throw new IllegalArgumentException();
-
- while (categories.hasNext())
- {
- Class cat = (Class) categories.next();
- if (cat == null)
- throw new IllegalArgumentException();
- cats.add(cat);
- }
-
- int numCats = cats.size();
- this.categories = (Class[]) cats.toArray(new Class[numCats]);
- this.providers = new LinkedList[numCats];
- }
-
-
- /**
- * Finds service providers that are implementing the specified
- * Service Provider Interface.
- *
- * <p><b>On-demand loading:</b> Loading and initializing service
- * providers is delayed as much as possible. The rationale is that
- * typical clients will iterate through the set of installed service
- * providers until one is found that matches some criteria (like
- * supported formats, or quality of service). In such scenarios, it
- * might make sense to install only the frequently needed service
- * providers on the local machine. More exotic providers can be put
- * onto a server; the server will only be contacted when no suitable
- * service could be found locally.</p>
- *
- * <p><b>Security considerations:</b> Any loaded service providers
- * are loaded through the specified ClassLoader, or the system
- * ClassLoader if <code>classLoader</code> is
- * <code>null</code>. When <code>lookupProviders</code> is called,
- * the current {@link java.security.AccessControlContext} gets
- * recorded. This captured security context will determine the
- * permissions when services get loaded via the <code>next()</code>
- * method of the returned <code>Iterator</code>.</p>
- *
- * @param spi the service provider interface which must be
- * implemented by any loaded service providers.
- *
- * @param loader the class loader that will be used to load the
- * service providers, or <code>null</code> for the system class
- * loader. For using the context class loader, see {@link
- * #lookupProviders(Class)}.
- *
- * @return an iterator over instances of <code>spi</code>.
- *
- * @throws IllegalArgumentException if <code>spi</code> is
- * <code>null</code>.
- */
- public static <T> Iterator<T> lookupProviders(Class<T> spi,
- ClassLoader loader)
- {
- return ServiceFactory.lookupProviders(spi, loader);
- }
-
-
- /**
- * Finds service providers that are implementing the specified
- * Service Provider Interface, using the context class loader
- * for loading providers.
- *
- * @param spi the service provider interface which must be
- * implemented by any loaded service providers.
- *
- * @return an iterator over instances of <code>spi</code>.
- *
- * @throws IllegalArgumentException if <code>spi</code> is
- * <code>null</code>.
- *
- * @see #lookupProviders(Class, ClassLoader)
- */
- public static <T> Iterator<T> lookupProviders(Class<T> spi)
- {
- return ServiceFactory.lookupProviders(spi);
- }
-
-
- /**
- * Returns an iterator over all service categories.
- *
- * @return an unmodifiable {@link
- * java.util.Iterator}&lt;{@link java.lang.Class}&gt;.
- */
- public Iterator<Class<?>> getCategories()
- {
- return new Iterator()
- {
- int index = -1;
-
- public boolean hasNext()
- {
- return index < categories.length - 1;
- }
-
- public Object next()
- {
- if (!hasNext())
- throw new NoSuchElementException();
-
- return categories[++index];
- }
-
- public void remove()
- {
- throw new UnsupportedOperationException();
- }
- };
- }
-
-
- /**
- * Registers a provider for a service category which is specified by
- * the class-internal category ID.
- *
- * @param provider the service provider to be registered.
- *
- * @param cat the service category, which is identified by an index
- * into the {@link #categories} array.
- *
- * @return <code>true</code> if <code>provider</code> is the first
- * provider that gets registered for the specified service category;
- * <code>false</code> if other providers have already been
- * registered for the same servide category.
- *
- * @throws IllegalArgumentException if <code>provider</code> is
- * <code>null</code>.
- *
- * @throws ClassCastException if <code>provider</code> does not
- * implement the specified service provider interface.
- */
- private synchronized boolean registerServiceProvider(Object provider,
- int cat)
- {
- LinkedList provs;
- boolean result;
- Class category;
-
- if (provider == null)
- throw new IllegalArgumentException();
-
- category = categories[cat];
- if (!category.isInstance(provider))
- throw new ClassCastException(category.getName());
-
- provs = providers[cat];
- if (provs == null)
- {
- result = true;
- provs = providers[cat] = new LinkedList();
- }
- else
- result = false;
-
- provs.add(provider);
- if (provider instanceof RegisterableService)
- ((RegisterableService) provider).onRegistration(this, category);
-
- return result;
- }
-
-
- /**
- * Registers a provider for the specified service category.
- *
- * <p>If <code>provider</code> implements the {@link
- * RegisterableService} interface, its {@link
- * RegisterableService#onRegistration onRegistration} method is
- * invoked in order to inform the provider about the addition to
- * this registry.
- *
- * @param provider the service provider to be registered.
- *
- * @param category the service category under which
- * <code>provider</code> shall be registered.
- *
- * @return <code>true</code> if <code>provider</code> is the first
- * provider that gets registered for the specified service category;
- * <code>false</code> if other providers have already been
- * registered for the same servide category.
- *
- * @throws IllegalArgumentException if <code>provider</code> is
- * <code>null</code>, or if <code>category</code> is not among the
- * categories passed to the {@linkplain #ServiceRegistry(Iterator)
- * constructor} of this ServiceRegistry.
- *
- * @throws ClassCastException if <code>provider</code> does not
- * implement <code>category</code>.
- */
- public synchronized <T> boolean registerServiceProvider(T provider,
- Class<T> category)
- {
- for (int i = 0; i < categories.length; i++)
- if (categories[i] == category)
- return registerServiceProvider(provider, i);
- throw new IllegalArgumentException();
- }
-
-
- /**
- * Registers a provider under all service categories it
- * implements.
- *
- * <p>If <code>provider</code> implements the {@link
- * RegisterableService} interface, its {@link
- * RegisterableService#onRegistration onRegistration} method is
- * invoked in order to inform the provider about the addition to
- * this registry. If <code>provider</code> implements several
- * service categories, <code>onRegistration</code> gets called
- * multiple times.
- *
- * @param provider the service provider to be registered.
- *
- * @throws IllegalArgumentException if <code>provider</code> is
- * <code>null</code>, or if <code>provider</code> does not implement
- * any of the service categories passed to the {@linkplain
- * #ServiceRegistry(Iterator) constructor} of this ServiceRegistry.
- */
- public synchronized void registerServiceProvider(Object provider)
- {
- boolean ok = false;
-
- if (provider == null)
- throw new IllegalArgumentException();
-
- for (int i = 0; i < categories.length; i++)
- if (categories[i].isInstance(provider))
- {
- ok = true;
- registerServiceProvider(provider, i);
- }
-
- if (!ok)
- throw new IllegalArgumentException();
- }
-
-
- /**
- * Registers a number of providers under all service categories they
- * implement.
- *
- * <p>If a provider implements the {@link RegisterableService}
- * interface, its {@link RegisterableService#onRegistration
- * onRegistration} method is invoked in order to inform the provider
- * about the addition to this registry. If <code>provider</code>
- * implements several service categories,
- * <code>onRegistration</code> gets called multiple times.
- *
- * @throws IllegalArgumentException if <code>providers</code> is
- * <code>null</code>, if any iterated provider is <code>null</code>,
- * or if some iterated provider does not implement any of the
- * service categories passed to the {@linkplain
- * #ServiceRegistry(Iterator) constructor} of this
- * <code>ServiceRegistry</code>.
- */
- public synchronized void registerServiceProviders(Iterator<?> providers)
- {
- if (providers == null)
- throw new IllegalArgumentException();
-
- while (providers.hasNext())
- registerServiceProvider(providers.next());
- }
-
-
- /**
- * De-registers a provider for a service category which is specified
- * by the class-internal category ID.
- *
- * @param provider the service provider to be registered.
- *
- * @param cat the service category, which is identified by an index
- * into the {@link #categories} array.
- *
- * @return <code>true</code> if <code>provider</code> was previously
- * registered for the specified service category; <code>false</code>
- * if if the provider had not been registered.
- *
- * @throws IllegalArgumentException if <code>provider</code> is
- * <code>null</code>.
- *
- * @throws ClassCastException if <code>provider</code> does not
- * implement the specified service provider interface.
- */
- private synchronized boolean deregisterServiceProvider(Object provider,
- int cat)
- {
- LinkedList provs;
- boolean result;
- Class category;
-
- if (provider == null)
- throw new IllegalArgumentException();
-
- category = categories[cat];
- if (!category.isInstance(provider))
- throw new ClassCastException(category.getName());
-
- provs = providers[cat];
- if (provs == null)
- return false;
-
- result = provs.remove(provider);
- if (provs.isEmpty())
- providers[cat] = null;
-
- if (result && (provider instanceof RegisterableService))
- ((RegisterableService) provider).onDeregistration(this, category);
-
- return result;
- }
-
-
- /**
- * De-registers a provider for the specified service category.
- *
- * <p>If <code>provider</code> implements the {@link
- * RegisterableService} interface, its {@link
- * RegisterableService#onDeregistration onDeregistration} method is
- * invoked in order to inform the provider about the removal from
- * this registry.
- *
- * @param provider the service provider to be de-registered.
- *
- * @param category the service category from which
- * <code>provider</code> shall be de-registered.
- *
- * @return <code>true</code> if <code>provider</code> was previously
- * registered for the specified service category; <code>false</code>
- * if if the provider had not been registered.
- *
- * @throws IllegalArgumentException if <code>provider</code> is
- * <code>null</code>, or if <code>category</code> is not among the
- * categories passed to the {@linkplain #ServiceRegistry(Iterator)
- * constructor} of this ServiceRegistry.
- *
- * @throws ClassCastException if <code>provider</code> does not
- * implement <code>category</code>.
- */
- public synchronized <T> boolean deregisterServiceProvider(T provider,
- Class<T> category)
- {
- for (int i = 0; i < categories.length; i++)
- if (categories[i] == category)
- return deregisterServiceProvider(provider, i);
- throw new IllegalArgumentException();
- }
-
-
- /**
- * De-registers a provider from all service categories it
- * implements.
- *
- * <p>If <code>provider</code> implements the {@link
- * RegisterableService} interface, its {@link
- * RegisterableService#onDeregistration onDeregistration} method is
- * invoked in order to inform the provider about the removal from
- * this registry. If <code>provider</code> implements several
- * service categories, <code>onDeregistration</code> gets called
- * multiple times.</p>
- *
- * @param provider the service provider to be de-registered.
- *
- * @throws IllegalArgumentException if <code>provider</code> is
- * <code>null</code>, or if <code>provider</code> does not implement
- * any of the service categories passed to the {@linkplain
- * #ServiceRegistry(Iterator) constructor} of this
- * <code>ServiceRegistry</code>.
- */
- public synchronized void deregisterServiceProvider(Object provider)
- {
- boolean ok = false;
-
- if (provider == null)
- throw new IllegalArgumentException();
-
- for (int i = 0; i < categories.length; i++)
- if (categories[i].isInstance(provider))
- {
- ok = true;
- deregisterServiceProvider(provider, i);
- }
-
- if (!ok)
- throw new IllegalArgumentException();
- }
-
-
- /**
- * De-registers all providers which have been registered for the
- * specified service category.
- *
- * <p>If a provider implements the {@link RegisterableService}
- * interface, its {@link RegisterableService#onDeregistration
- * onDeregistration} method is invoked in order to inform the
- * provider about the removal from this registry. If the provider
- * implements several service categories,
- * <code>onDeregistration</code> gets called multiple times.
- *
- * @param category the category whose registered providers will be
- * de-registered.
- *
- * @throws IllegalArgumentException if <code>category</code> is not
- * among the categories passed to the {@linkplain
- * #ServiceRegistry(Iterator) constructor} of this
- * <code>ServiceRegistry</code>.
- */
- public synchronized void deregisterAll(Class<?> category)
- {
- boolean ok = false;
-
- for (int i = 0; i < categories.length; i++)
- {
- if (categories[i] != category)
- continue;
-
- ok = true;
- while (providers[i] != null)
- deregisterServiceProvider(providers[i].get(0), i);
- }
-
- if (!ok)
- throw new IllegalArgumentException();
- }
-
-
- /**
- * De-registers all service providers.
- *
- * <p>If a provider implements the {@link RegisterableService}
- * interface, its {@link RegisterableService#onDeregistration
- * onDeregistration} method is invoked in order to inform the
- * provider about the removal from this registry. If the provider
- * implements several service categories,
- * <code>onDeregistration</code> gets called multiple times.
- */
- public synchronized void deregisterAll()
- {
- for (int i = 0; i < categories.length; i++)
- while (providers[i] != null)
- deregisterServiceProvider(providers[i].get(0), i);
- }
-
-
- /**
- * Called by the Virtual Machine when it detects that this
- * <code>ServiceRegistry</code> has become garbage. De-registers all
- * service providers, which will cause those that implement {@link
- * RegisterableService} to receive a {@link
- * RegisterableService#onDeregistration onDeregistration}
- * notification.
- */
- public void finalize()
- throws Throwable
- {
- super.finalize();
- deregisterAll();
- }
-
-
- /**
- * Determines whether a provider has been registered with this
- * registry.
- *
- * @return <code>true</code> if <code>provider</code> has been
- * registered under any service category; <code>false</code> if
- * it is not registered.
- *
- * @throws IllegalArgumentException if <code>provider</code> is
- * <code>null</code>.
- */
- public synchronized boolean contains(Object provider)
- {
- if (provider == null)
- throw new IllegalArgumentException();
-
- // Note that contains is rather unlikely to be ever called,
- // so it would be wasteful to keep a special data structure
- // (such as a HashSet) for making it a fast operation.
- for (int i = 0; i < providers.length; i++)
- {
- // If provider does not implement categories[i],
- // it would not have been possible to register it there.
- // In that case, it would be pointless to look there.
- if (!categories[i].isInstance(provider))
- continue;
-
- // But if the list of registered providers contains provider,
- // we have found it.
- LinkedList p = providers[i];
- if (p != null && p.contains(provider))
- return true;
- }
-
- return false;
- }
-
-
- /**
- * Returns the index in {@link #categories} occupied by the
- * specified service category.
- *
- * @throws IllegalArgumentException if <code>category</code> is not
- * among the categories passed to the {@linkplain
- * #ServiceRegistry(Iterator) constructor} of this ServiceRegistry.
- */
- private int getCategoryID(Class category)
- {
- for (int i = 0; i < categories.length; i++)
- if (categories[i] == category)
- return i;
-
- throw new IllegalArgumentException();
- }
-
-
- /**
- * Retrieves all providers that have been registered for the
- * specified service category.
- *
- * @param category the service category whose providers are
- * to be retrieved.
- *
- * @param useOrdering <code>true</code> in order to retrieve the
- * providers in an order imposed by the {@linkplain #setOrdering
- * ordering constraints}; <code>false</code> in order to retrieve
- * the providers in any order.
- *
- * @throws IllegalArgumentException if <code>category</code> is not
- * among the categories passed to the {@linkplain
- * #ServiceRegistry(Iterator) constructor} of this
- * <code>ServiceRegistry</code>.
- *
- * @see #getServiceProviders(Class, Filter, boolean)
- */
- public <T> Iterator<T> getServiceProviders(Class<T> category,
- boolean useOrdering)
- {
- return getServiceProviders(category, null, useOrdering);
- }
-
-
- /**
- * Retrieves all providers that have been registered for the
- * specified service category and that satisfy the criteria
- * of a custom filter.
- *
- * @param category the service category whose providers are
- * to be retrieved.
- *
- * @param filter a custom filter, or <code>null</code> to
- * retrieve all registered providers for the specified
- * category.
- *
- * @param useOrdering <code>true</code> in order to retrieve the
- * providers in an order imposed by the {@linkplain #setOrdering
- * ordering constraints}; <code>false</code> in order to retrieve
- * the providers in any order.
- *
- * @throws IllegalArgumentException if <code>category</code> is not
- * among the categories passed to the {@linkplain
- * #ServiceRegistry(Iterator) constructor} of this
- * <code>ServiceRegistry</code>.
- */
- public synchronized <T> Iterator<T> getServiceProviders(Class<T> category,
- Filter filter,
- boolean useOrdering)
- {
- int catid;
- LinkedList provs;
- ArrayList result;
-
- catid = getCategoryID(category);
- provs = providers[catid];
- if (provs == null)
- return Collections.EMPTY_LIST.iterator();
-
- result = new ArrayList(provs.size());
- for (Iterator iter = provs.iterator(); iter.hasNext();)
- {
- Object provider = iter.next();
- if (filter == null || filter.filter(provider))
- result.add(provider);
- }
-
- // If we are supposed to obey ordering constraints, and
- // if any constraints have been imposed on the specified
- // service category, sort the result.
- if (useOrdering && constraints != null)
- {
- final Map cons = constraints[catid];
- if (cons != null)
- Collections.sort(result, new Comparator()
- {
- public int compare(Object o1, Object o2)
- {
- Set s;
-
- if (o1 == o2)
- return 0;
-
- s = (Set) cons.get(o1);
- if (s != null && s.contains(o2))
- return -1; // o1 < o2
-
- s = (Set) cons.get(o2);
- if (s != null && s.contains(o1))
- return 1; // o1 > o2
-
- return 0; // o1 == o2
- }
- });
- }
-
- return result.iterator();
- }
-
-
- /**
- * Returns one of the service providers that is a subclass of the
- * specified class.
- *
- * @param providerClass a class to search for.
- */
- public synchronized <T> T getServiceProviderByClass(Class<T> providerClass)
- {
- if (providerClass == null)
- throw new IllegalArgumentException();
-
- // Note that the method getServiceProviderByClass is rather
- // unlikely to be ever called, so it would be wasteful to keep a
- // special data structure for making it a fast operation.
- for (int cat = 0; cat < categories.length; cat++)
- {
- if (!categories[cat].isAssignableFrom(providerClass))
- continue;
-
- LinkedList provs = providers[cat];
- if (provs == null)
- continue;
-
- for (Iterator iter = provs.iterator(); iter.hasNext();)
- {
- Object provider = iter.next();
- if (providerClass.isInstance(provider))
- return (T) provider;
- }
- }
-
- return null;
- }
-
-
- /**
- * Adds an ordering constraint on service providers.
- *
- * @param category the service category to which an ordering
- * constraint is to be added.
- *
- * @param firstProvider the provider which is supposed to come before
- * <code>second</code>.
- *
- * @param secondProvider the provider which is supposed to come after
- * <code>first</code>.
- *
- * @throws IllegalArgumentException if <code>first</code> and
- * <code>second</code> are referring to the same object, or if one
- * of them is <code>null</code>.
- *
- * @see #unsetOrdering
- * @see #getServiceProviders(Class, Filter, boolean)
- */
- public synchronized <T> boolean setOrdering(Class<T> category,
- T firstProvider,
- T secondProvider)
- {
- return addConstraint(getCategoryID(category), firstProvider,
- secondProvider);
- }
-
-
- /**
- * Removes an ordering constraint on service providers.
- *
- * @param category the service category from which an ordering
- * constraint is to be removed.
- *
- * @param firstProvider the provider which is supposed to come before
- * <code>second</code>.
- *
- * @param secondProvider the provider which is supposed to come after
- * <code>first</code>.
- *
- * @throws IllegalArgumentException if <code>first</code> and
- * <code>second</code> are referring to the same object, or if one
- * of them is <code>null</code>.
- *
- * @see #setOrdering
- */
- public synchronized <T> boolean unsetOrdering(Class<T> category,
- T firstProvider,
- T secondProvider)
- {
- return removeConstraint(getCategoryID(category),
- firstProvider, secondProvider);
- }
-
-
- /**
- * Adds an ordering constraint on service providers.
- *
- * @param catid the service category ID, which is the
- * category&#x2019;s index into the {@link #categories} array.
- *
- * @param first the provider which is supposed to come before
- * <code>second</code>.
- *
- * @param second the provider which is supposed to come after
- * <code>first</code>.
- *
- * @throws IllegalArgumentException if <code>first</code> and
- * <code>second</code> are referring to the same object, or if one
- * of them is <code>null</code>.
- */
- private boolean addConstraint(int catid, Object first, Object second)
- {
- Set s;
- IdentityHashMap cons;
-
- // Also checks argument validity.
- removeConstraint(catid, second, first);
-
- if (constraints == null)
- constraints = new IdentityHashMap[categories.length];
- cons = constraints[catid];
- if (cons == null)
- cons = constraints[catid] = new IdentityHashMap();
-
- s = (Set) cons.get(first);
- if (s == null)
- cons.put(first, s = new HashSet());
- return s.add(second);
- }
-
-
- /**
- * Removes an ordering constraint on service providers.
- *
- * @param catid the service category ID, which is the
- * category&#x2019;s index into the {@link #categories} array.
- *
- * @param first the provider which is supposed to come before
- * <code>second</code>.
- *
- * @param second the provider which is supposed to come after
- * <code>first</code>.
- *
- * @throws IllegalArgumentException if <code>first</code> and
- * <code>second</code> are referring to the same object, or if one
- * of them is <code>null</code>.
- */
- private boolean removeConstraint(int catid, Object first, Object second)
- {
- Collection s;
- IdentityHashMap cons;
-
- if (first == null || second == null || first == second)
- throw new IllegalArgumentException();
-
- if (constraints == null)
- return false;
-
- cons = constraints[catid];
- if (cons == null)
- return false;
-
- s = (Collection) cons.get(first);
- if (s == null)
- return false;
-
- if (!s.remove(second))
- return false;
-
- // If we removed the last constraint for a service category,
- // we can get free some memory.
- if (cons.isEmpty())
- {
- constraints[catid] = null;
- boolean anyConstraints = false;
- for (int i = 0; i < constraints.length; i++)
- {
- if (constraints[i] != null)
- {
- anyConstraints = true;
- break;
- }
- }
- if (!anyConstraints)
- constraints = null;
- }
-
- return true;
- }
-
-
- /**
- * A filter for selecting service providers that match custom
- * criteria.
- *
- * @see ServiceRegistry#getServiceProviders(Class, Filter,
- * boolean)
- *
- * @since 1.4
- *
- * @author Michael Koch (konqueror@gmx.de)
- * @author Sascha Brawer (brawer@dandelis.ch)
- */
- public static interface Filter
- {
- /**
- * Checks whether the specified service provider matches the
- * constraints of this Filter.
- *
- * @param provider the service provider in question.
- *
- * @return <code>true</code> if <code>provider</code> matches the
- * criteria; <code>false</code> if it does not match.
- */
- boolean filter(Object provider);
- }
-}
diff --git a/libjava/classpath/javax/imageio/spi/package.html b/libjava/classpath/javax/imageio/spi/package.html
deleted file mode 100644
index 69fe33f..0000000
--- a/libjava/classpath/javax/imageio/spi/package.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<!-- package.html - describes classes in javax.imageio.spi package.
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. -->
-
-<html>
-<head><title>GNU Classpath - javax.imageio.spi</title></head>
-
-<body>
-<p></p>
-
-</body>
-</html>