Prepare for the next release candidate
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 1b6577a..33e3975 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -61,11 +61,11 @@
+ Create a _topic branch_ for your isolated work.
* Usually you should base your branch from the `master` branch.
- * A good topic branch name can be the JIRA bug ID plus a keyword, for example, `CODEC-123-InputStream`.
+ * A good topic branch name can be the JIRA bug ID plus a keyword, e.g. `CODEC-123-InputStream`.
* If you have submitted multiple JIRA issues, try to maintain separate branches and pull requests.
+ Make commits of logical units.
* Make sure your commit messages are meaningful and in the proper format. Your commit message should contain the key of the JIRA issue.
- * For example, `[CODEC-123] Close input stream earlier`
+ * For example, `[CODEC-123] Close input stream sooner`
+ Respect the original code style:
+ Only use spaces for indentation; you can check for unnecessary whitespace with `git diff` before committing.
+ Create minimal diffs - disable _On Save_ actions like _Reformat Source Code_ or _Organize Imports_. If you feel the source code should be reformatted create a separate PR for this change first.
diff --git a/README.md b/README.md
index cc6e4cc..b947428 100644
--- a/README.md
+++ b/README.md
@@ -45,7 +45,7 @@
[](https://github.com/apache/commons-codec/actions/workflows/maven.yml)
[](https://search.maven.org/artifact/commons-codec/commons-codec)
-[](https://javadoc.io/doc/commons-codec/commons-codec/1.18.0)
+[](https://javadoc.io/doc/commons-codec/commons-codec/1.19.0)
[](https://github.com/apache/commons-codec/actions/workflows/codeql-analysis.yml)
[](https://api.securityscorecards.dev/projects/github.com/apache/commons-codec)
@@ -71,7 +71,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.18.0</version>
+ <version>1.19.0</version>
</dependency>
```
@@ -93,7 +93,7 @@
+ Create minimal diffs - disable on save actions like reformat source code or organize imports. If you feel the source code should be reformatted create a separate PR for this change.
+ Provide JUnit tests for your changes and make sure your changes don't break any existing tests by running `mvn`.
+ Before you pushing a PR, run `mvn` (by itself), this runs the default goal, which contains all build checks.
-+ To see the code coverage report, regardless of coverage failures, run `mvn clean site -Dcommons.jacoco.haltOnFailure=false`
++ To see the code coverage report, regardless of coverage failures, run `mvn clean site -Dcommons.jacoco.haltOnFailure=false -Pjacoco`
If you plan to contribute on a regular basis, please consider filing a [contributor license agreement](https://www.apache.org/licenses/#clas).
You can learn more about contributing via GitHub in our [contribution guidelines](CONTRIBUTING.md).
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 8f74dff..8b1aa65 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -1,3 +1,66 @@
+Apache Commons Codec 1.19.0 Release Notes
+-----------------------------------------
+
+The Apache Commons Codec team is pleased to announce the release of Apache Commons Codec 1.19.0.
+
+The Apache Commons Codec component contains encoders and decoders for
+formats such as Base16, Base32, Base64, digest, and Hexadecimal. In addition to these
+widely used encoders and decoders, the codec package also maintains a
+collection of phonetic encoding utilities.
+
+This is a feature and maintenance release. Java 8 or later is required.
+
+
+New features
+------------
+
+* Add HmacUtils.hmac(Path). Thanks to Gary Gregory.
+* Add HmacUtils.hmacHex(Path). Thanks to Gary Gregory.
+* Add PMD check to the default Maven goal. Thanks to Gary Gregory.
+* Add SpotBugs check to the default Maven goal. Thanks to Gary Gregory.
+
+Fixed Bugs
+----------
+
+* Remove -nouses directive from maven-bundle-plugin. OSGi package imports now state 'uses' definitions for package imports, this doesn't affect JPMS (from org.apache.commons:commons-parent:80). Thanks to Gary Gregory.
+* Refactor DigestUtils.updateDigest(MessageDigest, File) to use NIO. Thanks to Gary Gregory.
+* CODEC-328: Clarify Javadoc for org.apache.commons.codec.digest.UnixCrypt.crypt(byte[],String). Thanks to Gary Gregory.
+* Precompile regular expressions in DaitchMokotoffSoundex.Rule. Thanks to Gary Gregory.
+* Precompile regular expressions in DaitchMokotoffSoundex.parseRules(Scanner, String, Map, Map). Thanks to Gary Gregory.
+* Precompile regular expressions in Lang.loadFromResource(String, Languages). Thanks to Gary Gregory.
+* Precompile regular expressions in PhoneticEngine.encode(String, LanguageSet). Thanks to Gary Gregory.
+* Precompile regular expressions in org.apache.commons.codec.language.bm.Rule.parse*(*). Thanks to Gary Gregory.
+* Remove redundant checks for whitespace in DaitchMokotoffSoundex.soundex(String, boolean). Thanks to Gary Gregory.
+* Javadoc typo in Base16.java #380. Thanks to Sebastian Baunsgaard.
+* Deprecate unused constant org.apache.commons.codec.language.bm.Rule.ALL. Thanks to Gary Gregory.
+* CODEC-331: org.apache.commons.codec.language.bm.Rule.parsePhonemeExpr(String) adds duplicate empty phoneme when input ends with |. Thanks to IlikeCode, Gary Gregory.
+* CODEC-331: org.apache.commons.codec.language.DaitchMokotoffSoundex.cleanup(String) does not remove special characters like punctuation. Thanks to IlikeCode, Gary Gregory.
+* Fix PMD multiple UnnecessaryFullyQualifiedName in org.apache.commons.codec.binary.StringUtils. Thanks to Gary Gregory.
+* Fix PMD UnusedFormalParameter in private constructor in org.apache.commons.codec.binary.Base16. Thanks to Gary Gregory.
+* Fix PMD multiple UnnecessaryFullyQualifiedName in org.apache.commons.codec.digest.Blake3. Thanks to Gary Gregory.
+* Fix PMD UnnecessaryFullyQualifiedName in org.apache.commons.codec.digest.Md5Crypt. Thanks to Gary Gregory.
+* Fix PMD EmptyControlStatement in org.apache.commons.codec.language.Metaphone. Thanks to Gary Gregory.
+* Fix SpotBugs [ERROR] Medium: org.apache.commons.codec.binary.BaseNCodec$AbstractBuilder.setEncodeTable(byte[]) may expose internal representation by storing an externally mutable object into BaseNCodec$AbstractBuilder.encodeTable [org.apache.commons.codec.binary.BaseNCodec$AbstractBuilder] At BaseNCodec.java:[line 131] EI_EXPOSE_REP2. Thanks to Gary Gregory.
+* The method org.apache.commons.codec.binary.BaseNCodec.AbstractBuilder.setLineSeparator(byte...) now makes a defensive copy. Thanks to Gary Gregory.
+* Avoid unnecessary String conversion in org.apache.commons.codec.language.bm.PhoneticEngine.applyFinalRules(PhonemeBuilder, Map). Thanks to Gary Gregory.
+* Fix SpotBugs [ERROR] High: Potentially dangerous use of non-short-circuit logic in org.apache.commons.codec.language.DaitchMokotoffSoundex.cleanup(String) [org.apache.commons.codec.language.DaitchMokotoffSoundex] At DaitchMokotoffSoundex.java:[line 350] NS_DANGEROUS_NON_SHORT_CIRCUIT. Thanks to Gary Gregory.
+
+Changes
+-------
+
+* Bump org.apache.commons:commons-parent from 79 to 85 #375. Thanks to Gary Gregory, Dependabot.
+* [test] Bump commons-io:commons-io from 2.18.0 to 2.20.0. Thanks to Gary Gregory.
+* [test] Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0 #386. Thanks to Gary Gregory, Dependabot.
+
+
+For complete information on Apache Commons Codec, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons Codec website:
+
+https://commons.apache.org/proper/commons-codec/
+
+Download page: https://commons.apache.org/proper/commons-codec/download_codec.cgi
+
+---------------------------------------------------------------------------------
Apache Commons Codec 1.18.0 Release Notes
-----------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index b83006c..ab5f9a6 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -43,7 +43,7 @@
<author>Apache Commons Developers</author>
</properties>
<body>
- <release version="1.19.0" date="YYYY-MM-DD" description="This is a feature and maintenance release. Java 8 or later is required.">
+ <release version="1.19.0" date="2025-07-19" description="This is a feature and maintenance release. Java 8 or later is required.">
<!-- FIX -->
<action type="fix" dev="ggregory" due-to="Gary Gregory">Remove -nouses directive from maven-bundle-plugin. OSGi package imports now state 'uses' definitions for package imports, this doesn't affect JPMS (from org.apache.commons:commons-parent:80).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Refactor DigestUtils.updateDigest(MessageDigest, File) to use NIO.</action>
diff --git a/src/site/xdoc/download_codec.xml b/src/site/xdoc/download_codec.xml
index 35b8430..c48c855 100644
--- a/src/site/xdoc/download_codec.xml
+++ b/src/site/xdoc/download_codec.xml
@@ -115,32 +115,32 @@
</p>
</subsection>
</section>
- <section name="Apache Commons Codec 1.18.0 ">
+ <section name="Apache Commons Codec 1.19.0 ">
<subsection name="Binaries">
<table>
<tr>
- <td><a href="[preferred]/commons/codec/binaries/commons-codec-1.18.0-bin.tar.gz">commons-codec-1.18.0-bin.tar.gz</a></td>
- <td><a href="https://downloads.apache.org/commons/codec/binaries/commons-codec-1.18.0-bin.tar.gz.sha512">sha512</a></td>
- <td><a href="https://downloads.apache.org/commons/codec/binaries/commons-codec-1.18.0-bin.tar.gz.asc">pgp</a></td>
+ <td><a href="[preferred]/commons/codec/binaries/commons-codec-1.19.0-bin.tar.gz">commons-codec-1.19.0-bin.tar.gz</a></td>
+ <td><a href="https://downloads.apache.org/commons/codec/binaries/commons-codec-1.19.0-bin.tar.gz.sha512">sha512</a></td>
+ <td><a href="https://downloads.apache.org/commons/codec/binaries/commons-codec-1.19.0-bin.tar.gz.asc">pgp</a></td>
</tr>
<tr>
- <td><a href="[preferred]/commons/codec/binaries/commons-codec-1.18.0-bin.zip">commons-codec-1.18.0-bin.zip</a></td>
- <td><a href="https://downloads.apache.org/commons/codec/binaries/commons-codec-1.18.0-bin.zip.sha512">sha512</a></td>
- <td><a href="https://downloads.apache.org/commons/codec/binaries/commons-codec-1.18.0-bin.zip.asc">pgp</a></td>
+ <td><a href="[preferred]/commons/codec/binaries/commons-codec-1.19.0-bin.zip">commons-codec-1.19.0-bin.zip</a></td>
+ <td><a href="https://downloads.apache.org/commons/codec/binaries/commons-codec-1.19.0-bin.zip.sha512">sha512</a></td>
+ <td><a href="https://downloads.apache.org/commons/codec/binaries/commons-codec-1.19.0-bin.zip.asc">pgp</a></td>
</tr>
</table>
</subsection>
<subsection name="Source">
<table>
<tr>
- <td><a href="[preferred]/commons/codec/source/commons-codec-1.18.0-src.tar.gz">commons-codec-1.18.0-src.tar.gz</a></td>
- <td><a href="https://downloads.apache.org/commons/codec/source/commons-codec-1.18.0-src.tar.gz.sha512">sha512</a></td>
- <td><a href="https://downloads.apache.org/commons/codec/source/commons-codec-1.18.0-src.tar.gz.asc">pgp</a></td>
+ <td><a href="[preferred]/commons/codec/source/commons-codec-1.19.0-src.tar.gz">commons-codec-1.19.0-src.tar.gz</a></td>
+ <td><a href="https://downloads.apache.org/commons/codec/source/commons-codec-1.19.0-src.tar.gz.sha512">sha512</a></td>
+ <td><a href="https://downloads.apache.org/commons/codec/source/commons-codec-1.19.0-src.tar.gz.asc">pgp</a></td>
</tr>
<tr>
- <td><a href="[preferred]/commons/codec/source/commons-codec-1.18.0-src.zip">commons-codec-1.18.0-src.zip</a></td>
- <td><a href="https://downloads.apache.org/commons/codec/source/commons-codec-1.18.0-src.zip.sha512">sha512</a></td>
- <td><a href="https://downloads.apache.org/commons/codec/source/commons-codec-1.18.0-src.zip.asc">pgp</a></td>
+ <td><a href="[preferred]/commons/codec/source/commons-codec-1.19.0-src.zip">commons-codec-1.19.0-src.zip</a></td>
+ <td><a href="https://downloads.apache.org/commons/codec/source/commons-codec-1.19.0-src.zip.sha512">sha512</a></td>
+ <td><a href="https://downloads.apache.org/commons/codec/source/commons-codec-1.19.0-src.zip.asc">pgp</a></td>
</tr>
</table>
</subsection>