| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <!-- |
| This file is also used by the maven-changes-plugin to generate the release notes. |
| Useful ways of finding items to add to this file are: |
| |
| 1. Add items when you fix a bug or add a feature (this makes the |
| release process easy :-). |
| |
| 2. Do a JIRA search for tickets closed since the previous release. |
| |
| 3. Use the report generated by the maven-changelog-plugin to see all |
| SVN commits. TBA how to use this with SVN. |
| |
| To generate the release notes from this file: |
| |
| mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=m.n] |
| |
| The <action> type attribute can be add,update,fix,remove. |
| --> |
| |
| <document xmlns="http://maven.apache.org/changes/1.0.0" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd"> |
| <properties> |
| <title>Apache Commons Codec Release Notes</title> |
| <author>Apache Commons Developers</author> |
| </properties> |
| <body> |
| <release version="1.17.2" date="YYYY-MM-DD" description="This is a feature and maintenance release. Java 8 or later is required."> |
| <!-- FIX --> |
| <action type="fix" dev="ggregory" due-to="Gary Gregory">Rewrite DaitchMokotoffSoundex.soundex(String) using String.join().</action> |
| <!-- ADD --> |
| <!-- UPDATE --> |
| <action type="update" dev="ggregory" due-to="Dependabot">Bump org.apache.commons:commons-lang3 from 3.14.0 to 3.17.0 #296, #305, #313.</action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 71 to 77 #310, #312, #319, #323, #326.</action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump commons-io:commons-io from 2.16.1 to 2.17.0 #318.</action> |
| </release> |
| <release version="1.17.1" date="2024-07-12" description="Feature and fix release. Requires a minimum of Java 8."> |
| <!-- FIX --> |
| <action type="fix" dev="ggregory" due-to="Gary Gregory">Md5Crypt now throws IllegalArgumentException on an invalid prefix.</action> |
| <!-- ADD --> |
| <!-- UPDATE --> |
| <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 69 to 71 #286.</action> |
| <action dev="ggregory" type="update" due-to="Dependabot">Bump org.codehaus.mojo:animal-sniffer-maven-plugin from 1.23 to 1.24 #293.</action> |
| <action dev="ggregory" type="update" due-to="Dependabot">Bump org.codehaus.mojo:taglist-maven-plugin from 3.0.0 to 3.1.0 #292.</action> |
| </release> |
| <release version="1.17.0" date="2024-04-20" description="Feature and fix release. Requires a minimum of Java 8."> |
| <!-- FIX --> |
| <action type="fix" issue="CODEC-320" dev="ggregory" due-to="Martin Frydl, Gary Gregory">Wrong output of DoubleMetaphone in 1.16.1.</action> |
| <action type="fix" dev="ggregory" due-to="Gary Gregory">Optimize memory allocation in PhoneticEngine.</action> |
| <action type="fix" dev="ggregory" due-to="Gary Gregory">BCodec and QCodec encode() methods throw UnsupportedCharsetException instead of EncoderException.</action> |
| <action type="fix" dev="ggregory" due-to="Gary Gregory">Set Javadoc link to latest Java API LTS version.</action> |
| <action type="fix" dev="ggregory" due-to="Gary Gregory">Base32 constructor fails-fast with a NullPointerException if the custom alphabet array is null.</action> |
| <action type="fix" dev="ggregory" due-to="Gary Gregory">Base32 constructor makes a defensive copy of the line separator array.</action> |
| <action type="fix" dev="ggregory" due-to="Gary Gregory">Base64 constructor makes a defensive copy of the line separator array.</action> |
| <action type="fix" dev="ggregory" due-to="Gary Gregory">Base64 constructor makes a defensive copy of a custom alphabet array.</action> |
| <!-- ADD --> |
| <action type="add" dev="ggregory" due-to="Gary Gregory">Add override org.apache.commons.codec.language.bm.Rule.PhonemeExpr.size().</action> |
| <action type="add" dev="ggregory" due-to="Chris Kocel, Gary Gregory">Add support for Base64 custom alphabets #266.</action> |
| <action type="add" dev="ggregory" due-to="Gary Gregory">Add Base64.Builder (allows custom alphabets).</action> |
| <action type="add" dev="ggregory" due-to="Gary Gregory">Add Base32.Builder (allows custom alphabets).</action> |
| <action type="add" dev="ggregory" due-to="Gary Gregory">Add Base64 support for a custom padding byte (like Base32).</action> |
| <!-- UPDATE --> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-parent from 66 to 69 #250, #261.</action> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">Bump commons-io:commons-io from 2.15.1 to 2.16.1 #258, #265.</action> |
| </release> |
| <release version="1.16.1" date="2024-02-04" description="Feature and fix release. Requires a minimum of Java 8."> |
| <!-- ADD --> |
| <action type="add" dev="ggregory" due-to="Gary Gregory">Add Maven property project.build.outputTimestamp for build reproducibility.</action> |
| <!-- FIX --> |
| <action issue="CODEC-295" dev="ggregory" type="fix" due-to="Gary Gregory">Test clean ups.</action> |
| <action dev="ggregory" type="fix" due-to="step-security-bot, Gary Gregory">[StepSecurity] ci: Harden GitHub Actions #187.</action> |
| <action issue="CODEC-295" dev="ggregory" type="fix" due-to="Evan Saulpaugh">Correct error in Base64 Javadoc #188.</action> |
| <action issue="CODEC-295" dev="ggregory" type="fix" due-to="Olivier Jaquemet, Gary Gregory">Add minimum Java version in changes.xml #186.</action> |
| <action issue="CODEC-310" dev="ggregory" type="fix" due-to="Yakov Shafranovich">Documentation update for the org.apache.commons.codec.digest.* package #208.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Precompile regular expression in UnixCrypt.crypt(byte[], String).</action> |
| <action issue="CODEC-315" dev="ggregory" type="fix" due-to="Arthur Chan, Gary Gregory">Fix possible IndexOutOfBoundException in PhoneticEngine.encode method #223.</action> |
| <action issue="CODEC-313" dev="ggregory" type="fix" due-to="Arthur Chan, Gary Gregory">Fix possible ArrayIndexOutOfBoundsException in QuotedPrintableCodec.encodeQuotedPrintable() method #221.</action> |
| <action issue="CODEC-312" dev="ggregory" type="fix" due-to="Arthur Chan, Gary Gregory">Fix possible StringIndexOutOfBoundException in MatchRatingApproachEncoder.encode() method #220.</action> |
| <action issue="CODEC-311" dev="ggregory" type="fix" due-to="Arthur Chan, Gary Gregory">Fix possible ArrayIndexOutOfBoundException in RefinedSoundex.getMappingCode() #219.</action> |
| <action issue="CODEC-314" dev="ggregory" type="fix" due-to="Arthur Chan, Gary Gregory">Fix possible IndexOutOfBoundsException in PercentCodec.insertAlwaysEncodeChars() method #222.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate UnixCrypt 0-argument constructor.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate Md5Crypt 0-argument constructor.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate Crypt 0-argument constructor.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate StringUtils 0-argument constructor.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate Resources 0-argument constructor.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate Charsets 0-argument constructor.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate CharEncoding 0-argument constructor.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Add missing version for animal-sniffer-maven-plugin.</action> |
| <!-- UPDATE --> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">Bump commons-parent from 58 to 66.</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump commons-lang3 from 3.12.0 to 3.14.0.</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump commons-io from 2.13.0 to 2.15.1.</action> |
| </release> |
| <release version="1.16.0" date="2023-06-17" description="Feature and fix release. Requires a minimum of Java 8."> |
| <!-- FIX --> |
| <action issue="CODEC-295" dev="ggregory" type="fix" due-to="Arturo Bernal">Minor improvements #67.</action> |
| <action dev="aherbert" type="fix" due-to="James Gan">Remove duplicated words from Javadocs.</action> |
| <action issue="CODEC-301" dev="aherbert" type="fix" due-to="Alexander Pinske, Alex Herbert">Simplify assertion #84.</action> |
| <action issue="CODEC-300" dev="ggregory" type="fix" due-to="Arturo Bernal">Simplify assertion #84.</action> |
| <action issue="CODEC-298" dev="ggregory" type="fix" due-to="Arturo Bernal">Use Standard Charset object #82.</action> |
| <action dev="ggregory" type="fix" due-to="Arturo Bernal">Use String.contains() functions #125.</action> |
| <action dev="ggregory" type="fix" due-to="Arturo Bernal">Avoid use toString() or substring() in favor of a simplified expression #126.</action> |
| <action issue="CODEC-305" dev="aherbert" type="fix" due-to="Florian">Fix byte-skipping in Base16 decoding #135.</action> |
| <action dev="kinow" type="fix" due-to="Marc Wrobel">Fix several typos, improve writing in some javadocs #139.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">BaseNCodecOutputStream.eof() should not throw IOException.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Javadoc improvements and cleanups.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate BaseNCodec.isWhiteSpace(byte) and use Character.isWhitespace(int).</action> |
| <!-- ADD --> |
| <action issue="CODEC-296" dev="mattsicker" type="add" due-to="Matt Sicker">Add support for Blake3 family of hashes.</action> |
| <action dev="ggregory" type="add">Add github/codeql-action.</action> |
| <!-- UPDATE --> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">Bump actions/cache from v2 to v3.0.10 #75, #99, #119, #138, #149, #152.</action> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">Bump actions/setup-java from v1.4.1 to 3.5.1 #60, #62, #121.</action> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">Bump actions/checkout from 2.3.2 to 3.1.0 #65, #98, #114, #153.</action> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">Bump commons-parent from 52 to 58, #147, #165, #170.</action> |
| <action issue="CODEC-285" dev="ggregory" type="update" due-to="Dependabot, John Patrick">Bump junit from 4.13.1 to 5.9.1 #76, #39, #140, #148.</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump Java 7 to 8.</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump japicmp-maven-plugin from 0.14.3 to 0.17.1.</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump jacoco-maven-plugin from 0.8.5 to 0.8.8 (Fixes Java 15 builds).</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump maven-surefire-plugin from 2.22.2 to 3.0.0-M7 #122, #134.</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump maven-javadoc-plugin from 3.2.0 to 3.4.1.</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump animal-sniffer-maven-plugin from 1.19 to 1.22.</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">Bump maven-pmd-plugin from 3.13.0 to 3.19.0, #133, #142, #145.</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump pmd from 6.47.0 to 6.52.0.</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump maven-checkstyle-plugin from 2.17 to 3.2.0 #143.</action> |
| <action dev="kinow, ggregory" type="update" due-to="Dependabot">Bump checkstyle from 8.45.1 to 9.3 #97, #100, #101, #103.</action> |
| <action dev="ggregory" type="update" due-to="Dependabot">Bump taglist-maven-plugin from 2.4 to 3.0.0 #102.</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump jacoco-maven-plugin from 0.8.7 to 0.8.8.</action> |
| </release> |
| |
| <release version="1.15" date="2020-09-01" description="Feature and fix release."> |
| <action issue="CODEC-264" dev="aherbert" due-to="Andy Seaborne" type="fix">MurmurHash3: Ensure hash128 maintains the sign extension bug.</action> |
| <action issue="CODEC-280" dev="aherbert" type="update">Base32/Base64/BCodec: Added strict decoding property to control handling of trailing bits. Default lenient mode discards them without error. Strict mode raise an exception.</action> |
| <action issue="CODEC-289" dev="aherbert" type="update">Base32/Base64 Input/OutputStream: Added strict decoding property to control handling of trailing bits. Default lenient mode discards them without error. Strict mode raise an exception.</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Update tests from JUnit 4.12 to 4.13.</action> |
| <action issue="CODEC-290" dev="aherbert" due-to="Adam Retter" type="add">Base16Codec and Base16Input/OutputStream.</action> |
| <action issue="CODEC-291" dev="aherbert" due-to="Adam Retter" type="add">Hex encode/decode with existing arrays.</action> |
| <action dev="ggregory" type="update" due-to="Dependabot">Update actions/checkout from v1 to v2.3.2 #50, #56.</action> |
| <action dev="ggregory" type="update" due-to="Dependabot">Update actions/setup-java from v1.4.0 to v1.4.1 #57.</action> |
| </release> |
| |
| <release version="1.14" date="2019-12-30" description="Feature and fix release."> |
| <action issue="CODEC-261" dev="aherbert" type="fix">Hex: Allow encoding read-only ByteBuffer.</action> |
| <action issue="CODEC-259" dev="aherbert" type="fix">Hex: Only use an available ByteBuffer backing array if the length equals the remaining byte count.</action> |
| <action issue="CODEC-268" dev="aherbert" type="update">MurmurHash3: Deprecate hash64 methods and hash methods accepting a String that use the default encoding.</action> |
| <action issue="CODEC-265" dev="aherbert" type="fix">BaseNCodec to expand buffer using overflow conscious code.</action> |
| <action issue="CODEC-270" dev="aherbert" type="fix">Base32/64: Fixed decoding check that all the final trailing bits to discard are zero.</action> |
| <action issue="CODEC-264" dev="aherbert" due-to="Claude Warren" type="add">Add MurmurHash3.hash128x64 methods to fix sign extension error during seeding in hash128 methods.</action> |
| <action issue="CODEC-267" dev="aherbert" due-to="Claude Warren" type="add">Add MurmurHash3.hash32x86 methods and IncrementalHash32x86 to fix sign extension error in hash32 methods.</action> |
| <action issue="CODEC-269" dev="aherbert" type="fix">Allow repeat calls to MurmurHash3.IncrementalHash32.end() to generate the same value.</action> |
| <action issue="CODEC-272" dev="ggregory" type="add" due-to="Behrang, Alex Herbert, Gary Gregory">Add RandomAccessFile digest methods #31.</action> |
| <action issue="CODEC-273" dev="ggregory" type="add" due-to="Gary Gregory">Add Path APIs to org.apache.commons.codec.digest.DigestUtils similar to File APIs.</action> |
| <action issue="CODEC-274" dev="ggregory" type="add" due-to="Gary Gregory">Add SHA-512/224 and SHA-512/256 to DigestUtils for Java 9 and up.</action> |
| <action issue="CODEC-275" dev="ggregory" type="add" due-to="Claude Warren">Add missing note in javadoc when sign extension error is present #34.</action> |
| <action issue="CODEC-276" dev="ggregory" type="fix" due-to="Gary Gregory">Reliance on default encoding in MurmurHash2 and MurmurHash3.</action> |
| <action issue="CODEC-277" dev="ggregory" type="update" due-to="Gary Gregory">Don't reload standard Charsets in org.apache.commons.codec.Charsets.</action> |
| <action issue="CODEC-278" dev="ggregory" type="update" due-to="Gary Gregory">Deprecate Charset constants in org.apache.commons.codec.Charsets in favor of java.nio.charset.StandardCharsets.</action> |
| </release> |
| |
| <release version="1.13" date="2019-07-20" description="Feature and fix release."> |
| <action issue="CODEC-255" dev="sebb" due-to="Holger Grote" type="fix">ColognePhonetic handles x incorrectly</action> |
| <action issue="CODEC-254" dev="sebb" due-to="Holger Grote" type="fix">ColognePhonetic does not treat the letter H correctly</action> |
| <action issue="CODEC-134" dev="tmousaw-ptc" type="fix">Reject any decode request for a value that is impossible to encode to for Base32/Base64 rather than blindly decoding.</action> |
| <action issue="CODEC-236" dev="melloware" due-to="Viliam Holub" type="add">MurmurHash2 for 32-bit or 64-bit value.</action> |
| <action issue="CODEC-236" dev="melloware" due-to="Austin Appleby" type="add">MurmurHash3 for 32-bit or 128-bit value.</action> |
| <action issue="CODEC-236" dev="ggregory" due-to=" Tomas Shestakov, Gary Gregory" type="update">Broken direct java.nio.ByteBuffer support in org.apache.commons.codec.binary.Hex.</action> |
| </release> |
| |
| <release version="1.12" date="2019-02-04" description="Feature and fix release. Requires a minimum of Java 7."> |
| <!-- The first attribute below should be the issue id; makes it easier to navigate in the IDE outline --> |
| <action issue="CODEC-252" dev="chtompki" type="fix">B64 salt generator: Random -> ThreadLocalRandom</action> |
| <action issue="CODEC-250" dev="sebb" type="fix" due-to="Alex Volodko">Wrong value calculated by Cologne Phonetic if a special character is placed between equal letters</action> |
| <action issue="CODEC-244" dev="ggregory" type="update">Update from Java 6 to Java 7</action> |
| <action issue="CODEC-240" dev="ggregory" type="add" due-to="Ioannis Sermetziadis">Add Percent-Encoding Codec (described in RFC3986 and RFC7578)</action> |
| <action issue="CODEC-246" dev="ggregory" type="fix" due-to="Oscar Luis Vera Pérez">ColognePhoneticTest.testIsEncodeEquals missing assertions</action> |
| <action issue="CODEC-251" dev="ggregory" type="add" due-to="Gary Gregory">Add SHA-3 methods in DigestUtils</action> |
| </release> |
| <release version="1.11" date="2017-10-20" description="Feature and fix release."> |
| <!-- The first attribute below should be the issue id; makes it easier to navigate in the IDE outline --> |
| <action issue="CODEC-241" type="add">Add support for XXHash32</action> |
| <action issue="CODEC-234" dev="ggregory" type="update" due-to="Christopher Schultz, Sebb">Base32.decode should support lowercase letters</action> |
| <action issue="CODEC-233" dev="sebb" type="update" due-to="Yossi Tamari">Soundex should support more algorithm variants</action> |
| <action issue="CODEC-145" dev="sebb" type="fix" due-to="Jesse Glick">Base64.encodeBase64String could better use newStringUsAscii (ditto encodeBase64URLSafeString)</action> |
| <action issue="CODEC-144" dev="sebb" type="fix">BaseNCodec: encodeToString and encodeAsString methods are identical</action> |
| <action issue="CODEC-232" dev="sebb" type="fix">URLCodec is neither immutable nor threadsafe</action> |
| <action issue="CODEC-231" dev="sebb" type="fix">StringUtils.equals(CharSequence cs1, CharSequence cs2) can fail with String Index OBE</action> |
| <action issue="CODEC-230" dev="sebb" type="fix">URLCodec.WWW_FORM_URL should be private</action> |
| <action issue="CODEC-229" dev="sebb" type="fix">StringUtils.newStringxxx(null) should return null, not NPE</action> |
| <action issue="CODEC-220" dev="sebb" type="add">Fluent interface for DigestUtils</action> |
| <action issue="CODEC-222" dev="sebb" type="add">Fluent interface for HmacUtils</action> |
| <action issue="CODEC-225" dev="jochen" type="fix" due-to="Svetlin Zarev">Fix minor resource leaks</action> |
| <action issue="CODEC-223" dev="sebb" type="remove">Drop obsolete Ant build</action> |
| <action issue="CODEC-171" dev="sebb" type="add" due-to="Brett Okken">Add support for CRC32-C</action> |
| <action issue="CODEC-221" dev="sebb" type="update">HmacUtils.updateHmac calls reset() unnecessarily</action> |
| <action issue="CODEC-200" dev="sebb" type="fix" due-to="Luciano Vernaschi">Base32.HEX_DECODE_TABLE contains the wrong value 32</action> |
| <action issue="CODEC-207" dev="ggregory" type="fix" due-to="Gary Gregory">Charsets Javadoc breaks build when using Java 8</action> |
| <action issue="CODEC-199" dev="ggregory/sebb" type="fix" due-to="Yossi Tamari">Bug in HW rule in Soundex</action> |
| <action issue="CODEC-209" dev="ggregory" type="fix" due-to="Gary Gregory">Javadoc for SHA-224 DigestUtils methods should mention Java 1.8.0 restriction instead of 1.4.0.</action> |
| <action issue="CODEC-219" dev="ggregory" type="fix" due-to="Gary Gregory, Sebb">Don't deprecate Charsets Charset constants in favor of Java 7's java.nio.charset.StandardCharsets</action> |
| <action issue="CODEC-217" dev="ggregory" type="add" due-to="Gary Gregory">Add HmacAlgorithms.HMAC_SHA_224 (Java 8 only)</action> |
| <action issue="CODEC-213" dev="ggregory" type="add" due-to="Gary Gregory">Support JEP 287: SHA-3 Hash Algorithms</action> |
| <action issue="CODEC-212" dev="ggregory" type="add" due-to="Gary Gregory">Create a minimal Digest command line utility: org.apache.commons.codec.digest.Digest</action> |
| <action issue="CODEC-210" dev="ggregory" type="add" due-to="Gary Gregory">Add DigestUtils.getDigest(String, MessageDigest)</action> |
| <action issue="CODEC-208" dev="ggregory" type="add" due-to="Gary Gregory">Make some DigestUtils APIs public</action> |
| <action issue="CODEC-206" dev="ggregory" type="add" due-to="Gary Gregory">Add java.io.File APIs to MessageDigestAlgorithm</action> |
| <action issue="CODEC-183" dev="ggregory" type="add" due-to="Steven Wurster">BaseNCodecOutputStream only supports writing EOF on close()</action> |
| <action issue="CODEC-195" dev="ggregory" type="add" due-to="Gary Gregory">Support SHA-224 in DigestUtils on Java 8</action> |
| <action issue="CODEC-194" dev="ggregory" type="add" due-to="Gary Gregory">Support java.nio.ByteBuffer in org.apache.commons.codec.binary.Hex</action> |
| <action issue="CODEC-193" dev="ggregory" type="add" due-to="Michael Donaghy">Support java.nio.ByteBuffer in DigestUtils</action> |
| <action issue="CODEC-202" dev="ggregory" type="add" due-to="Oleg Kalnichevski">Add BaseNCodec.encode(byte[], int, int) input with offset and length parameters for Base64 and Base32.</action> |
| <action issue="CODEC-203" dev="ggregory" type="add" due-to="Gary Gregory">Add convenience method decodeHex(String).</action> |
| <action issue="CODEC-205" dev="ggregory" type="add" due-to="Gary Gregory">Add faster CRC32 implementation.</action> |
| <action issue="CODEC-224" dev="ggregory" type="add" due-to="Gary Gregory">Add convenience API org.apache.commons.codec.binary.Hex.encodeHexString(byte[]|ByteBuffer, boolean).</action> |
| <action issue="CODEC-242" dev="ggregory" type="add" due-to="Gary Gregory">Add Automatic-Module-Name manifest entry for Java 9.</action> |
| </release> |
| <release version="1.10" date="5 November 2014" description="Feature and fix release."> |
| <action dev="ggregory" type="add" issue="CODEC-192" due-to="Thomas Neidhart">Add Daitch-Mokotoff Soundex</action> |
| <action dev="ggregory" type="add" issue="CODEC-121" due-to="Thomas Neidhart, Java John">QuotedPrintableCodec does not support soft line break per the 'quoted-printable' example on Wikipedia</action> |
| <action dev="tn" type="fix" issue="CODEC-185" due-to="Sean Busbey">Added clarification to Javadoc of Base64 concerning the use of the urlSafe parameter</action> |
| <action dev="tn" type="fix" issue="CODEC-191" due-to="Igor Savin">Added clarification to the Javadoc of Base[32|64]OutputStream that it is mandatory to call close()</action> |
| <action dev="ggregory" type="fix" issue="CODEC-188" due-to="Hendrik Saly">Add support for HMAC Message Authentication Code (MAC) digests</action> |
| <action dev="ggregory" type="fix" issue="CODEC-187" due-to="Michael Tobias, Thomas Neidhart">Beider Morse Phonetic Matching producing incorrect tokens</action> |
| <action dev="ggregory" type="fix" issue="CODEC-184" due-to="Cyrille Artho">NullPointerException in DoubleMetaPhone.isDoubleMetaphoneEqual when using empty strings</action> |
| <action dev="ggregory" type="add" issue="CODEC-181" due-to="Ivan Martinez-Ortiz">Make possible to provide padding byte to BaseNCodec in constructor</action> |
| <action dev="ggregory" type="fix" issue="CODEC-180" due-to="Ville Skyttä">Fix Javadoc 1.8.0 errors</action> |
| <action dev="ggregory" type="update" issue="CODEC-178">Deprecate Charsets Charset constants in favor of Java 7's java.nio.charset.StandardCharsets</action> |
| <action dev="ggregory" type="fix" issue="CODEC-189">Fix Java 8 build Javadoc errors</action> |
| <action dev="ggregory" type="update" issue="CODEC-190">Update from commons-parent 34 to 35</action> |
| </release> |
| <release version="1.9" date="20 December 2013" description="Feature and fix release."> |
| <action dev="ggregory" type="update" issue="CODEC-174" due-to="Thomas Champagne">Improve performance of Beider Morse encoder</action> |
| <action dev="ggregory" type="fix" issue="CODEC-175">Beider Morse does not close Scanners used to read config files</action> |
| <action dev="sebb" type="fix" issue="CODEC-172" due-to="Matt Bishop">Base32 decode table has spurious value</action> |
| <action dev="ggregory" type="fix" issue="CODEC-170" due-to="Ron Wheeler, Henri Yandell">Link broken in Metaphone Javadoc</action> |
| <action dev="ggregory" type="fix" issue="CODEC-176" due-to="Ville Skyttä">Spelling fixes in Javadoc and comments</action> |
| </release> |
| <release version="1.8" date="19 April 2013" description="Feature and fix release. Requires a minimum of Java 6."> |
| <action dev="ggregory" type="add" issue="CODEC-168" due-to="Daniel Cassidy">Add DigestUtils.updateDigest(MessageDigest, InputStream).</action> |
| <action dev="julius" type="add" issue="CODEC-167">Add JUnit to test our decode with pad character in the middle.</action> |
| <action dev="ggregory" type="add" issue="CODEC-161" due-to="crice">Add Match Rating Approach (MRA) phonetic algorithm encoder.</action> |
| <action dev="ggregory" type="fix" issue="CODEC-163" due-to="leo141">ColognePhonetic encoder unnecessarily creates many char arrays on every loop run.</action> |
| <action dev="sebb" type="fix" issue="CODEC-160">Base64.encodeBase64URLSafeString doesn't add padding characters at the end.</action> |
| </release> |
| <release version="1.7" date="11 September 2012" description="Feature and fix release. Requires a minimum of Java 6."> |
| <action issue="CODEC-157" dev="ggregory" type="add" due-to="ggregory"> |
| DigestUtils: Add MD2 APIs. |
| </action> |
| <action issue="CODEC-156" dev="ggregory" type="add" due-to="ggregory"> |
| DigestUtils: add APIs named after standard algorithm name SHA-1. |
| </action> |
| <action issue="CODEC-155" dev="ggregory" type="add" due-to="ggregory"> |
| DigestUtils.getDigest(String) should throw IllegalArgumentException instead of RuntimeException. |
| </action> |
| <action issue="CODEC-153" dev="ggregory" type="add" due-to="ggregory"> |
| Create a class MessageDigestAlgorithms to define standard algorithm names. |
| </action> |
| <action issue="CODEC-152" dev="ggregory" type="add" due-to="ggregory"> |
| DigestUtils.getDigest(String) loses the original exception. |
| </action> |
| <action issue="CODEC-151" dev="ggregory" type="add" due-to="lathspell"> |
| Remove unnecessary attempt to fill up the salt variable in UnixCrypt. |
| </action> |
| <action issue="CODEC-150" dev="ggregory" type="add" due-to="lathspell"> |
| Remove unnecessary call to Math.abs(). |
| </action> |
| <action issue="CODEC-148" dev="ggregory" type="add" due-to="lathspell"> |
| More tests and minor things. |
| </action> |
| <action issue="CODEC-146" dev="tn" type="add" due-to="Julius Davies"> |
| Added regression tests for PhoneticEngine based on Solr-3.6.0. |
| </action> |
| <action issue="CODEC-147" dev="tn" type="update"> |
| BeiderMorseEncoder/PhoneticEngine: make results deterministic by using a LinkedHashSet |
| instead of a HashSet. |
| </action> |
| <action issue="CODEC-143" dev="sebb" type="update"> |
| StringBuffer could be replaced by StringBuilder for local variables. |
| </action> |
| <action issue="CODEC-139" dev="ggregory" type="add" due-to="dsebastien"> |
| DigestUtils: add updateDigest methods and make methods public. |
| </action> |
| <action issue="CODEC-133" dev="ggregory" type="add" due-to="lathspell"> |
| Add classes for MD5/SHA1/SHA-512-based Unix crypt(3) hash variants. |
| </action> |
| <action issue="CODEC-96" dev="ggregory" type="fix" due-to="sebb"> |
| Base64 encode() method is no longer thread-safe, breaking clients using it as a shared BinaryEncoder. |
| Note: the fix breaks binary compatibility, however the changes are to a class (BaseNCodec) which is |
| intended for internal use. |
| </action> |
| <action issue="CODEC-138" dev="sebb" type="fix"> |
| Complete FilterInputStream interface for BaseNCodecInputStream. |
| </action> |
| <action issue="CODEC-136" dev="ggregory" type="fix"> |
| Use Charset objects when possible, create Charsets for required character encodings. |
| </action> |
| <action issue="CODEC-132" dev="ggregory" type="fix" due-to="rcmuir"> |
| BeiderMorseEncoder OOM issues. |
| </action> |
| <action issue="CODEC-131" dev="tn" type="fix" due-to="smolav"> |
| DoubleMetaphone Javadoc contains dead links. |
| </action> |
| <action issue="CODEC-130" dev="ggregory" type="add" due-to="tn"> |
| Base64InputStream.skip skips underlying stream, not output. |
| </action> |
| <action issue="CODEC-63" dev="ggregory" type="add" due-to="tn"> |
| Implement NYSIIS phonetic encoder. |
| </action> |
| </release> |
| <release version="1.6" date="20 November 2011" description="Feature and fix release. Requires a minimum of Java 5."> |
| <action dev="ggregory" type="fix" issue="CODEC-129" due-to="ggregory"> |
| Use standard Maven directory layout. |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-128" due-to="ville.skytta@iki.fi"> |
| Documentation spelling fixes. |
| </action> |
| <action dev="ggregory, sebb" type="fix" issue="CODEC-127"> |
| Fix various character encoding issues in comments and test cases. |
| </action> |
| <action dev="ggregory, matthewpocock" type="update" issue="CODEC-125" due-to="Matthew Pocock"> |
| Implement a Beider-Morse phonetic matching codec. |
| </action> |
| <action dev="ggregory" type="update" issue="CODEC-119"> |
| Migrate to Java 5. |
| </action> |
| <action dev="ggregory" type="update" issue="CODEC-120"> |
| Migrate to JUnit 4. |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-123"> |
| ColognePhonetic Javadoc should use HTML entities for special characters. |
| </action> |
| </release> |
| <release version="1.5" date="29 March 2011" description="Feature and fix release. Requires a minimum of Java 1.4."> |
| <action dev="sebb" type="add" issue="CODEC-88"> |
| Added new Base32 encoder. |
| </action> |
| <action dev="sebb" type="fix" issue="CODEC-89"> |
| new Base64().encode() appends a CRLF, and chunks results into 76 character lines. |
| </action> |
| <action dev="sebb" type="fix" issue="CODEC-92"> |
| Many test cases use getBytes() which uses the default platform encoding so tests may fail on some platforms. |
| </action> |
| <action dev="sebb, julius, ggregory" type="add" issue="CODEC-93" due-to="sebb"> |
| Add test(s) to check that encodeBase64() does not chunk output. |
| </action> |
| <action dev="sebb" type="fix" issue="CODEC-97" due-to="mjryall"> |
| Base64 default constructor behavior changed to enable chunking in 1.4. |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-99" due-to="julius"> |
| Base64.encodeBase64String() shouldn't chunk. |
| </action> |
| <action dev="julius" type="fix" issue="CODEC-101" due-to="balusc"> |
| Base64InputStream#read(byte[]) incorrectly returns 0 at end of any stream which is multiple of 3 bytes long. |
| </action> |
| <action dev="bayard" type="fix" issue="CODEC-103" due-to="gnuf"> |
| Typo in DecoderException message thrown from Hex.decodeHex. |
| </action> |
| <action dev="julius, ggregory" type="add" issue="CODEC-105" due-to="zak"> |
| ArrayIndexOutOfBoundsException when doing multiple reads() on encoding Base64InputStream. |
| </action> |
| <action dev="bayard" type="add" issue="CODEC-106" due-to="it2mmeyerfa"> |
| Add the "Kölner Phonetik" encoder (Cologne Phonetic) to codec.lang. |
| </action> |
| <action dev="ggregory" type="add" issue="CODEC-111" due-to="ggregory"> |
| org.apache.commons.codec.net.URLCodec.ESCAPE_CHAR isn't final but should be. |
| </action> |
| <action dev="sebb" type="add" issue="CODEC-112" due-to="sebb"> |
| Base64.encodeBase64(byte[] binaryData, boolean isChunked, boolean urlSafe, int maxResultSize) throws IAE for valid maxResultSize if isChunked is false. |
| </action> |
| <action dev="ggregory" type="add" issue="CODEC-113" due-to="ggregory"> |
| org.apache.commons.codec.language.RefinedSoundex.US_ENGLISH_MAPPING should be package protected MALICIOUS_CODE. |
| </action> |
| <action dev="ggregory" type="add" issue="CODEC-114" due-to="ggregory"> |
| org.apache.commons.codec.language.Soundex.US_ENGLISH_MAPPING should be package protected MALICIOUS_CODE. |
| </action> |
| <action dev="ggregory" type="add" issue="CODEC-115" due-to="sebb"> |
| DoubleMetaphone.maxCodeLen should probably be private. |
| </action> |
| <action dev="ggregory" type="remove" issue="CODEC-116" due-to="ggregory"> |
| Remove deprecated package private method Base64.discardWhitespace(byte[]) |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-117" due-to="ggregory"> |
| Caverphone encodes names starting and ending with "mb" incorrectly. |
| </action> |
| <action dev="ggregory" type="add" issue="CODEC-118" due-to="ggregory"> |
| Split Caverphone class into two classes for Caverphone 1.0 and 2.0. |
| </action> |
| </release> |
| <release version="1.4" date="9 August 2009" description="Feature and fix release. Requires a minimum of Java 1.4."> |
| <action dev="ggregory" type="fix" issue="CODEC-80" due-to="Julius Davies"> |
| Regression: Base64.encode(chunk=true) has a bug when input length is multiple of 76. |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-77" due-to="Julius Davies"> |
| Base64 bug with empty input (new byte[0]). |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-75" due-to="Julius Davies"> |
| Make Base64 URL-safe. |
| </action> |
| <action dev="ggregory" type="add" issue="CODEC-74"> |
| Allow for uppercase letters output in Hex.encodeHex(). |
| </action> |
| <action dev="bayard" type="fix" issue="CODEC-72" due-to="Sebb"> |
| Soundex and RefinedSoundex issues with character arrays. |
| </action> |
| <action dev="bayard" type="fix" issue="CODEC-71" due-to="Sebb"> |
| Base64.isArrayByteBase64() method is inefficient for large byte arrays. |
| </action> |
| <action dev="bayard" type="fix" issue="CODEC-70" due-to="Sebb"> |
| Thread safety and malicious code safety improvements. |
| </action> |
| <action dev="bayard" type="fix" issue="CODEC-68" due-to="Robert Rodewald"> |
| isBase64 throws ArrayIndexOutOfBoundsException on some non-BASE64 bytes. |
| </action> |
| <action dev="bayard" type="fix" issue="CODEC-65" due-to="Benjamin Bentmann"> |
| Fix case-insensitive string handling. |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-61" due-to="Igor Slepchin"> |
| Base64.encodeBase64() throws NegativeArraySizeException on large files. |
| </action> |
| <action dev="bayard" type="add" issue="CODEC-60"> |
| Implement Caverphone. |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-58" due-to="Julius Davies"> |
| Character set used by Base64 not documented. |
| </action> |
| <action dev="bayard" type="fix" issue="CODEC-56" due-to="Sebb"> |
| RefinedSoundex creates instance before al fields have been initialized. |
| </action> |
| <action dev="bayard" type="add" issue="CODEC-52" due-to="Niklas Gustavsson"> |
| Digest on InputStreams. |
| </action> |
| <action dev="bayard" type="fix" issue="CODEC-51"> |
| 2 Test failures in SoundexTest. |
| </action> |
| <action dev="bayard" type="add" issue="CODEC-40" due-to="Chris Black"> |
| Patch to add crypto-compatible BigInteger encoding support to Base64. |
| </action> |
| <action dev="ggregory" type="add" issue="CODEC-39" due-to="Jamie Flournoy" due-to-email="jamie@white-mountain.org"> |
| DigestUtils: Add methods for SHA-256, SHA-384, and SHA-512. |
| </action> |
| <action dev="tobrien" type="fix" issue="CODEC-10" due-to="Reggie Riser" due-to-email="rriser@informs.com"> |
| Using US_ENGLISH in Soundex caused an NullPointerException. |
| </action> |
| <action dev="tobrien" type="fix" issue="CODEC-6" due-to="David Tonhofer"> |
| Source tarball spews files all over the place. |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-22" due-to="Piero Ottuzzi"> |
| Base64.isArrayByteBase64() throws an ArrayIndexOutOfBoundsException for negative octets |
| </action> |
| <action dev="jochen" type="add" issue="CODEC-69" due-to="Julius Davies"> |
| Streaming Base64 (Base64InputStream and Base64OutputStream added). |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-78" due-to="Julius Davies"> |
| Base64: Improve Code Coverage. |
| </action> |
| <action dev="ggregory" type="add" issue="CODEC-59" due-to="Julius Davies"> |
| Add methods to Base64 which work with String instead of byte[]. |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-81" due-to="Julius Davies"> |
| Base64's new constructor parameters ignored. |
| </action> |
| <action dev="niallp" type="fix" issue="CODEC-83"> |
| Improve Double Metaphone test coverage. |
| </action> |
| <action dev="niallp" type="fix" issue="CODEC-84"> |
| Double Metaphone bugs in alternative encoding. |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-73" due-to="Benjamin Bentmann"> |
| Make string2byte conversions independent of platform default encoding. |
| </action> |
| </release> |
| <release version="1.3" date="10 July 2004" description="Feature and fix release."> |
| <action dev="ggregory, tobrien" type="add" issue="CODEC-21" due-to="Alex Karasulu"> |
| BinaryCodec: Encodes and decodes binary to and from Strings of 0s and 1s. |
| </action> |
| <action dev="ggregory" type="add" issue="CODEC-41" due-to="Oleg Kalnichevski" due-to-email="olegk@apache.org"> |
| QuotedPrintableCodec: Codec for RFC 1521 MIME (Multipurpose Internet |
| Mail Extensions) Part One. Rules #3, #4, and #5 of the quoted-printable spec |
| are not implemented yet. See also issue CODEC-46. |
| </action> |
| <action dev="ggregory" type="add" issue="CODEC-41" due-to="Oleg Kalnichevski" due-to-email="olegk@apache.org"> |
| BCodec: Identical to the Base64 encoding defined by RFC 1521 and allows a |
| character set to be specified. |
| </action> |
| <action dev="ggregory" type="add" issue="CODEC-41" due-to="Oleg Kalnichevski" due-to-email="olegk@apache.org"> |
| QCodec: Similar to the Quoted-Printable content-transfer-encoding defined |
| in RFC 1521 and designed to allow text containing mostly ASCII characters to |
| be decipherable on an ASCII terminal without decoding. |
| </action> |
| <action dev="ggregory" type="add" issue="CODEC-45" due-to="Matthew Inger" due-to-email="mattinger@yahoo.com"> |
| Soundex: Implemented the DIFFERENCE algorithm. |
| </action> |
| <action dev="ggregory" type="add" issue="CODEC-45" due-to="Matthew Inger" due-to-email="mattinger@yahoo.com"> |
| RefinedSoundex: Implemented the DIFFERENCE algorithm. |
| </action> |
| <action dev="ggregory" type="update"> |
| This version is released under the |
| <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a> |
| , please see LICENSE.txt. Previous versions were released under the |
| <a href="http://www.apache.org/licenses/LICENSE-1.1">Apache License 1.1</a> |
| </action> |
| <action dev="ggregory" type="update"> |
| The Board recommendation to remove Javadoc author tags has been |
| implemented. All author tags are now "Apache Software Foundation". |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-25" due-to="Oleg Kalnichevski" due-to-email="olegk@apache.org"> |
| The default URL encoding logic was broken. |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-31" due-to="Gary D. Gregory"> |
| Base64 chunked encoding not compliant with RFC 2045 section 2.1 CRLF. |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-5"> |
| Hex converts illegal characters to 255. |
| </action> |
| <action dev="tobrien" type="fix" issue="CODEC-17"> |
| Metaphone now correctly handles a silent B in a word that ends in MB. |
| "COMB" is encoded as "KM", before this fix "COMB" was encoded as "KMB". |
| </action> |
| <action dev="ggregory" type="fix"> |
| Added missing tags in Javadoc comments. |
| </action> |
| <action dev="ggregory" type="fix"> |
| General Javadoc improvements. |
| </action> |
| </release> |
| <release version="1.2" date="24 Nov 2003" description="Feature and fix release."> |
| <action dev="tobrien" type="add" due-to="Oleg Kalnichevski" due-to-email="olegk@apache.org"> |
| URLCodec: Implements the www-form-urlencoded encoding scheme. |
| </action> |
| <action dev="tobrien" type="add" due-to="Dave Dribin, David Graham"> |
| DigestUtils: Calculates MD5 and SHA digests. |
| </action> |
| <action dev="tobrien" type="fix" issue="CODEC-26" due-to="Brian Ewins"> |
| Modified Base64 to remedy non-compliance with RFC |
| 2045. Non-Base64 characters were not being discarded during the |
| decode. RFC 2045 explicitly states that all characters outside of the |
| base64 alphabet are to be ignored. |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-4"> |
| Hex.decode(Object) throws a ClassCastException when a String argument is passed in. |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-3"> |
| Soundex: The HW rule is not applied; hyphens and apostrophes are not ignored. |
| </action> |
| <action dev="ggregory" type="fix" issue="CODEC-29"> |
| Soundex.setMaxLength causes bugs and is not needed. |
| Calling Soundex.setMaxLength() with a value of 2 or less causes the wrong |
| answer to be returned. Since the encoding returned by Soundex is always |
| of length 4 by definition (we do not use the '-' in as a letter-nnn |
| separator) the need for a maxLength attribute is not needed. Deprecate |
| the field and accessor methods. |
| </action> |
| <action dev="Members" type="fix"> |
| Fix in Metaphone relating to the handling of the maximum code length. |
| </action> |
| </release> |
| <release version="1.1" date="29 April 2003" |
| description="The first official release. Numerous projects had been depending on version 1.0-dev while in the Sandbox."> |
| <action dev="Members" type="add"> |
| A newer version of the Base64 class reflecting improvements from |
| both the commons-httpclient and xml-rpc versions of code forked |
| from catalina. |
| </action> |
| <action dev="Members" type="add"> |
| Base64 class from commons-httpclient in org.apache.commons.codec.base64 |
| has been retained for backwards compatibility but has been deprecated. |
| </action> |
| <action dev="Members" type="add"> |
| Soundex class from commons-util in org.apache.commons.codec. |
| </action> |
| <action dev="Members" type="add"> |
| Metaphone class from commons-util in org.apache.commons.codec. |
| </action> |
| <action dev="tobrien" type="add"> |
| RefinedSoundex class in org.apache.commons.codec. |
| </action> |
| <action dev="Members" type="add"> |
| Encoder/Decoder interfaces in org.apache.commons. |
| </action> |
| <action dev="Members" type="add"> |
| String and Binary specific Encoder/Decoder interfaces in org.apache.commons. |
| </action> |
| <action dev="Members" type="add"> |
| StringEncoderComparator replaces the SoundexComparator from the language package. |
| </action> |
| <action dev="Members" type="fix"> |
| Base64 now discards whitespace characters when decoding encoded content. |
| </action> |
| </release> |
| <release version="1.0-dev" date="25 April 2003" description="Last release from the Sandbox."> |
| <action dev="tobrien" type="add"> |
| Base64 class from commons-httpclient in org.apache.commons.codec.base64. |
| </action> |
| <action dev="tobrien" type="add"> |
| Soundex class from commons-util in org.apache.commons.codec. |
| </action> |
| <action dev="tobrien" type="add"> |
| Metaphone class from commons-util in org.apache.commons.codec. |
| </action> |
| <action dev="Members" type="add"> |
| SoundexComparator class from commons-util in org.apache.commons.codec. |
| </action> |
| </release> |
| </body> |
| </document> |