This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-imaging.git
commit 24bab44e07e692d8bae4d1740e6d1802b63099ba Author: Gary D. Gregory <garydgreg...@gmail.com> AuthorDate: Sat Apr 26 17:34:28 2025 -0400 Fix SpotBugs CT_CONSTRUCTOR_THROW - Use "Compliant Solution (Final)" from https://wiki.sei.cmu.edu/confluence/display/java/OBJ11-J.+Be+wary+of+letting+constructors+throw+exceptions --- src/changes/changes.xml | 1 + src/main/java/org/apache/commons/imaging/common/ImageBuilder.java | 2 +- .../org/apache/commons/imaging/formats/jpeg/segments/App2Segment.java | 2 +- .../org/apache/commons/imaging/formats/jpeg/segments/DhtSegment.java | 2 +- .../org/apache/commons/imaging/formats/jpeg/segments/DqtSegment.java | 2 +- .../org/apache/commons/imaging/formats/jpeg/segments/JfifSegment.java | 2 +- .../org/apache/commons/imaging/formats/jpeg/segments/SofnSegment.java | 2 +- .../org/apache/commons/imaging/formats/jpeg/segments/SosSegment.java | 2 +- .../org/apache/commons/imaging/formats/png/chunks/PngChunkGama.java | 2 +- .../org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java | 2 +- .../org/apache/commons/imaging/formats/png/chunks/PngChunkIhdr.java | 2 +- .../org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java | 2 +- .../org/apache/commons/imaging/formats/png/chunks/PngChunkPhys.java | 2 +- .../org/apache/commons/imaging/formats/png/chunks/PngChunkPlte.java | 2 +- .../org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java | 2 +- .../org/apache/commons/imaging/formats/png/chunks/PngChunkText.java | 2 +- .../org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java | 2 +- .../formats/png/transparencyfilters/TransparencyFilterGrayscale.java | 2 +- .../formats/png/transparencyfilters/TransparencyFilterTrueColor.java | 2 +- .../org/apache/commons/imaging/formats/tiff/TiffRasterDataFloat.java | 2 +- .../java/org/apache/commons/imaging/formats/tiff/TiffRasterDataInt.java | 2 +- .../tiff/photometricinterpreters/PhotometricInterpreterPalette.java | 2 +- .../photometricinterpreters/floatingpoint/PaletteEntryForRange.java | 2 +- .../photometricinterpreters/floatingpoint/PaletteEntryForValue.java | 2 +- .../floatingpoint/PhotometricInterpreterFloat.java | 2 +- 25 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 5e6bf2a0..43673ead 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -56,6 +56,7 @@ The <action> type attribute can be add,update,fix,remove. <action dev="ggregory" type="fix" due-to="Gary Gregory">Increase default block size in byte sources from 1024 to 8192 bytes.</action> <action dev="ggregory" type="fix" due-to="Sebastian Schlatow">Remove double ImagingException from method signatures #462.</action> <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix all PMD issues.</action> + <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs CT_CONSTRUCTOR_THROW.</action> <!-- ADD --> <action dev="ggregory" type="add" due-to="Arnout Engelen">Add an Imaging-specific security page #439.</action> <action dev="ggregory" type="add" due-to="Gary Gregory">Add Maven property commons.taglist.version for debugging.</action> diff --git a/src/main/java/org/apache/commons/imaging/common/ImageBuilder.java b/src/main/java/org/apache/commons/imaging/common/ImageBuilder.java index 35d64651..48559bea 100644 --- a/src/main/java/org/apache/commons/imaging/common/ImageBuilder.java +++ b/src/main/java/org/apache/commons/imaging/common/ImageBuilder.java @@ -53,7 +53,7 @@ import java.util.Properties; /** * A utility class primary intended for storing data obtained by reading image files. */ -public class ImageBuilder { +public final class ImageBuilder { private final int[] data; private final int width; private final int height; diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/App2Segment.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/App2Segment.java index a92a49fd..3bb3c090 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/App2Segment.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/App2Segment.java @@ -27,7 +27,7 @@ import java.io.InputStream; import org.apache.commons.imaging.ImagingException; import org.apache.commons.imaging.formats.jpeg.JpegConstants; -public class App2Segment extends AppnSegment implements Comparable<App2Segment> { +public final class App2Segment extends AppnSegment implements Comparable<App2Segment> { private final byte[] iccBytes; public final int curMarker; public final int numMarkers; diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/DhtSegment.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/DhtSegment.java index 8ddfc4d2..d1e5ff3d 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/DhtSegment.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/DhtSegment.java @@ -26,7 +26,7 @@ import java.util.List; import org.apache.commons.imaging.common.Allocator; -public class DhtSegment extends AbstractSegment { +public final class DhtSegment extends AbstractSegment { public static class HuffmanTable { // some arrays are better off one-based diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/DqtSegment.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/DqtSegment.java index 4c8df85a..e2fbc799 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/DqtSegment.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/DqtSegment.java @@ -26,7 +26,7 @@ import java.util.List; import org.apache.commons.imaging.ImagingException; -public class DqtSegment extends AbstractSegment { +public final class DqtSegment extends AbstractSegment { public static class QuantizationTable { public final int precision; public final int destinationIdentifier; diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/JfifSegment.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/JfifSegment.java index 6b487640..022209b4 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/JfifSegment.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/JfifSegment.java @@ -28,7 +28,7 @@ import java.io.InputStream; import org.apache.commons.imaging.ImagingException; import org.apache.commons.imaging.formats.jpeg.JpegConstants; -public class JfifSegment extends AbstractSegment { +public final class JfifSegment extends AbstractSegment { public final int jfifMajorVersion; public final int jfifMinorVersion; public final int densityUnits; diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/SofnSegment.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/SofnSegment.java index fc267a6e..32536b9d 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/SofnSegment.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/SofnSegment.java @@ -29,7 +29,7 @@ import org.apache.commons.imaging.ImagingException; import org.apache.commons.imaging.common.Allocator; import org.apache.commons.imaging.formats.jpeg.JpegConstants; -public class SofnSegment extends AbstractSegment { +public final class SofnSegment extends AbstractSegment { public static class Component { static final int SHALLOW_SIZE = 32; diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/SosSegment.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/SosSegment.java index 6ace959b..5d5d20af 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/SosSegment.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/SosSegment.java @@ -26,7 +26,7 @@ import java.util.logging.Logger; import org.apache.commons.imaging.common.Allocator; -public class SosSegment extends AbstractSegment { +public final class SosSegment extends AbstractSegment { public static class Component { static final int SHALLOW_SIZE = 24; diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkGama.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkGama.java index 86160bce..4983a53b 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkGama.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkGama.java @@ -21,7 +21,7 @@ import static org.apache.commons.imaging.common.BinaryFunctions.read4Bytes; import java.io.ByteArrayInputStream; import java.io.IOException; -public class PngChunkGama extends PngChunk { +public final class PngChunkGama extends PngChunk { private final int gamma; diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java index d41767a8..b828c6fe 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java @@ -35,7 +35,7 @@ import org.apache.commons.io.IOUtils; * * @see <a href="http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html">PNG Specification</a> */ -public class PngChunkIccp extends PngChunk { +public final class PngChunkIccp extends PngChunk { /* * Logger. diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIhdr.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIhdr.java index 22ca5f08..b7437613 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIhdr.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIhdr.java @@ -26,7 +26,7 @@ import org.apache.commons.imaging.ImagingException; import org.apache.commons.imaging.formats.png.InterlaceMethod; import org.apache.commons.imaging.formats.png.PngColorType; -public class PngChunkIhdr extends PngChunk { +public final class PngChunkIhdr extends PngChunk { private final int width; private final int height; diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java index 1e5c17e1..e66dc355 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java @@ -28,7 +28,7 @@ import org.apache.commons.imaging.formats.png.AbstractPngText; import org.apache.commons.imaging.formats.png.PngConstants; import org.apache.commons.io.IOUtils; -public class PngChunkItxt extends AbstractPngTextChunk { +public final class PngChunkItxt extends AbstractPngTextChunk { private final String keyword; private final String text; diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkPhys.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkPhys.java index cee8071b..f56a1b63 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkPhys.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkPhys.java @@ -22,7 +22,7 @@ import static org.apache.commons.imaging.common.BinaryFunctions.readByte; import java.io.ByteArrayInputStream; import java.io.IOException; -public class PngChunkPhys extends PngChunk { +public final class PngChunkPhys extends PngChunk { private final int pixelsPerUnitXAxis; private final int pixelsPerUnitYAxis; diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkPlte.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkPlte.java index cefa2d8f..b95b304a 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkPlte.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkPlte.java @@ -26,7 +26,7 @@ import org.apache.commons.imaging.ImagingException; import org.apache.commons.imaging.common.Allocator; import org.apache.commons.imaging.formats.png.GammaCorrection; -public class PngChunkPlte extends PngChunk { +public final class PngChunkPlte extends PngChunk { private final int[] rgb; public PngChunkPlte(final int length, final int chunkType, final int crc, final byte[] bytes) throws ImagingException, IOException { diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java index 4ae1810a..d49c0b04 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java @@ -21,7 +21,7 @@ import java.nio.charset.StandardCharsets; import org.apache.commons.imaging.ImagingException; import org.apache.commons.imaging.common.BinaryFunctions; -public class PngChunkScal extends PngChunk { +public final class PngChunkScal extends PngChunk { private final double unitsPerPixelXAxis; private final double unitsPerPixelYAxis; diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkText.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkText.java index 33cb18bc..161c96a5 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkText.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkText.java @@ -24,7 +24,7 @@ import org.apache.commons.imaging.ImagingException; import org.apache.commons.imaging.common.BinaryFunctions; import org.apache.commons.imaging.formats.png.AbstractPngText; -public class PngChunkText extends AbstractPngTextChunk { +public final class PngChunkText extends AbstractPngTextChunk { private static final Logger LOGGER = Logger.getLogger(PngChunkText.class.getName()); diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java index d560e041..5b6252d0 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java @@ -28,7 +28,7 @@ import org.apache.commons.imaging.formats.png.AbstractPngText; import org.apache.commons.imaging.formats.png.PngConstants; import org.apache.commons.io.IOUtils; -public class PngChunkZtxt extends AbstractPngTextChunk { +public final class PngChunkZtxt extends AbstractPngTextChunk { private final String keyword; private final String text; diff --git a/src/main/java/org/apache/commons/imaging/formats/png/transparencyfilters/TransparencyFilterGrayscale.java b/src/main/java/org/apache/commons/imaging/formats/png/transparencyfilters/TransparencyFilterGrayscale.java index 3b1f8a99..73c786fe 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/transparencyfilters/TransparencyFilterGrayscale.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/transparencyfilters/TransparencyFilterGrayscale.java @@ -23,7 +23,7 @@ import java.io.IOException; import org.apache.commons.imaging.ImagingException; -public class TransparencyFilterGrayscale extends AbstractTransparencyFilter { +public final class TransparencyFilterGrayscale extends AbstractTransparencyFilter { private final int transparentColor; public TransparencyFilterGrayscale(final byte[] bytes) throws IOException { diff --git a/src/main/java/org/apache/commons/imaging/formats/png/transparencyfilters/TransparencyFilterTrueColor.java b/src/main/java/org/apache/commons/imaging/formats/png/transparencyfilters/TransparencyFilterTrueColor.java index c839b5dc..e8f99a3a 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/transparencyfilters/TransparencyFilterTrueColor.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/transparencyfilters/TransparencyFilterTrueColor.java @@ -23,7 +23,7 @@ import java.io.IOException; import org.apache.commons.imaging.ImagingException; -public class TransparencyFilterTrueColor extends AbstractTransparencyFilter { +public final class TransparencyFilterTrueColor extends AbstractTransparencyFilter { private final int transparentColor; public TransparencyFilterTrueColor(final byte[] bytes) throws IOException { diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffRasterDataFloat.java b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffRasterDataFloat.java index 8a1468e4..01a70b41 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffRasterDataFloat.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffRasterDataFloat.java @@ -36,7 +36,7 @@ import org.apache.commons.imaging.common.Allocator; * index = y * width + x + iSample * width * height; * </pre> */ -public class TiffRasterDataFloat extends TiffRasterData { +public final class TiffRasterDataFloat extends TiffRasterData { private final float[] data; diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffRasterDataInt.java b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffRasterDataInt.java index 953a556d..ebe06936 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffRasterDataInt.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffRasterDataInt.java @@ -34,7 +34,7 @@ import org.apache.commons.imaging.common.Allocator; * index = y * width + x + iSample * width * height; * </pre> */ -public class TiffRasterDataInt extends TiffRasterData { +public final class TiffRasterDataInt extends TiffRasterData { private final int[] data; diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/PhotometricInterpreterPalette.java b/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/PhotometricInterpreterPalette.java index a2e5baab..ddeb9eeb 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/PhotometricInterpreterPalette.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/PhotometricInterpreterPalette.java @@ -25,7 +25,7 @@ import org.apache.commons.imaging.common.AllocationRequestException; import org.apache.commons.imaging.common.Allocator; import org.apache.commons.imaging.common.ImageBuilder; -public class PhotometricInterpreterPalette extends PhotometricInterpreter { +public final class PhotometricInterpreterPalette extends PhotometricInterpreter { /** * The color map of integer ARGB values tied to the pixel index of the palette. diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/floatingpoint/PaletteEntryForRange.java b/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/floatingpoint/PaletteEntryForRange.java index 9fe1b691..f671acc3 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/floatingpoint/PaletteEntryForRange.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/floatingpoint/PaletteEntryForRange.java @@ -25,7 +25,7 @@ import java.awt.Color; * In keeping with the conventions of many Geographic Information Systems (GIS) and art applications, this instance "covered" values in the range v0 ≤ f < * v1. Thus, a value that exactly matches the upper bound of the range is not considered "covered". */ -public class PaletteEntryForRange implements PaletteEntry { +public final class PaletteEntryForRange implements PaletteEntry { private final float v0; private final float v1; diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/floatingpoint/PaletteEntryForValue.java b/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/floatingpoint/PaletteEntryForValue.java index c6b04560..4e76078c 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/floatingpoint/PaletteEntryForValue.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/floatingpoint/PaletteEntryForValue.java @@ -22,7 +22,7 @@ import java.awt.Color; * Provides a palette entry for a color assignment to a single value. This class will assign a color to a value only if it is an exact match for the input. This * class will also support Float.NaN */ -public class PaletteEntryForValue implements PaletteEntry { +public final class PaletteEntryForValue implements PaletteEntry { private final float value; private final int iColor; diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/floatingpoint/PhotometricInterpreterFloat.java b/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/floatingpoint/PhotometricInterpreterFloat.java index 37193b65..d84df931 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/floatingpoint/PhotometricInterpreterFloat.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/floatingpoint/PhotometricInterpreterFloat.java @@ -45,7 +45,7 @@ import org.apache.commons.imaging.formats.tiff.photometricinterpreters.Photometr * <p> * To use this class, an application must access the TIFF file using the low-level, TIFF-specific API provided by the Apache Commons Imaging library. */ -public class PhotometricInterpreterFloat extends PhotometricInterpreter { +public final class PhotometricInterpreterFloat extends PhotometricInterpreter { ArrayList<PaletteEntry> rangePaletteEntries = new ArrayList<>(); ArrayList<PaletteEntry> singleValuePaletteEntries = new ArrayList<>();