1/* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17/** 18 * @author Rustem V. Rafikov 19 * @version $Revision: 1.3 $ 20 */ 21 22package javax.imageio.spi; 23 24import java.io.File; 25import java.io.IOException; 26import javax.imageio.stream.ImageInputStream; 27 28/** 29 * The ImageInputStreamSpi abstract class is a service provider interface (SPI) 30 * for ImageInputStreams. 31 * 32 * @since Android 1.0 33 */ 34public abstract class ImageInputStreamSpi extends IIOServiceProvider implements RegisterableService { 35 36 /** 37 * The input class. 38 */ 39 protected Class<?> inputClass; 40 41 /** 42 * Instantiates a new ImageInputStreamSpi. 43 */ 44 protected ImageInputStreamSpi() { 45 throw new UnsupportedOperationException("Not supported yet"); 46 } 47 48 /** 49 * Instantiates a new ImageInputStreamSpi. 50 * 51 * @param vendorName 52 * the vendor name. 53 * @param version 54 * the version. 55 * @param inputClass 56 * the input class. 57 */ 58 public ImageInputStreamSpi(String vendorName, String version, Class<?> inputClass) { 59 super(vendorName, version); 60 this.inputClass = inputClass; 61 } 62 63 /** 64 * Gets an input Class object that represents class or interface that must 65 * be implemented by an input source. 66 * 67 * @return the input class. 68 */ 69 public Class<?> getInputClass() { 70 return inputClass; 71 } 72 73 /** 74 * Returns true if the ImageInputStream can use a cache file. If this method 75 * returns false, the value of the useCache parameter of 76 * createInputStreamInstance will be ignored. The default implementation 77 * returns false. 78 * 79 * @return true, if the ImageInputStream can use a cache file, false 80 * otherwise. 81 */ 82 public boolean canUseCacheFile() { 83 return false; // -- def 84 } 85 86 /** 87 * Returns true if the ImageInputStream implementation requires the use of a 88 * cache file. The default implementation returns false. 89 * 90 * @return true, if the ImageInputStream implementation requires the use of 91 * a cache file, false otherwise. 92 */ 93 public boolean needsCacheFile() { 94 return false; // def 95 } 96 97 /** 98 * Creates the ImageInputStream associated with this service provider. The 99 * input object should be an instance of the class returned by the 100 * getInputClass method. This method uses the specified directory for the 101 * cache file if the useCache parameter is true. 102 * 103 * @param input 104 * the input Object. 105 * @param useCache 106 * the flag indicating if a cache file is needed or not. 107 * @param cacheDir 108 * the cache directory. 109 * @return the ImageInputStream. 110 * @throws IOException 111 * if an I/O exception has occurred. 112 */ 113 public abstract ImageInputStream createInputStreamInstance(Object input, boolean useCache, 114 File cacheDir) throws IOException; 115 116 /** 117 * Creates the ImageInputStream associated with this service provider. The 118 * input object should be an instance of the class returned by getInputClass 119 * method. This method uses the default system directory for the cache file, 120 * if it is needed. 121 * 122 * @param input 123 * the input Object. 124 * @return the ImageInputStream. 125 * @throws IOException 126 * if an I/O exception has occurred. 127 */ 128 public ImageInputStream createInputStreamInstance(Object input) throws IOException { 129 return createInputStreamInstance(input, true, null); 130 } 131} 132