diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f03cbf9f9..0f61dd80b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -17,7 +17,7 @@ jobs:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]
- java: [ 8, 11, 17, 20 ]
+ java: [ 8, 11, 17, 20, 21-ea ]
runs-on: ${{ matrix.os }}
permissions:
checks: write
@@ -32,7 +32,7 @@ jobs:
- name: Run Tests
run: mvn --batch-mode --no-transfer-progress test
- name: Publish Test Report
- uses: mikepenz/action-junit-report@75b84e78b3f0aaea7ed7cf8d1d100d7f97f963ec # v4.0.0
+ uses: mikepenz/action-junit-report@0a8a5ba57593d67b2e45de2c543b438412382b7b # v4.0.1
if: ${{ !cancelled() }}
with:
report_paths: "**/target/surefire-reports/TEST*.xml"
@@ -66,7 +66,7 @@ jobs:
- name: Run Tests
run: mvn --batch-mode --no-transfer-progress test
- name: Publish Test Report
- uses: mikepenz/action-junit-report@75b84e78b3f0aaea7ed7cf8d1d100d7f97f963ec # v4.0.0
+ uses: mikepenz/action-junit-report@0a8a5ba57593d67b2e45de2c543b438412382b7b # v4.0.1
if: ${{ !cancelled() }}
with:
report_paths: "**/target/surefire-reports/TEST*.xml"
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
new file mode 100644
index 000000000..22328da78
--- /dev/null
+++ b/.github/workflows/codeql.yml
@@ -0,0 +1,69 @@
+name: "CodeQL"
+
+on:
+ push:
+ branches: [ "master" ]
+ pull_request:
+ # The branches below must be a subset of the branches above
+ branches: [ "master" ]
+ schedule:
+ - cron: '26 13 * * 6'
+
+permissions: {}
+
+jobs:
+ analyze:
+ name: Analyze
+ # Runner size impacts CodeQL analysis time. To learn more, please see:
+ # - https://gh.io/recommended-hardware-resources-for-running-codeql
+ # - https://gh.io/supported-runners-and-hardware-resources
+ # - https://gh.io/using-larger-runners
+ # Consider using larger runners for possible analysis time improvements.
+ runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
+ timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language: [ 'java' ]
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2.21.9
+ with:
+ languages: ${{ matrix.language }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+
+ # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
+ # queries: security-extended,security-and-quality
+
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2.21.9
+
+ # âšī¸ Command-line programs to run using the OS shell.
+ # đ See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
+
+ # If the Autobuild fails above, remove it and uncomment the following three lines.
+ # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
+
+ # - run: |
+ # echo "Run, Build Application using script"
+ # ./location_of_script_within_repo/buildscript.sh
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2.21.9
+ with:
+ category: "/language:${{matrix.language}}"
diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
index 789ce0cc7..41efdf583 100644
--- a/.github/workflows/scorecard.yml
+++ b/.github/workflows/scorecard.yml
@@ -57,6 +57,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2.21.8
+ uses: github/codeql-action/upload-sarif@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2.21.9
with:
sarif_file: results.sarif
diff --git a/.gitignore b/.gitignore
index 1e7332c2c..261c0f768 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@ private
profiles.xml
Thumbs.db
.DS_Store
+/.metadata/
diff --git a/README.md b/README.md
index 0c9edd32e..e5cdc3287 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,12 @@
[](https://github.com/haraldk/TwelveMonkeys/actions/workflows/ci.yml)
+[](https://github.com/haraldk/TwelveMonkeys/actions/workflows/codeql.yml)
+[](https://securityscorecards.dev/viewer/?uri=github.com/haraldk/TwelveMonkeys)
+[](https://www.bestpractices.dev/projects/7900)
+
[](https://search.maven.org/search?q=g:com.twelvemonkeys.imageio)
[](https://oss.sonatype.org/content/repositories/snapshots/com/twelvemonkeys/)
[](https://stackoverflow.com/questions/tagged/twelvemonkeys)
[](https://paypal.me/haraldk76/100)
-[](https://securityscorecards.dev/viewer/?uri=github.com/haraldk/TwelveMonkeys)

diff --git a/common/common-image/pom.xml b/common/common-image/pom.xml
index c557c6c87..7d238fa86 100644
--- a/common/common-image/pom.xml
+++ b/common/common-image/pom.xml
@@ -36,4 +36,13 @@
provided
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
diff --git a/common/common-io/pom.xml b/common/common-io/pom.xml
index 96bd8f3c9..9fb82eca8 100644
--- a/common/common-io/pom.xml
+++ b/common/common-io/pom.xml
@@ -31,4 +31,12 @@
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/CompoundReader.java b/common/common-io/src/main/java/com/twelvemonkeys/io/CompoundReader.java
index 472791145..93b406425 100755
--- a/common/common-io/src/main/java/com/twelvemonkeys/io/CompoundReader.java
+++ b/common/common-io/src/main/java/com/twelvemonkeys/io/CompoundReader.java
@@ -56,8 +56,8 @@ public class CompoundReader extends Reader {
private int currentReader;
private int markedReader;
- private int mark;
- private int mNext;
+ private long mark;
+ private long next;
/**
* Create a new compound reader.
@@ -76,7 +76,7 @@ public CompoundReader(final Iterator pReaders) {
finalLock = pReaders; // NOTE: It's ok to sync on pReaders, as the
// reference can't change, only it's elements
- readers = new ArrayList();
+ readers = new ArrayList<>();
boolean markSupported = true;
while (pReaders.hasNext()) {
@@ -101,7 +101,7 @@ protected final Reader nextReader() {
}
// NOTE: Reset mNext for every reader, and record marked reader in mark/reset methods!
- mNext = 0;
+ next = 0;
return current;
}
@@ -135,7 +135,7 @@ public void mark(int pReadLimit) throws IOException {
synchronized (finalLock) {
ensureOpen();
- mark = mNext;
+ mark = next;
markedReader = currentReader;
current.mark(pReadLimit);
@@ -158,7 +158,7 @@ public void reset() throws IOException {
}
current.reset();
- mNext = mark;
+ next = mark;
}
}
@@ -177,13 +177,13 @@ public int read() throws IOException {
return read(); // In case of 0-length readers
}
- mNext++;
+ next++;
return read;
}
}
- public int read(char pBuffer[], int pOffset, int pLength) throws IOException {
+ public int read(char[] pBuffer, int pOffset, int pLength) throws IOException {
synchronized (finalLock) {
int read = current.read(pBuffer, pOffset, pLength);
@@ -192,7 +192,7 @@ public int read(char pBuffer[], int pOffset, int pLength) throws IOException {
return read(pBuffer, pOffset, pLength); // In case of 0-length readers
}
- mNext += read;
+ next += read;
return read;
}
@@ -213,7 +213,7 @@ public long skip(long pChars) throws IOException {
return skip(pChars); // In case of 0-length readers
}
- mNext += skipped;
+ next += skipped;
return skipped;
}
diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/StringArrayReader.java b/common/common-io/src/main/java/com/twelvemonkeys/io/StringArrayReader.java
index 45ec3f9b4..7523f872a 100755
--- a/common/common-io/src/main/java/com/twelvemonkeys/io/StringArrayReader.java
+++ b/common/common-io/src/main/java/com/twelvemonkeys/io/StringArrayReader.java
@@ -50,8 +50,8 @@ public class StringArrayReader extends StringReader {
protected final Object finalLock;
private int currentSting;
private int markedString;
- private int mark;
- private int next;
+ private long mark;
+ private long next;
/**
* Create a new string array reader.
@@ -151,7 +151,7 @@ public int read() throws IOException {
}
}
- public int read(char pBuffer[], int pOffset, int pLength) throws IOException {
+ public int read(char[] pBuffer, int pOffset, int pLength) throws IOException {
synchronized (finalLock) {
int read = current.read(pBuffer, pOffset, pLength);
diff --git a/common/common-lang/pom.xml b/common/common-lang/pom.xml
index 327cc9110..fce3b8aca 100644
--- a/common/common-lang/pom.xml
+++ b/common/common-lang/pom.xml
@@ -17,4 +17,12 @@
com.twelvemonkeys.common.lang
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
diff --git a/contrib/pom.xml b/contrib/pom.xml
index b3235671f..aa32768f7 100644
--- a/contrib/pom.xml
+++ b/contrib/pom.xml
@@ -69,4 +69,13 @@
test
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
diff --git a/imageio/imageio-batik/pom.xml b/imageio/imageio-batik/pom.xml
index 1a506655a..783eb936d 100644
--- a/imageio/imageio-batik/pom.xml
+++ b/imageio/imageio-batik/pom.xml
@@ -33,6 +33,18 @@
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi
+
+
+
+
@@ -51,7 +63,7 @@
commons-io
commons-io
- 2.13.0
+ 2.14.0
provided
diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java
index 3af95813d..3bbbb97bd 100755
--- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java
+++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java
@@ -33,6 +33,7 @@
import com.twelvemonkeys.image.ImageUtil;
import com.twelvemonkeys.imageio.ImageReaderBase;
import com.twelvemonkeys.imageio.util.IIOUtil;
+import com.twelvemonkeys.imageio.util.ImageTypeSpecifiers;
import com.twelvemonkeys.lang.StringUtil;
import org.apache.batik.anim.dom.SVGDOMImplementation;
@@ -249,7 +250,7 @@ public int getHeight(int imageIndex) throws IOException {
}
public Iterator getImageTypes(int imageIndex) {
- return Collections.singleton(ImageTypeSpecifier.createFromRenderedImage(rasterizer.createImage(1, 1))).iterator();
+ return Collections.singleton(ImageTypeSpecifiers.createFromRenderedImage(rasterizer.createImage(1, 1))).iterator();
}
/**
diff --git a/imageio/imageio-bmp/pom.xml b/imageio/imageio-bmp/pom.xml
index 4aab91e8e..d7fcd16e6 100644
--- a/imageio/imageio-bmp/pom.xml
+++ b/imageio/imageio-bmp/pom.xml
@@ -26,4 +26,22 @@
test
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi;
+ osgi.serviceloader=javax.imageio.spi.ImageWriterSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-clippath/pom.xml b/imageio/imageio-clippath/pom.xml
index 2151bb28b..ebd99252c 100755
--- a/imageio/imageio-clippath/pom.xml
+++ b/imageio/imageio-clippath/pom.xml
@@ -32,4 +32,13 @@
imageio-metadata
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
diff --git a/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/Paths.java b/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/Paths.java
index ba4a3adf3..849459d58 100755
--- a/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/Paths.java
+++ b/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/Paths.java
@@ -42,6 +42,7 @@
import com.twelvemonkeys.imageio.metadata.tiff.TIFFReader;
import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStream;
import com.twelvemonkeys.imageio.stream.SubImageInputStream;
+import com.twelvemonkeys.imageio.util.ImageTypeSpecifiers;
import javax.imageio.*;
import javax.imageio.metadata.IIOMetadata;
@@ -307,7 +308,7 @@ public static boolean writeClipped(final RenderedImage image, Shape clipPath, fi
throw new IllegalArgumentException("output == null!");
}
- ImageTypeSpecifier type = ImageTypeSpecifier.createFromRenderedImage(image);
+ ImageTypeSpecifier type = ImageTypeSpecifiers.createFromRenderedImage(image);
Iterator writers = ImageIO.getImageWriters(type, formatName);
if (writers.hasNext()) {
diff --git a/imageio/imageio-core/pom.xml b/imageio/imageio-core/pom.xml
index 4249e7768..15f7ada58 100644
--- a/imageio/imageio-core/pom.xml
+++ b/imageio/imageio-core/pom.xml
@@ -28,4 +28,20 @@
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageInputStreamSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java
index fce1da683..1c8d1c66a 100644
--- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java
+++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java
@@ -188,7 +188,7 @@ static void validateColorSpace(final ICC_ColorSpace cs) {
// Will throw IllegalArgumentException or CMMException if the profile is bad
cs.fromRGB(new float[] {0.999f, 0.5f, 0.001f});
- // This breaks *some times* after validation of bad profiles,
+ // This breaks *sometimes* after validation of bad profiles,
// we'll let it blow up early in this case
cs.getProfile().getData();
}
diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/StandardImageMetadataSupportTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/StandardImageMetadataSupportTest.java
index efb41a9fe..9931962e9 100644
--- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/StandardImageMetadataSupportTest.java
+++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/StandardImageMetadataSupportTest.java
@@ -17,6 +17,7 @@
import java.util.Calendar;
import java.util.Collection;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -170,7 +171,7 @@ public void withTextValuesSingle() {
@Test
public void withTextValuesMap() {
- Map entries = new HashMap<>();
+ Map entries = new LinkedHashMap<>();
entries.put("foo", "bar");
entries.put("bar", "xyzzy");
diff --git a/imageio/imageio-hdr/pom.xml b/imageio/imageio-hdr/pom.xml
index a0d828b46..9619cd41e 100644
--- a/imageio/imageio-hdr/pom.xml
+++ b/imageio/imageio-hdr/pom.xml
@@ -32,4 +32,21 @@
imageio-metadata
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java
index c2f407fe0..fecfc8d44 100755
--- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java
+++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java
@@ -5,7 +5,7 @@
import javax.imageio.ImageTypeSpecifier;
import javax.imageio.metadata.IIOMetadataNode;
-public class HDRMetadata extends StandardImageMetadataSupport {
+final class HDRMetadata extends StandardImageMetadataSupport {
public HDRMetadata(ImageTypeSpecifier type, HDRHeader header) {
super(builder(type)
.withCompressionTypeName("RLE")
diff --git a/imageio/imageio-icns/pom.xml b/imageio/imageio-icns/pom.xml
index 51aabeb3d..df25c0660 100644
--- a/imageio/imageio-icns/pom.xml
+++ b/imageio/imageio-icns/pom.xml
@@ -26,4 +26,22 @@
test
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi;
+ osgi.serviceloader=javax.imageio.spi.ImageWriterSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-iff/pom.xml b/imageio/imageio-iff/pom.xml
index 334195a2b..933dfecda 100644
--- a/imageio/imageio-iff/pom.xml
+++ b/imageio/imageio-iff/pom.xml
@@ -29,4 +29,22 @@
test
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi;
+ osgi.serviceloader=javax.imageio.spi.ImageWriterSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-jpeg/pom.xml b/imageio/imageio-jpeg/pom.xml
index b552a71ec..66e65dfb9 100644
--- a/imageio/imageio-jpeg/pom.xml
+++ b/imageio/imageio-jpeg/pom.xml
@@ -32,4 +32,22 @@
imageio-metadata
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi;
+ osgi.serviceloader=javax.imageio.spi.ImageWriterSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriter.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriter.java
index 9d573a417..4c956f368 100644
--- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriter.java
+++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriter.java
@@ -32,6 +32,7 @@
import com.twelvemonkeys.imageio.ImageWriterBase;
import com.twelvemonkeys.imageio.metadata.jpeg.JPEG;
+import com.twelvemonkeys.imageio.util.ImageTypeSpecifiers;
import com.twelvemonkeys.imageio.util.ProgressListenerBase;
import javax.imageio.IIOImage;
@@ -161,7 +162,7 @@ public void write(final IIOMetadata streamMetadata, final IIOImage image, final
else {
// If the image metadata is our substitute, convert it back to native com.sun format
if (image.getMetadata() instanceof JPEGImage10Metadata) {
- ImageTypeSpecifier type = image.hasRaster() ? null : ImageTypeSpecifier.createFromRenderedImage(image.getRenderedImage());
+ ImageTypeSpecifier type = image.hasRaster() ? null : ImageTypeSpecifiers.createFromRenderedImage(image.getRenderedImage());
IIOMetadata nativeMetadata = delegate.getDefaultImageMetadata(type, param);
JPEGImage10Metadata metadata = (JPEGImage10Metadata) image.getMetadata();
@@ -185,7 +186,7 @@ private void writeCMYK(final IIOMetadata streamMetadata, final IIOImage image, f
boolean overrideDestination = param != null && param.getDestinationType() != null;
ImageTypeSpecifier destinationType = overrideDestination
? param.getDestinationType()
- : ImageTypeSpecifier.createFromRenderedImage(renderedImage);
+ : ImageTypeSpecifiers.createFromRenderedImage(renderedImage);
ColorSpace cmykCS = destinationType.getColorModel().getColorSpace();
diff --git a/imageio/imageio-metadata/pom.xml b/imageio/imageio-metadata/pom.xml
index 8efa3c0ac..44b2854d5 100644
--- a/imageio/imageio-metadata/pom.xml
+++ b/imageio/imageio-metadata/pom.xml
@@ -28,4 +28,13 @@
test
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
diff --git a/imageio/imageio-pcx/pom.xml b/imageio/imageio-pcx/pom.xml
index 1ef9c6058..653901b5b 100755
--- a/imageio/imageio-pcx/pom.xml
+++ b/imageio/imageio-pcx/pom.xml
@@ -28,4 +28,21 @@
test
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-pdf/pom.xml b/imageio/imageio-pdf/pom.xml
index a93995223..f970dcf9f 100644
--- a/imageio/imageio-pdf/pom.xml
+++ b/imageio/imageio-pdf/pom.xml
@@ -28,4 +28,13 @@
test
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
diff --git a/imageio/imageio-pict/pom.xml b/imageio/imageio-pict/pom.xml
index 2625b2234..8579b6bf8 100644
--- a/imageio/imageio-pict/pom.xml
+++ b/imageio/imageio-pict/pom.xml
@@ -27,4 +27,21 @@
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi;
+ osgi.serviceloader=javax.imageio.spi.ImageWriterSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-pnm/pom.xml b/imageio/imageio-pnm/pom.xml
index b1b70fdc7..ef58304e7 100755
--- a/imageio/imageio-pnm/pom.xml
+++ b/imageio/imageio-pnm/pom.xml
@@ -28,4 +28,22 @@
test
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi;
+ osgi.serviceloader=javax.imageio.spi.ImageWriterSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-psd/pom.xml b/imageio/imageio-psd/pom.xml
index 0d13d24ae..198c9c7c8 100644
--- a/imageio/imageio-psd/pom.xml
+++ b/imageio/imageio-psd/pom.xml
@@ -31,4 +31,22 @@
imageio-metadata
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi;
+ osgi.serviceloader=javax.imageio.spi.ImageWriterSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-sgi/pom.xml b/imageio/imageio-sgi/pom.xml
index 8d196bb90..f88f3377d 100755
--- a/imageio/imageio-sgi/pom.xml
+++ b/imageio/imageio-sgi/pom.xml
@@ -28,4 +28,21 @@
test
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-tga/pom.xml b/imageio/imageio-tga/pom.xml
index b6306ee92..2bba08f48 100755
--- a/imageio/imageio-tga/pom.xml
+++ b/imageio/imageio-tga/pom.xml
@@ -28,4 +28,22 @@
test
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi;
+ osgi.serviceloader=javax.imageio.spi.ImageWriterSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-thumbsdb/pom.xml b/imageio/imageio-thumbsdb/pom.xml
index ae449b4e2..c7de006f4 100644
--- a/imageio/imageio-thumbsdb/pom.xml
+++ b/imageio/imageio-thumbsdb/pom.xml
@@ -28,4 +28,21 @@
test
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-tiff/pom.xml b/imageio/imageio-tiff/pom.xml
index d1ae06cbc..b36ad05e6 100644
--- a/imageio/imageio-tiff/pom.xml
+++ b/imageio/imageio-tiff/pom.xml
@@ -37,4 +37,22 @@
test
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi;
+ osgi.serviceloader=javax.imageio.spi.ImageWriterSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-webp/pom.xml b/imageio/imageio-webp/pom.xml
index 2ebe37356..3f9ecc2fe 100644
--- a/imageio/imageio-webp/pom.xml
+++ b/imageio/imageio-webp/pom.xml
@@ -31,4 +31,21 @@
test-jar
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi
+
+
+
+
+
+
diff --git a/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/lossless/PredictorTransform.java b/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/lossless/PredictorTransform.java
index 042042a2d..92e282c7e 100644
--- a/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/lossless/PredictorTransform.java
+++ b/imageio/imageio-webp/src/main/java/com/twelvemonkeys/imageio/plugins/webp/lossless/PredictorTransform.java
@@ -60,7 +60,7 @@ public void applyInverse(WritableRaster raster) {
// (0,0) Black (0x000000ff) predict
raster.getDataElements(0, 0, rgba);
- rgba[3] += 0xff;
+ rgba[3] += (byte) 0xff;
raster.setDataElements(0, 0, rgba);
byte[] predictor = new byte[4];
@@ -100,7 +100,7 @@ public void applyInverse(WritableRaster raster) {
switch (transformType) {
case PredictorMode.BLACK:
- rgba[3] += 0xff;
+ rgba[3] += (byte) 0xff;
break;
case PredictorMode.L:
raster.getDataElements(lX, y, predictor);
diff --git a/imageio/imageio-xwd/pom.xml b/imageio/imageio-xwd/pom.xml
index d766494f0..d23ea775f 100755
--- a/imageio/imageio-xwd/pom.xml
+++ b/imageio/imageio-xwd/pom.xml
@@ -28,4 +28,21 @@
test
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ osgi.serviceloader;
+ osgi.serviceloader=javax.imageio.spi.ImageReaderSpi
+
+
+
+
+
+
diff --git a/imageio/pom.xml b/imageio/pom.xml
index 964bf6183..aa9519c95 100644
--- a/imageio/pom.xml
+++ b/imageio/pom.xml
@@ -170,4 +170,20 @@
+
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)"
+
+
+
+
+
+
diff --git a/pom.xml b/pom.xml
index 53c4c3989..059be3285 100644
--- a/pom.xml
+++ b/pom.xml
@@ -218,6 +218,42 @@
+
+ org.apache.felix
+ maven-bundle-plugin
+ 5.1.9
+
+
+ jar
+ bundle
+
+
+
+ <_dsannotations>*
+
+ <_dsannotations-options>inherit
+
+ <_metatypeannotations>*
+
+
+
+
+ manifest
+
+ manifest
+
+
+ true
+
+
+
+ bundle
+
+ bundle
+
+
+
+
org.apache.maven.plugins
maven-compiler-plugin
diff --git a/servlet/pom.xml b/servlet/pom.xml
index 973f710ae..3a39e2676 100644
--- a/servlet/pom.xml
+++ b/servlet/pom.xml
@@ -63,6 +63,11 @@
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
org.apache.maven.plugins
maven-shade-plugin