From f49a487c882f2cd22a0ab395bcb1e90c33ad792e Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 31 Oct 2009 19:16:48 +0100 Subject: [PATCH] - Introduce new class ProviderInfo, to encapsulate Package info (vendor/version). - Rewritten Spi classes to use new class, to have vendor and version info injected from manifest. --- .../plugins/svg/SVGImageReaderSpi.java | 11 ++- .../plugins/tiff/TIFFImageReaderSpi.java | 11 ++- .../plugins/tiff/TIFFImageWriterSpi.java | 11 ++- .../plugins/wmf/WMFImageReaderSpi.java | 11 ++- .../imageio/spi/ProviderInfo.java | 64 ++++++++++++++++ .../twelvemonkeys/imageio/util/IIOUtil.java | 42 +++++++---- .../imageio/spi/ProviderInfoTestCase.java | 75 +++++++++++++++++++ .../plugins/ico/CURImageReaderSpi.java | 11 ++- .../plugins/ico/ICOImageReaderSpi.java | 11 ++- .../plugins/iff/IFFImageReaderSpi.java | 13 +++- .../plugins/iff/IFFImageWriterSpi.java | 14 +++- .../plugins/pict/PICTImageReaderSpi.java | 13 +++- .../plugins/pict/PICTImageWriterSpi.java | 13 +++- .../plugins/psd/PSDImageReaderSpi.java | 23 ++++-- .../thumbsdb/ThumbsDBImageReaderSpi.java | 12 ++- 15 files changed, 281 insertions(+), 54 deletions(-) create mode 100644 twelvemonkeys-imageio/core/src/main/java/com/twelvemonkeys/imageio/spi/ProviderInfo.java create mode 100644 twelvemonkeys-imageio/core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTestCase.java diff --git a/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java b/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java index 0db8a890..2d946d61 100755 --- a/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java +++ b/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java @@ -28,6 +28,7 @@ package com.twelvemonkeys.imageio.plugins.svg; +import com.twelvemonkeys.imageio.spi.ProviderInfo; import com.twelvemonkeys.lang.SystemUtil; import com.twelvemonkeys.imageio.util.IIOUtil; @@ -50,12 +51,16 @@ public class SVGImageReaderSpi extends ImageReaderSpi { private final static boolean SVG_READER_AVAILABLE = SystemUtil.isClassAvailable("com.twelvemonkeys.imageio.plugins.svg.SVGImageReader"); /** - * Creates an SVGImageReaderSpi + * Creates an {@code SVGImageReaderSpi}. */ public SVGImageReaderSpi() { + this(IIOUtil.getProviderInfo(SVGImageReaderSpi.class)); + } + + private SVGImageReaderSpi(final ProviderInfo pProviderInfo) { super( - "TwelveMonkeys", // Vendor name - "2.0", // Version + pProviderInfo.getVendorName(), // Vendor name + pProviderInfo.getVersion(), // Version SVG_READER_AVAILABLE ? new String[]{"svg", "SVG"} : new String[]{""}, // Names SVG_READER_AVAILABLE ? new String[]{"svg"} : null, // Suffixes SVG_READER_AVAILABLE ? new String[]{"image/svg", "image/x-svg", "image/svg+xml", "image/svg-xml"} : null, // Mime-types diff --git a/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderSpi.java b/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderSpi.java index 5ac6457f..f8ae25a1 100755 --- a/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderSpi.java +++ b/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderSpi.java @@ -28,6 +28,7 @@ package com.twelvemonkeys.imageio.plugins.tiff; +import com.twelvemonkeys.imageio.spi.ProviderInfo; import com.twelvemonkeys.lang.SystemUtil; import com.twelvemonkeys.imageio.util.IIOUtil; @@ -50,12 +51,16 @@ public class TIFFImageReaderSpi extends ImageReaderSpi { final static boolean TIFF_CLASSES_AVAILABLE = SystemUtil.isClassAvailable("com.twelvemonkeys.imageio.plugins.tiff.TIFFImageReader"); /** - * Creates an SVGImageReaderSpi + * Creates a {@code TIFFImageReaderSpi}. */ public TIFFImageReaderSpi() { + this(IIOUtil.getProviderInfo(TIFFImageReaderSpi.class)); + } + + private TIFFImageReaderSpi(final ProviderInfo pProviderInfo) { super( - "TwelveMonkeys", // Vendor name - "2.0", // Version + pProviderInfo.getVendorName(), // Vendor name + pProviderInfo.getVersion(), // Version TIFF_CLASSES_AVAILABLE ? new String[]{"tiff", "TIFF"} : new String[] {""}, // Names TIFF_CLASSES_AVAILABLE ? new String[]{"tiff", "tif"} : null, // Suffixes TIFF_CLASSES_AVAILABLE ? new String[]{"image/tiff", "image/x-tiff"} : null, // Mime-types diff --git a/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterSpi.java b/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterSpi.java index a61386b0..48d69594 100755 --- a/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterSpi.java +++ b/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterSpi.java @@ -28,6 +28,7 @@ package com.twelvemonkeys.imageio.plugins.tiff; +import com.twelvemonkeys.imageio.spi.ProviderInfo; import com.twelvemonkeys.imageio.util.IIOUtil; import javax.imageio.ImageTypeSpecifier; @@ -46,12 +47,16 @@ import java.util.Locale; public class TIFFImageWriterSpi extends ImageWriterSpi { /** - * Creates a TIFFImageWriterSpi. + * Creates a {@code TIFFImageWriterSpi}. */ public TIFFImageWriterSpi() { + this(IIOUtil.getProviderInfo(TIFFImageWriterSpi.class)); + } + + private TIFFImageWriterSpi(final ProviderInfo pProviderInfo) { super( - "TwelveMonkeys", // Vendor name - "2.0", // Version + pProviderInfo.getVendorName(), // Vendor name + pProviderInfo.getVersion(), // Version new String[]{"tiff", "TIFF"}, // Names new String[]{"tif", "tiff"}, // Suffixes new String[]{"image/tiff", "image/x-tiff"}, // Mime-types diff --git a/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderSpi.java b/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderSpi.java index fdd59ca0..f857aae0 100755 --- a/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderSpi.java +++ b/twelvemonkeys-imageio/batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderSpi.java @@ -28,6 +28,7 @@ package com.twelvemonkeys.imageio.plugins.wmf; +import com.twelvemonkeys.imageio.spi.ProviderInfo; import com.twelvemonkeys.lang.SystemUtil; import com.twelvemonkeys.imageio.util.IIOUtil; @@ -51,12 +52,16 @@ public class WMFImageReaderSpi extends ImageReaderSpi { private final static boolean WMF_READER_AVAILABLE = SystemUtil.isClassAvailable("com.twelvemonkeys.imageio.plugins.svg.SVGImageReader"); /** - * Creates an SVGImageReaderSpi + * Creates a {@code WMFImageReaderSpi}. */ public WMFImageReaderSpi() { + this(IIOUtil.getProviderInfo(WMFImageReaderSpi.class)); + } + + private WMFImageReaderSpi(final ProviderInfo pProviderInfo) { super( - "TwelveMonkeys", // Vendor name - "2.0", // Version + pProviderInfo.getVendorName(), // Vendor name + pProviderInfo.getVersion(), // Version WMF_READER_AVAILABLE ? new String[]{"wmf", "WMF"} : new String[]{""}, // Names WMF_READER_AVAILABLE ? new String[]{"wmf", "emf"} : null, // Suffixes WMF_READER_AVAILABLE ? new String[]{"application/x-msmetafile", "image/x-wmf"} : null, // Mime-types diff --git a/twelvemonkeys-imageio/core/src/main/java/com/twelvemonkeys/imageio/spi/ProviderInfo.java b/twelvemonkeys-imageio/core/src/main/java/com/twelvemonkeys/imageio/spi/ProviderInfo.java new file mode 100644 index 00000000..d13b430b --- /dev/null +++ b/twelvemonkeys-imageio/core/src/main/java/com/twelvemonkeys/imageio/spi/ProviderInfo.java @@ -0,0 +1,64 @@ +package com.twelvemonkeys.imageio.spi; + +import com.twelvemonkeys.lang.Validate; + +/** + * Provides provider info, like vendor name and version, + * for {@link javax.imageio.spi.ImageReaderWriterSpi} subclasses based on information in the manifest. + * + * @author Harald Kuhr + * @author last modified by $Author: haraldk$ + * @version $Id: ProviderInfo.java,v 1.0 Oct 31, 2009 3:49:39 PM haraldk Exp$ + * + * @see JAR Manifest + */ +public class ProviderInfo { + private final String mVendorName; + private final String mVersion; + + /** + * Creates a provider information instance based on the given package. + * + * @param pPackage the package to get provider information from. + * This should typically be the package containing the Spi class. + * + * @throws IllegalArgumentException if {@code pPackage == null} + */ + public ProviderInfo(final Package pPackage) { + Validate.notNull(pPackage, "package"); + + String vendor = pPackage.getImplementationVendor(); + mVendorName = vendor != null ? vendor : fakeVendor(pPackage); + + String version = pPackage.getImplementationVersion(); + mVersion = version != null ? version : "DEV"; + } + + private static String fakeVendor(final Package pPackage) { + String name = pPackage.getName(); + return name.startsWith("com.twelvemonkeys") ? "TwelveMonkeys" : name; + } + + /** + * Returns the vendor name, as specified in the manifest entry + * {@code Implementation-Vendor} for the package. + * If the vendor name is unavailable, the package name or some default name + * for known packages are used. + * + * @return the vendor name. + */ + public final String getVendorName() { + return mVendorName; + } + + /** + * Returns the version/build number string, as specified in the manifest entry + * {@code Implementation-Version} for the package. + * If the version is unavailable, some arbitrary (non-{@code null}) value is used. + * + * @return the vendor name. + */ + public final String getVersion() { + return mVersion; + } +} diff --git a/twelvemonkeys-imageio/core/src/main/java/com/twelvemonkeys/imageio/util/IIOUtil.java b/twelvemonkeys-imageio/core/src/main/java/com/twelvemonkeys/imageio/util/IIOUtil.java index 3c166cde..67c3ee1b 100755 --- a/twelvemonkeys-imageio/core/src/main/java/com/twelvemonkeys/imageio/util/IIOUtil.java +++ b/twelvemonkeys-imageio/core/src/main/java/com/twelvemonkeys/imageio/util/IIOUtil.java @@ -1,6 +1,7 @@ package com.twelvemonkeys.imageio.util; import com.twelvemonkeys.image.ImageUtil; +import com.twelvemonkeys.imageio.spi.ProviderInfo; import javax.imageio.IIOParam; import javax.imageio.spi.IIOServiceProvider; @@ -61,21 +62,6 @@ public final class IIOUtil { return new BufferedOutputStream(new IIOOutputStreamAdapter(pStream)); } - /** - * THIS METHOD WILL ME MOVED/RENAMED, DO NOT USE. - * - * @param pRegistry the registry to unregister from - * @param pProvider the provider to unregister - * @param pCategory the category to unregister from - * - * @deprecated - */ - public static void deregisterProvider(final ServiceRegistry pRegistry, final IIOServiceProvider pProvider, final Class pCategory) { - // http://www.ibm.com/developerworks/java/library/j-jtp04298.html - // TODO: Consider placing this method in a ImageReaderSpiBase class or similar - pRegistry.deregisterServiceProvider(pCategory.cast(pProvider), pCategory); - } - public static Image fakeSubsampling(final Image pImage, final IIOParam pParam) { if (pImage == null) { return null; @@ -134,4 +120,30 @@ public final class IIOUtil { return pImage; } + + /** + * Creates a {@link ProviderInfo} instance for the given service provider. + * + * @param pProviderClass the provider class to get info for. + * @return the newly created {@link ProviderInfo}. + */ + public static ProviderInfo getProviderInfo(final Class pProviderClass) { + return new ProviderInfo(pProviderClass.getPackage()); + } + + /** + * THIS METHOD WILL ME MOVED/RENAMED, DO NOT USE. + * + * @param pRegistry the registry to unregister from + * @param pProvider the provider to unregister + * @param pCategory the category to unregister from + * + * @deprecated + */ + public static void deregisterProvider(final ServiceRegistry pRegistry, final IIOServiceProvider pProvider, final Class pCategory) { + // http://www.ibm.com/developerworks/java/library/j-jtp04298.html + // TODO: Consider placing this method in a ImageReaderSpiBase class or similar + pRegistry.deregisterServiceProvider(pCategory.cast(pProvider), pCategory); + } + } \ No newline at end of file diff --git a/twelvemonkeys-imageio/core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTestCase.java b/twelvemonkeys-imageio/core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTestCase.java new file mode 100644 index 00000000..27dddae8 --- /dev/null +++ b/twelvemonkeys-imageio/core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTestCase.java @@ -0,0 +1,75 @@ +package com.twelvemonkeys.imageio.spi; + +import junit.framework.TestCase; + +/** + * ProviderInfoTestCase + * + * @author Harald Kuhr + * @author last modified by $Author: haraldk$ + * @version $Id: ProviderInfoTestCase.java,v 1.0 Oct 31, 2009 3:51:22 PM haraldk Exp$ + */ +public class ProviderInfoTestCase extends TestCase { + public void testCreateNorma() { + new ProviderInfo(Package.getPackage("java.util")); + } + + public void testCreateNullPackage() { + try { + new ProviderInfo(null); + fail("IllegalArgumentException expected for null package"); + } + catch (IllegalArgumentException expected) { + assertTrue(expected.getMessage().toLowerCase().contains("package")); + } + } + + public void testGetVendorUnknownPackage() { + // TODO: FixMe: This test will fail if for some reason JUnit adds manifest info to their JAR.. + ProviderInfo info = new ProviderInfo(Package.getPackage("junit.framework")); + + String vendor = info.getVendorName(); + assertNotNull(vendor); + assertEquals("junit.framework", vendor); + + String version = info.getVersion(); + assertNotNull(version); + assertEquals("DEV", version); + } + + public void testGetVendorTMPackage() { + // TODO: FixMe: This test will fail if for some reason the tests are run from within a JAR-file, + // and depends on implementation details. + ProviderInfo info = new ProviderInfo(getClass().getPackage()); + + String vendor = info.getVendorName(); + assertNotNull(vendor); + assertEquals("TwelveMonkeys", vendor); + + String version = info.getVersion(); + assertNotNull(version); + assertEquals("DEV", version); + } + + public void testGetVendorKnownPackage() { + // TODO: FixMe: This test depends on implementation details, and may fail on various JRE's... + ProviderInfo info = new ProviderInfo(Package.getPackage("java.util")); + + String vendor = info.getVendorName(); + assertNotNull(vendor); + assertFalse("".equals(vendor)); + + // NOTE: Does not work: assertEquals(System.getProperty("java.vendor"), vendor); + assertFalse("TwelveMonkeys".equals(vendor)); + assertFalse("java.util".equals(vendor)); + + String version = info.getVersion(); + assertNotNull(version); + assertFalse("".equals(version)); + assertFalse("DEV".equals(version)); + + // Is this safe to assume? + String jreVersion = System.getProperty("java.version"); + assertTrue(jreVersion.equals(version) || jreVersion.startsWith(version) || version.startsWith(jreVersion)); + } +} diff --git a/twelvemonkeys-imageio/ico/src/main/java/com/twelvemonkeys/imageio/plugins/ico/CURImageReaderSpi.java b/twelvemonkeys-imageio/ico/src/main/java/com/twelvemonkeys/imageio/plugins/ico/CURImageReaderSpi.java index 34dab925..9b38ea85 100755 --- a/twelvemonkeys-imageio/ico/src/main/java/com/twelvemonkeys/imageio/plugins/ico/CURImageReaderSpi.java +++ b/twelvemonkeys-imageio/ico/src/main/java/com/twelvemonkeys/imageio/plugins/ico/CURImageReaderSpi.java @@ -28,6 +28,9 @@ package com.twelvemonkeys.imageio.plugins.ico; +import com.twelvemonkeys.imageio.spi.ProviderInfo; +import com.twelvemonkeys.imageio.util.IIOUtil; + import javax.imageio.ImageReader; import javax.imageio.spi.ImageReaderSpi; import javax.imageio.stream.ImageInputStream; @@ -43,9 +46,13 @@ import java.util.Locale; public class CURImageReaderSpi extends ImageReaderSpi { public CURImageReaderSpi() { + this(IIOUtil.getProviderInfo(CURImageReaderSpi.class)); + } + + private CURImageReaderSpi(final ProviderInfo pProviderInfo) { super( - "TwelveMonkeys", - "2.1", + pProviderInfo.getVendorName(), + pProviderInfo.getVersion(), new String[]{"cur", "CUR"}, new String[]{"cur"}, new String[]{ diff --git a/twelvemonkeys-imageio/ico/src/main/java/com/twelvemonkeys/imageio/plugins/ico/ICOImageReaderSpi.java b/twelvemonkeys-imageio/ico/src/main/java/com/twelvemonkeys/imageio/plugins/ico/ICOImageReaderSpi.java index c9dcb90b..f75cbfb9 100755 --- a/twelvemonkeys-imageio/ico/src/main/java/com/twelvemonkeys/imageio/plugins/ico/ICOImageReaderSpi.java +++ b/twelvemonkeys-imageio/ico/src/main/java/com/twelvemonkeys/imageio/plugins/ico/ICOImageReaderSpi.java @@ -28,6 +28,9 @@ package com.twelvemonkeys.imageio.plugins.ico; +import com.twelvemonkeys.imageio.spi.ProviderInfo; +import com.twelvemonkeys.imageio.util.IIOUtil; + import javax.imageio.ImageReader; import javax.imageio.spi.ImageReaderSpi; import javax.imageio.stream.ImageInputStream; @@ -43,9 +46,13 @@ import java.util.Locale; public class ICOImageReaderSpi extends ImageReaderSpi { public ICOImageReaderSpi() { + this(IIOUtil.getProviderInfo(ICOImageReaderSpi.class)); + } + + private ICOImageReaderSpi(final ProviderInfo pProviderInfo) { super( - "TwelveMonkeys", - "2.1", + pProviderInfo.getVendorName(), + pProviderInfo.getVersion(), new String[]{"ico", "ICO"}, new String[]{"ico"}, new String[]{ diff --git a/twelvemonkeys-imageio/iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderSpi.java b/twelvemonkeys-imageio/iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderSpi.java index c256e4a6..05835d21 100755 --- a/twelvemonkeys-imageio/iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderSpi.java +++ b/twelvemonkeys-imageio/iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderSpi.java @@ -28,6 +28,9 @@ package com.twelvemonkeys.imageio.plugins.iff; +import com.twelvemonkeys.imageio.spi.ProviderInfo; +import com.twelvemonkeys.imageio.util.IIOUtil; + import javax.imageio.ImageReader; import javax.imageio.spi.ImageReaderSpi; import javax.imageio.stream.ImageInputStream; @@ -46,12 +49,16 @@ public class IFFImageReaderSpi extends ImageReaderSpi { static IFFImageReaderSpi mSharedInstance; /** - * Creates an IFFImageReaderSpi + * Creates an {@code IFFImageReaderSpi}. */ public IFFImageReaderSpi() { + this(IIOUtil.getProviderInfo(IFFImageReaderSpi.class)); + } + + private IFFImageReaderSpi(final ProviderInfo pProviderInfo) { super( - "TwelveMonkeys", - "2.0", + pProviderInfo.getVendorName(), + pProviderInfo.getVersion(), new String[]{"iff", "IFF"}, new String[]{"iff", "lbm", "ham", "ham8", "ilbm"}, new String[]{"image/iff", "image/x-iff"}, diff --git a/twelvemonkeys-imageio/iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriterSpi.java b/twelvemonkeys-imageio/iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriterSpi.java index bdc52118..29ee2e26 100755 --- a/twelvemonkeys-imageio/iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriterSpi.java +++ b/twelvemonkeys-imageio/iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriterSpi.java @@ -28,6 +28,9 @@ package com.twelvemonkeys.imageio.plugins.iff; +import com.twelvemonkeys.imageio.spi.ProviderInfo; +import com.twelvemonkeys.imageio.util.IIOUtil; + import javax.imageio.ImageTypeSpecifier; import javax.imageio.ImageWriter; import javax.imageio.spi.ImageWriterSpi; @@ -44,12 +47,17 @@ import java.util.Locale; public class IFFImageWriterSpi extends ImageWriterSpi { /** - * Creates an IFFImageWriterSpi + * Creates an {@code IFFImageWriterSpi}. */ public IFFImageWriterSpi() { + this(IIOUtil.getProviderInfo(IFFImageWriterSpi.class)); + + } + + private IFFImageWriterSpi(final ProviderInfo pProviderInfo) { super( - "TwelveMonkeys", - "$Revision: 1.0 $", + pProviderInfo.getVendorName(), + pProviderInfo.getVersion(), new String[]{"iff", "IFF"}, new String[]{"iff", "lbm", "ham", "ham8", "ilbm"}, new String[]{"image/iff", "image/x-iff"}, diff --git a/twelvemonkeys-imageio/pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java b/twelvemonkeys-imageio/pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java index f7529745..7842cd5d 100755 --- a/twelvemonkeys-imageio/pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java +++ b/twelvemonkeys-imageio/pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java @@ -28,6 +28,9 @@ package com.twelvemonkeys.imageio.plugins.pict; +import com.twelvemonkeys.imageio.spi.ProviderInfo; +import com.twelvemonkeys.imageio.util.IIOUtil; + import javax.imageio.ImageReader; import javax.imageio.spi.ImageReaderSpi; import javax.imageio.stream.ImageInputStream; @@ -45,12 +48,16 @@ import java.util.Locale; public class PICTImageReaderSpi extends ImageReaderSpi { /** - * Creates an PICTImageReaderSpi + * Creates a {@code PICTImageReaderSpi}. */ public PICTImageReaderSpi() { + this(IIOUtil.getProviderInfo(PICTImageReaderSpi.class)); + } + + private PICTImageReaderSpi(final ProviderInfo pProviderInfo) { super( - "TwelveMonkeys", - "2.2", + pProviderInfo.getVendorName(), + pProviderInfo.getVersion(), new String[]{"pct", "PCT", "pict", "PICT"}, new String[]{"pct", "pict"}, new String[]{"image/pict", "image/x-pict"}, diff --git a/twelvemonkeys-imageio/pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterSpi.java b/twelvemonkeys-imageio/pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterSpi.java index b349c56b..75382282 100755 --- a/twelvemonkeys-imageio/pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterSpi.java +++ b/twelvemonkeys-imageio/pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterSpi.java @@ -28,6 +28,9 @@ package com.twelvemonkeys.imageio.plugins.pict; +import com.twelvemonkeys.imageio.spi.ProviderInfo; +import com.twelvemonkeys.imageio.util.IIOUtil; + import javax.imageio.ImageTypeSpecifier; import javax.imageio.ImageWriter; import javax.imageio.spi.ImageWriterSpi; @@ -44,12 +47,16 @@ import java.util.Locale; public class PICTImageWriterSpi extends ImageWriterSpi { /** - * Creates an PICTImageWriterSpi + * Creates a {@code PICTImageWriterSpi}. */ public PICTImageWriterSpi() { + this(IIOUtil.getProviderInfo(PICTImageWriterSpi.class)); + } + + private PICTImageWriterSpi(final ProviderInfo pProviderInfo) { super( - "TwelveMonkeys", - "2.0", + pProviderInfo.getVendorName(), + pProviderInfo.getVersion(), new String[]{"pct", "PCT", "pict", "PICT"}, new String[]{"pct", "pict"}, diff --git a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderSpi.java b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderSpi.java index 79117fe1..5a27b1c5 100755 --- a/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderSpi.java +++ b/twelvemonkeys-imageio/psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderSpi.java @@ -28,9 +28,12 @@ package com.twelvemonkeys.imageio.plugins.psd; +import com.twelvemonkeys.imageio.spi.ProviderInfo; +import com.twelvemonkeys.imageio.util.IIOUtil; + +import javax.imageio.ImageReader; import javax.imageio.spi.ImageReaderSpi; import javax.imageio.stream.ImageInputStream; -import javax.imageio.ImageReader; import java.io.IOException; import java.util.Locale; @@ -44,16 +47,20 @@ import java.util.Locale; public class PSDImageReaderSpi extends ImageReaderSpi { /** - * Creates an PSDImageReaderSpi + * Creates a {@code PSDImageReaderSpi}. */ public PSDImageReaderSpi() { + this(IIOUtil.getProviderInfo(PSDImageReaderSpi.class)); + } + + private PSDImageReaderSpi(final ProviderInfo pProviderInfo) { super( - "TwelveMonkeys", - "2.0", + pProviderInfo.getVendorName(), + pProviderInfo.getVersion(), new String[]{"psd", "PSD"}, new String[]{"psd"}, new String[]{ - "application/vnd.adobe.photoshop", // This one seems official, used in XMP + "application/vnd.adobe.photoshop", // This one seems official, used in XMP "image/x-psd", "application/x-photoshop", "image/x-photoshop" }, "com.twelvemkonkeys.imageio.plugins.psd.PSDImageReader", @@ -65,7 +72,7 @@ public class PSDImageReaderSpi extends ImageReaderSpi { ); } - public boolean canDecodeInput(Object pSource) throws IOException { + public boolean canDecodeInput(final Object pSource) throws IOException { if (!(pSource instanceof ImageInputStream)) { return false; } @@ -82,11 +89,11 @@ public class PSDImageReaderSpi extends ImageReaderSpi { } } - public ImageReader createReaderInstance(Object pExtension) throws IOException { + public ImageReader createReaderInstance(final Object pExtension) throws IOException { return new PSDImageReader(this); } - public String getDescription(Locale pLocale) { + public String getDescription(final Locale pLocale) { return "Adobe Photoshop Document (PSD) image reader"; } } diff --git a/twelvemonkeys-imageio/thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderSpi.java b/twelvemonkeys-imageio/thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderSpi.java index a392d882..362c7559 100755 --- a/twelvemonkeys-imageio/thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderSpi.java +++ b/twelvemonkeys-imageio/thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderSpi.java @@ -28,6 +28,8 @@ package com.twelvemonkeys.imageio.plugins.thumbsdb; +import com.twelvemonkeys.imageio.spi.ProviderInfo; +import com.twelvemonkeys.imageio.util.IIOUtil; import com.twelvemonkeys.io.ole2.CompoundDocument; import javax.imageio.ImageReader; @@ -50,12 +52,16 @@ public class ThumbsDBImageReaderSpi extends ImageReaderSpi { private ImageReaderSpi mJPEGProvider; /** - * Creates an IFFImageReaderSpi + * Creates a {@code ThumbsDBImageReaderSpi}. */ public ThumbsDBImageReaderSpi() { + this(IIOUtil.getProviderInfo(ThumbsDBImageReaderSpi.class)); + } + + private ThumbsDBImageReaderSpi(final ProviderInfo pProviderInfo) { super( - "TwelveMonkeys", - "2.0", + pProviderInfo.getVendorName(), + pProviderInfo.getVersion(), new String[]{"thumbs", "THUMBS", "Thumbs DB"}, new String[]{"db"}, new String[]{"image/x-thumbs-db", "application/octet-stream"}, // TODO: Check IANA et al...