| /* |
| * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. Oracle designates this |
| * particular file as subject to the "Classpath" exception as provided |
| * by Oracle in the LICENSE file that accompanied this code. |
| * |
| * This code 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 |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| package javax.imageio.spi; |
| |
| import java.util.Locale; |
| import javax.imageio.spi.RegisterableService; |
| import javax.imageio.spi.ServiceRegistry; |
| |
| /** |
| * A superinterface for functionality common to all Image I/O service |
| * provider interfaces (SPIs). For more information on service |
| * provider classes, see the class comment for the |
| * <code>IIORegistry</code> class. |
| * |
| * @see IIORegistry |
| * @see javax.imageio.spi.ImageReaderSpi |
| * @see javax.imageio.spi.ImageWriterSpi |
| * @see javax.imageio.spi.ImageTranscoderSpi |
| * @see javax.imageio.spi.ImageInputStreamSpi |
| * |
| */ |
| public abstract class IIOServiceProvider implements RegisterableService { |
| |
| /** |
| * A <code>String</code> to be returned from |
| * <code>getVendorName</code>, initially <code>null</code>. |
| * Constructors should set this to a non-<code>null</code> value. |
| */ |
| protected String vendorName; |
| |
| /** |
| * A <code>String</code> to be returned from |
| * <code>getVersion</code>, initially null. Constructors should |
| * set this to a non-<code>null</code> value. |
| */ |
| protected String version; |
| |
| /** |
| * Constructs an <code>IIOServiceProvider</code> with a given |
| * vendor name and version identifier. |
| * |
| * @param vendorName the vendor name. |
| * @param version a version identifier. |
| * |
| * @exception IllegalArgumentException if <code>vendorName</code> |
| * is <code>null</code>. |
| * @exception IllegalArgumentException if <code>version</code> |
| * is <code>null</code>. |
| */ |
| public IIOServiceProvider(String vendorName, |
| String version) { |
| if (vendorName == null) { |
| throw new IllegalArgumentException("vendorName == null!"); |
| } |
| if (version == null) { |
| throw new IllegalArgumentException("version == null!"); |
| } |
| this.vendorName = vendorName; |
| this.version = version; |
| } |
| |
| /** |
| * Constructs a blank <code>IIOServiceProvider</code>. It is up |
| * to the subclass to initialize instance variables and/or |
| * override method implementations in order to ensure that the |
| * <code>getVendorName</code> and <code>getVersion</code> methods |
| * will return non-<code>null</code> values. |
| */ |
| public IIOServiceProvider() { |
| } |
| |
| /** |
| * A callback that will be called exactly once after the Spi class |
| * has been instantiated and registered in a |
| * <code>ServiceRegistry</code>. This may be used to verify that |
| * the environment is suitable for this service, for example that |
| * native libraries can be loaded. If the service cannot function |
| * in the environment where it finds itself, it should deregister |
| * itself from the registry. |
| * |
| * <p> Only the registry should call this method. |
| * |
| * <p> The default implementation does nothing. |
| * |
| * @see ServiceRegistry#registerServiceProvider(Object provider) |
| */ |
| public void onRegistration(ServiceRegistry registry, |
| Class<?> category) {} |
| |
| /** |
| * A callback that will be whenever the Spi class has been |
| * deregistered from a <code>ServiceRegistry</code>. |
| * |
| * <p> Only the registry should call this method. |
| * |
| * <p> The default implementation does nothing. |
| * |
| * @see ServiceRegistry#deregisterServiceProvider(Object provider) |
| */ |
| public void onDeregistration(ServiceRegistry registry, |
| Class<?> category) {} |
| |
| /** |
| * Returns the name of the vendor responsible for creating this |
| * service provider and its associated implementation. Because |
| * the vendor name may be used to select a service provider, |
| * it is not localized. |
| * |
| * <p> The default implementation returns the value of the |
| * <code>vendorName</code> instance variable. |
| * |
| * @return a non-<code>null</code> <code>String</code> containing |
| * the name of the vendor. |
| */ |
| public String getVendorName() { |
| return vendorName; |
| } |
| |
| /** |
| * Returns a string describing the version |
| * number of this service provider and its associated |
| * implementation. Because the version may be used by transcoders |
| * to identify the service providers they understand, this method |
| * is not localized. |
| * |
| * <p> The default implementation returns the value of the |
| * <code>version</code> instance variable. |
| * |
| * @return a non-<code>null</code> <code>String</code> containing |
| * the version of this service provider. |
| */ |
| public String getVersion() { |
| return version; |
| } |
| |
| /** |
| * Returns a brief, human-readable description of this service |
| * provider and its associated implementation. The resulting |
| * string should be localized for the supplied |
| * <code>Locale</code>, if possible. |
| * |
| * @param locale a <code>Locale</code> for which the return value |
| * should be localized. |
| * |
| * @return a <code>String</code> containing a description of this |
| * service provider. |
| */ |
| public abstract String getDescription(Locale locale); |
| } |