1. /*
  2. * @(#)InputStreamImageInputStreamSpi.java 1.18 03/01/23
  3. *
  4. * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package com.sun.imageio.spi;
  8. import java.io.File;
  9. import java.io.InputStream;
  10. import java.io.IOException;
  11. import java.util.Locale;
  12. import javax.imageio.spi.ImageInputStreamSpi;
  13. import javax.imageio.stream.ImageInputStream;
  14. import javax.imageio.stream.FileCacheImageInputStream;
  15. import javax.imageio.stream.MemoryCacheImageInputStream;
  16. public class InputStreamImageInputStreamSpi extends ImageInputStreamSpi {
  17. private static final String vendorName = "Sun Microsystems, Inc.";
  18. private static final String version = "1.0";
  19. private static final Class inputClass = InputStream.class;
  20. public InputStreamImageInputStreamSpi() {
  21. super(vendorName, version, inputClass);
  22. }
  23. public String getDescription(Locale locale) {
  24. return "Service provider that instantiates a FileCacheImageInputStream or MemoryCacheImageInputStream from an InputStream";
  25. }
  26. public boolean canUseCacheFile() {
  27. return true;
  28. }
  29. public boolean needsCacheFile() {
  30. return false;
  31. }
  32. public ImageInputStream createInputStreamInstance(Object input,
  33. boolean useCache,
  34. File cacheDir)
  35. throws IOException {
  36. if (input instanceof InputStream) {
  37. InputStream is = (InputStream)input;
  38. if (useCache) {
  39. return new FileCacheImageInputStream(is, cacheDir);
  40. } else {
  41. return new MemoryCacheImageInputStream(is);
  42. }
  43. } else {
  44. throw new IllegalArgumentException();
  45. }
  46. }
  47. }