-
Notifications
You must be signed in to change notification settings - Fork 18
News and noteworthy
Philip Helger edited this page Nov 8, 2024
·
124 revisions
- v11.x [Java 11] - is actively maintained
- v10.x [Java 1.8] - critical fixes are backported
- v9.x and older [Java 1.8] - not maintained anymore
- v11.1.10 - 2024-11-08
- Added new method
IConfigWithFallback.getAsCharArrayOrFallback
- Added new interfaces
IKeyStoreDescriptor
,IKeyStoreAndKeyDescriptor
andITrustStoreDescriptor
in ph-security - Added new classes
KeyStoreDescriptor
,KeyStoreAndKeyDescriptor
andTrustStoreDescriptor
in ph-security - Added new method
KeyStoreHelper.iterateKeyStore
- Added new method
- v11.1.9 - 2024-10-30
- Updated to BouncyCastle 1.79.0
- Added new annotation
ChangeNextMajorRelease
- Deprecated
KeyStoreHelper.loadKeyStoreDirect
methods withString
password in favour of versions withchar[]
password - Added
KeyStoreHelper.loadKeyStore
methods withchar[]
as password type - Deprecated
KeyStoreHelper.loadKeyStore
methods withString
password in favour of versions withchar[]
password - Added support for JDK 22 and JDK 23 in
EJavaVersion
- v11.1.8 - 2024-09-10
- Made sure that
HttpHeaderMap.getUnifiedValue
unified values combine all whitespaces into a single space
- Made sure that
- v11.1.7 - 2024-09-10
- Updated to BouncyCastle 1.78.1
- Added method
CertificateHelper.isCA
- Added additional
Commons...Map
constructor overloads - Added method
EqualsHelper.identityDifferent
- Made sure that
HttpHeaderMap.getUnifiedValue
unified values combine all\r
,\n
and\t
into a single space - The method
EnvVarHelper.getUnifiedSysEnvName
can now also remove invalid characters on demand
- v11.1.6 - 2024-04-09
- Updated to BouncyCastle 1.78. This fixes CVE-2024-29857, CVE-2024-30171, CVE-2024-30172 and CVE-2024-301XX. See PR #43 - thx @problemzebra2
- v11.1.5 - 2024-03-27
- Added new interface
IHasSizeLong
- Added new interface methods
IHasInputStream.withInputStreamDo
andIHasInputStream.withBufferedInputStreamDo
- Added new interface method
IHasByteArray.isPartialArray
- Added build compatibility with Java 21
- Deprecated method
ICommonsList.getFirst()
in favour ofICommonsList.getFirstOrNull()
because of clash with JDK 21 API extension. See issue #42 - Deprecated method
ICommonsList.getLast()
in favour ofICommonsList.getLastOrNull()
because of clash with JDK 21 API extension. See issue #42 - Deprecated method
ICommonsList.removeFirst()
in favour ofICommonsList.removeFirstOrNull()
because of clash with JDK 21 API extension. See issue #42 - Deprecated method
ICommonsList.removeLast()
in favour ofICommonsList.removeLastOrNull()
because of clash with JDK 21 API extension. See issue #42
- Added new interface
- v11.1.4 - 2024-02-15
- Added support to detect Java 21. See PR #39 - thx @janwytze
- Added "LTS" flag on the
EJavaVersion
enum entries - The default
ErrorTextProvider
was slightly changed to put the error field in brackets as well - Class
ErrorTextProvider.FormattableItem
is no longerfinal
- Added new interface method
IError.getAsStringLocaleIndepdent ()
- Added new interface
IConditionalLogger
- v11.1.3 - 2023-11-15
- Updated to parent POM 2.0.5
- Updated to SLF4J 2.0.9
- Updated to BouncyCastle 1.77. See PR #38 - thx @problemzebra2
- Fixed spelling error in
EXMLParserProperty.JAXP_SCHEMA_SORUCE
- Removed
final
from classVersion
- Added new method
IJsonArray.addIfNotEmpty
- Added new method
IJsonObject.addIfNotEmpty
- v11.1.2 - 2023-08-16
- Added new keystore type
BKS
to support the BouncyCastle internal keystore format
- Added new keystore type
- v11.1.1 - 2023-08-10
- Updated to BouncyCastle 1.76
- Extended
KeyStoreHelper
APIs to be able to provide custom securityProvider
in it. - Renamed
CertificateHelper.getWithPEMHeader
togetCertificateWithPEMHeader
- Added overload of
CertificateHelper.convertStringToCertficate
- v11.1.0 - 2023-07-31
- Removed the explicit
SuppressFBWarnings
class in favour of an optional include ofspotbugs-annotations
. See issue #36 - Changed the constructor parameter of
CollectingSAXErrorHandler
fromSupplier <ErrorList>
toSupplier <? extends ErrorList>
- Added new interface
IObjectPoolFactory
to extend the functionality of theObjectPool
class
- Removed the explicit
- v11.0.6 - 2023-07-10
- Updated to BouncyCastle 1.75
- Extended ObjectPool API
- Improved DAO debug logging
- v11.0.5 - 2023-06-18
- Updated resilience in
WALListener
to correct handle activities, even if the ExecutorService is already shutdown - Logging warnings when a configuration value contains a trailing whitespace character
- Fixed a potential stack overflow when handling too deeply nested JSON objects. See issue #35
- Added support to detect Java 20
- Updated resilience in
- v11.0.4 - 2023-04-29
- Extended the class
JAXBContextCacheKey
to support multiple packages as well - Deprecated a lot of methods from
JAXBContextCache
in favour of theJAXBContextCacheKey
factory method - Fixed an error in
Codepoint.isLowSurrogate
andCodepoint.isHighSurrogate
- Added support for writing Surrogate pairs in the XML writer
-
XMLFactory.createDefaultTransformerFactory
no longer emits warnings of unsupported features - Added classes
ConditionalLogger
andIHasConditionalLogger
- Extended the class
- v11.0.3 - 2023-04-16
- Updated to BouncyCastle 1.73
- Deprecated classes
AbstractJAXBBuilder
andAbstractWritingJAXBBuilder
for removal - Classes
LoggingJAXBReadExceptionHandler
andLoggingJAXBWriteExceptionHandler
received a singleton accessor field - Extended
IKeyStoreType
interface with methodisKeyStorePathRequired
- Added new enum entry
EKeyStoreType.PKCS11
for support of PKCS11 - see PR #34 - thx @sopgreg - Deprecated classes
JAXBDocumentType
andIJAXBDocumentType
- The
GenericJAXBMarshaller
now has an API to disable the usage of XML Schema that applies for reading, writing and validation - Added an optional progress callback to the
StreamHelper.copy(Byte|Char)Stream
builders
- v11.0.2 - 2023-02-24
- Updated to parent POM 2.0.1
- Updated to JAXB 4.0.2
- Updated to JAX-WS 4.0.1
- Updated to SLF4J 2.0.6
- Added missing MicroType converter for the
XMLOffset(Date|Time)
data types and others - Added additional
MathHelper.getDividedBigDecimal
overload - Added additional method
IJAXBWriter.getAsElement
- Added additional
ArrayHelper.forEach
overload - Using BouncyCastle dependency
org.bouncycastle:bcjmail-jdk18on
for Jakarta usage - Fixed an
ArrayIndexOutOfBoundsException
when a single$
character is contained in a configuration property with variable resolution enabled - see issue SMP #234 - Variable resolution in configuration files is now enabled by default
- v11.0.1 - 2023-01-08
- Updated to BouncyCastle 1.72
- Improved the Java Version number parser to not throw exceptions on unsupported versions
- Added support to detect Java 18 and 19
- Added new class
PathToNodeBuilder
to be used to customize the building of a path from a DOM node - see issue #31 - Catching
Throwable
in classesConcurrentCollectorSingle
andConcurrentCollectorMultiple
to avoid unnoticed errors
- v11.0.0 - 2022-09-11
- Requires Java 11 as the baseline
- Updated to BouncyCastle 1.71.1
- Updated to JAXB 4.0.0
- Updated to JAX-WS 4.0.0
- Updated to SLF4J 2.0.0
- Removed all classes and methods marked as deprecated
- By default all XML processing disables DTD processing and disallows all external entities
- Renamed
IConfigurationValueProviderWithPriorityCallback
methodonConfigurationSource
toonConfigurationValueProvider
- Added additional overloads of
XMLOffset(Date|Time|DateTime).of
withoutZoneOffset
- Renamed
JAXBMarshallerHelper.(is|get|set)Sun
to(is|get|set)Jakarta
- this is an backwards incompatible change, even though that part should not be used externally anyway - Added new interface
IIterableConfigurationSource
to enumerate all available configuration items - The default
TransformerFactory
created inXMLTransformerFactory
uses now the secure reading - Made silent mode in class
SystemProperties
customizable - Class
GenericJAXBMarshaller
now works onValidationEventHandler
directly instead of the factory - Class
GenericJAXBMarhsaller
now also implementsIJAXBValidator
- v10.2.5 - 2023-06-18
- Fixed a potential stack overflow when handling too deeply nested JSON objects. See issue #35 (backport from 11.0.5)
- Added support to detect Java 20 (backport from 11.0.5)
- Updated to BouncyCastle 1.73 (backport from 11.0.3)
- v10.2.4 - 2023-04-29
- Fixed an error in
Codepoint.isLowSurrogate
andCodepoint.isHighSurrogate
(backport from 11.0.4) - Added support for writing Surrogate pairs in the XML writer (backport from 11.0.4)
- Fixed an error in
- v10.2.3 - 2023-02-15
- Fixed an
ArrayIndexOutOfBoundsException
when a single$
character is contained in a configuration property with variable resolution enabled - see issue SMP #234 (backport from 11.0.2)
- Fixed an
- v10.2.2 - 2022-11-17
- Added new class
PathToNodeBuilder
to be used to customize the building of a path from a DOM node - see issue #31 (backport from 11.0.1)
- Added new class
- v10.2.1 - 2022-10-18
- Updated to BouncyCastle 1.72 (backport from 11.0.1)
- Improved the Java Version number parser to not throw exceptions on unsupported versions (backport from 11.0.1)
- Added support to detect Java 18 (backport from 11.0.1)
- v10.2.0 - 2022-08-24
- Updated to BouncyCastle 1.71
- Added
StringHelper.getNot(Null|Empty)
overloads using aSupplier
- Added new class
TextVariableHelper
that can be used to replace${bla}
like variables - Added new class
ConfigWithFallback
that can deal with resolving configuration items with different keys - Added support for variable resolution in class
Config
. UsesetReplaceVariables(true)
to enable this functionality
- v10.1.8 - 2022-07-13
- Added
StringHelper.isEmpty
andStringHelper.isNotEmpty
for more consistent naming - Fixed JAXB formatting which partially indented wrong
- Added
- v10.1.7 - 2022-06-24
- Extended
IError
with an optional error date time - The algorithm name in
PasswordHash
may not exceed 100 characters - Added
CMimeType.APPLICATION_X509_USER_CERT
- Extended
IJsonObject
API slightly - Added new methods
XMLHelper.iterateChildren
andXMLHelper.recursiveIterateChildren
- Added new enum entries
EXMLParserFeature.ACCESS_EXTERNAL_*
- Added new class
NaturalNumericOrderComparator
- Added new class
RecursiveNodeIterator
and deprecated classRecursiveChildNodeIterator
- Added a factory method to class
MicroRecursiveIterator
- Extended
- v10.1.6 - 2022-01-28
- Updated to BouncyCastle 1.70
- Changed
CommonsAssert.FLOAT_ALLOWED_ROUNDING_DIFFERENCE
from 1e-5 to 1e-4 - Fixed a potential
ConcurrentModificationException
inAnnotationUsageCache
in Java 11+ - see issue #27 - Allowed country codes to follow the scheme
[0-9A-Z]
to support the country code for Kosovo used by the EC Publication Office (1A
)
- v10.1.5 - 2021-11-21
- Updated to JAXB 2.3.5
- Updated to JAXWS 2.3.5
- Added factory method
StringInputStream.utf8
- Added new method
WatchDir.runAsyncAndReturn
- Ensuring unique resource ID in
ReadableResourceByteArray
(see https://github.com/phax/ph-schematron/issues/118) - Added new methods
getAndInc
andincAndGet
to theMutable*
classes -
IConfig.forEachConfigurationValueProvider
now iterates the priorities correctly when aMultiConfigurationValueProvider
is used. - Added support for JDK 15, 16 and 17 in class
EJavaVersion
- v10.1.4 - 2021-10-30
- Made
AbstractReadOnlyMapBasedMultilingualText
implementSerializable
- Added special
ReadableResourceString
factory methods for UTF-8 - Class
PasswordSalt
now preferring factory methods over the constructors - The default password salt length was reduced from 512 to 32
-
GlobalIDFactory
now limits String based IDs to a maximum length of 20 for easy DB usage - Fixed an issue, that
XMLOffset(Date|Time|DateTime).parse
did not work without the timezone
- Made
- v10.1.3 - 2021-09-19
- Made
XMLOffset(Date|Time|DateTime)
implementSerializable
(see issue #26) - Updated to BouncyCastle 1.69
- Honouring the default value in
CollectionHelper.findFirst
- AnnotationUsageCache is no longer thread-safe for performance reasons, as the number of read operation is so much higher
- Added new
ArrayHelper.startsWith
overloads -
IHasByteArray.getAllBytes
now honours offset and size - Added new method
IHasByteArray.getBytesAsString
to convert it to a String - The time formatter for XSD no longer prints a mandatory fractional second (see https://github.com/phax/ph-ubl/issues/40)
- Made
- v10.1.2 - 2021-05-13
- Added type converter for destination type
XMLOffsetDateTime
- Avoid an
NoClassDefFoundError
when using a different JAXB implementation - Fixed an error that
PDTToString
with anOffsetDate
would try to use a time formatter -
PDTToString
now handlesZoneOffset
andZoneId
better - Added
XMLHelper.getChildElementOfNames
as a sanity method - Favouring
XMLOffset*.toString
over thegetAsString
variant for better interoperability
- Added type converter for destination type
- v10.1.1 - 2021-05-02
- Build with Java 1.8 instead of Java 11 because of binary incompatibility with
ByteBuffer.flip()
signature
- Build with Java 1.8 instead of Java 11 because of binary incompatibility with
- v10.1.0 - 2021-05-02
- Started the explicit Wiki
- Added
CHttpHeader.HOST
- Extended
Copy*StreamBuilder
withlimit (Long)
- Added
Predicates.and
andPredicates.or
- Create new classes
XMLOffsetDate
andAdapterXMLOffsetDate
similar toOffsetDate
but with an optional zone offset - Create new classes
XMLOffsetTime
andAdapterXMLOffsetTime
similar toOffsetTime
but with an optional zone offset - Create new classes
XMLOffsetDateTime
andAdapterXMLOffsetDateTime
similar toOffsetDateTime
but with an optional zone offset - Added method
Version.hasQualifier
- Changed
Version.parse
to use the new format by default. AddedVersion.parseDotOnly
for the old version. - Added missing
PDTToString.getAsString
overloads - Avoid the inclusion of JAXB and JAX-WS implementation artefacts. The JAXB implementation must now explicitly be added to an application pom.xml e.g. like this:
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
</dependency>
- v10.0.0 - 2021-03-21
- Changed Maven groupId from
com.helger
tocom.helger.commons
- The submodule
ph-xml
no longer depends onph-collection
- Separated the JAXB adapter classes and
JAXBHelper
to new submoduleph-jaxb-adapter
- the goal is to have less dependencies - Removed the submodule
ph-charset
- who needs UTF-7 nowadays.... - Removed deprecated methods
- Removed
Serializable
from base interfaces - Removed the serializable functional specializations (
IFunction
,ISupplier
,IConsumer
,IPredicate
,IBiConsumer
,IBiFunction
,IBiPredicate
,NamespaceContext
) -
GenericJAXBMarshaller
now has a chaining API - Made
MimeTypeParserException
a checked Exception - Added
CertificateHelper.getEncodedCertificate()
- Fixed potential NPE in
GenericJAXBMarshaller.toString()
- Removed
TimeValue
in favour ofDuration
- Added
StopWatch.getLapDuration ()
- Removed
ResourceStreamSource
andResourceStreamResult
- see https://saxonica.plan.io/issues/4833 for the reasons - Changed
JsonReader.Builder
method names to not useset
- The calling order of "useBufferedReader" and "dontCloseSource" compared to "source" in
JsonReader.Builder
is not longer of importance - Changed the
SingleError.builder()
to use method names withoutset
- Added more
SingleError
buildererrorLocation
overloads - Removed the class
ScriptHelper
as Nashorn gets removed in JDK 15 (see JEP 335) - Added new interfaces
IBuilder
andIResettableBuilder
- Extended
HTTPHeaderMap
API - Fixed the data type of the custom HTTP headers in
WSClientConfig
- Changed the default value
DEFAULT_QUOTE_IF_NECESSARY
fromtrue
tofalse
- Deprecated all the "multi map" classes in
ph-collection
. With thecomputeIfAbsent
functions, most of the simplifications can be achieved with runtime features. They will be removed in the next major version. - Extended
ILocalDatePeriod
based on issue #23 - Added classes
ILocalDateTimePeriod
andLocalDateTimePeriod
- Added class
PasswordHashCreatorPBKDF2_SHA256_1000_48
for better PBKDF2 usage - Deprecated class
PasswordHashCreatorPBKDF2_1000_48
because it uses the PBKDF2 with the SHA1 hash - Added new class
StringHelper.ImploderBuilder
that handles all theStringHelper.getImploded*
stuff internally - Added new method
ICommonsIterable.forEachThrowing
- Added new class
StreamHelper.CopyByteStreamBuilder
- Added new class
StreamHelper.CopyCharStreamBuilder
- Added new method
URLHelper.isValidURN
to check RFC 2141 compliance - Deprecated some methods in
StreamHelper
that should be replaced with calls to the new builder - Added
CommonsHashSet.createFiltered
factory methods - Added new class
AdapterOffsetTime
- Added support for
OffsetTime
in PDT* classes - Made the JAXB adapters for
AdapterOffsetDateTime
andAdapterZonedDateTime
more resilient to read data without time zone offsets as well - Added class
OffsetDate
from ThreeTen-Extra project for XML parsing - Added new methods in
PDTFactory
that deal with UTC time zones
- Changed Maven groupId from
- v9.5.5 - 2021-03-18
- Updated to BouncyCastle 1.68 (again with bcprov-ext-jdk15on)
- Added new class
AdapterOffsetDateTime
- v9.5.4 - 2020-12-15
- Updated to BouncyCastle 1.67 (no more bcprov-ext-jdk15on)
- Removed "double locking" in
AbstractCollector
- v9.5.3 - 2020-10-22
- Reverting the changes from 9.5.2
- Made the JAXB DateTime adapter classes more resilient by trimming the input string
- v9.5.2 - 2020-09-25
- Experimental release that uses
CommonsHashMap
instead ofCommonsWeakHashMap
for all registries havingClass<?>
as the key
- Experimental release that uses
- v9.5.1 - 2020-09-18
- Build with Java 1.8 instead of Java 11 because of binary incompatibility with
ByteBuffer.flip()
signature
- Build with Java 1.8 instead of Java 11 because of binary incompatibility with
- v9.5.0 - 2020-09-17
- Updated to JAXB 2.3.3 - https://eclipse-ee4j.github.io/jaxb-ri/
- Updated to JAXWS 2.3.3 - https://eclipse-ee4j.github.io/metro-jax-ws/
- v9.4.8 - 2020-09-10
- Added new JAXB Adapter class
AdapterZonedDateTime
- Added a new factory method in
ConfigFactory
. - Default configuration source loading is now more consistent and behaves identical for all predefined filenames.
- Extended
IConfig
API to easily reload all resource based configuration files - New interface
IAddableByTrait
to be used as the constraint for the element type ofIGenericAdderTrait
- Added new JAXB Adapter class
- v9.4.7 - 2020-08-28
- Extended
IPrivilegedAction
API forSecurity
provider APIs - Extended
IJsonArray
API to iterate only child arrays, objects or values - Scope debugging no longer activates itself if the log level is set to debug
- Extended
PDTWebDateHelper
to handleLocalTime
values as well - Added predefined JAXB adapters in package
com.helger.jaxb.adapter
- Extended
- v9.4.6 - 2020-07-15
- Allow empty MIME type parameter values
-
MimeTypeParser.safeParseMimeType
does an RFC 2616 decoding if necessary - Updated to BouncyCastle 1.66
- v9.4.5 - 2020-06-29
- Added missing methods in
IMapBasedDAO
- Added static syntactic sugar methods in
HashCodeGenerator
- The default
ConfigFactory.getDefaultInstance()
now also considers system propertiesconfig.resource
,config.resources
,config.file
andconfig.url
or the environment variable alternativesCONFIG_RESOURCE
,CONFIG_RESOURCES
,CONFIG_FILE
andCONFIG_URL
. - Added possibility to
reload
for resource-based configuration sources - Fixed a potential NPE in
IJsonObject.getValue (String)
- Added
EqualsHelper.equalsCustom
using aBiPredicate
- Extended
IConfig
API to receive theIConfigurationSource
AND the value to determine the source of the configuration value (backwards incompatible change) - Changed the handling of the
Consumers
in theConfig
implementation in a backward incompatible way (setters vs. constructor, new parameter type)
- Added missing methods in
- v9.4.4 - 2020-05-21
- Fixed a backwards compatibility issue with
JsonObject.add(String,IJson)
- Fixed a backwards compatibility issue with
- v9.4.3 - 2020-05-21
- Extended tests - thanks to @dliang2000
- Extended
NonBlockingCharArrayWriter
with non-throwingwrite
overloads - Changed
IJsonObject
API to favouraddJson
instead ofadd
because of different nullness - Deprecated
IHasSchema
- Added
IConfigurationSourceResource.getAllConfigItems
-
URLResource.getAsFile()
is now nullable
- v9.4.2 - 2020-04-25
- Reduced write locked section in
ScopeManager.onGlobalEnd
to reduce the possibility of a dead-lock - Made
ThreadGroup
ofBasicThreadFactory
customizable - Updated to BouncyCastle 1.65
- The
IMissingLocaleHandler
is now also called inLocaleHelper.getLocale
if the input strings are all empty - Improved the resolution rules for
LocaleCache
,LanguageCache
andCountryCache
on edge cases. - Extracted overridable
GenericJAXBMarshaller.getJAXBContext
- Added possibility to cache
JAXBContext
objects created via classes
- Reduced write locked section in
- v9.4.1 - 2020-03-30
- Added
SimpleLock.(read|write)LockedGet(Throwing)
- The exception handling of
URLHelper.urlDecode
is now backwards compatible - Added
URLHelper.urlDecodeOrNull
andurlDecodeOrDefault
- Added
- v9.4.0 - 2020-03-27
- Added support for additional HTTP status codes (103, 308, 422, 425, 426, 428, 429, 431, 451, 506, 507, 508 and 511)
-
JAXBContextCache
has now a method to switch silent mode on or off - Added new constant
GlobalDebug.DEFAULT_SILENT_MODE
for the default silent mode setting - Added new method
CertificateHelper.convertByteArrayToCertficateOrNull
- Added new class
PDTDisplayHelper
- Added new method
CertificateHelper.convertStringToPrivateKey
- Extended the
JsonWriter
API to also write to an OutputStream - Added new methods
EmailAddress.createOnDemand
-
URLHelper.urlEncode
andURLHelper.urlDecode
now usesURLCodec
- Deprecated
ICommonsIterable.forEach
in favour offindAll
- Fixed a bug in the cloning of
MapBasedNamespaceContext
(see issue #17) - Added
ArrayHelper.EMPTY_CLASS_ARRAY
- Added new predefined licenses (GPL20CP, EPL20 and EDL10)
- Updated license URLs to https where applicable
- New parent POM 1.11.1 updates SLF4J to 1.7.30
-
PropertiesHelper
got new APIs withCharset
to read properties with character sets other than ISO-8859-1 - Started new subproject
ph-config
with a more intelligent configuration handling - Added JDK 14 as a known version
- Added silent mode to
TypeConverter
,CountryCache
,LanguageCache
,ObjectPool
,LocaleCache
- Added new
JAXBDocumentType
constructor for more flexible use - Changed names of
SimpleReadWriteLock.(read|write)Locked
with primitive suppliers - Changed names of
SimpleLock.locked
with primitive suppliers - Added
SimpleReadWriteLock.(read|write)LockedGet(Throwing)
suppliers
- v9.3.9 - 2019-12-11
- Made
ClassLoaderHelper.getResource
more robust - Updated "mime-type-info.xml" list with shared-mime-info-spec 1.15
- Moved code from
AbstractWALDAO
down toAbstractDAO
for later reuse. - Reworked
FileIntIDFactory
andFileLongIDFactory
to be more error resistant. - Added support for the "jrt:" protocol
- Added support for JDK 13
- Extended
LocaleCache
with an API to specify what happens if a Locale is not present
- Made
- v9.3.8 - 2019-11-07
- Fixed method name in
RFC2616Codec
-getMaximumEncodedLength
instead ofgetEncodedLength
; addedgetMaximumDecodedLength
- Avoid double quoting in
HttpHeaderMap.getUnifiedValue
if the value already seems to be quoted - Updated to BouncyCastle 1.64
- Added new interface
IBooleanConsumer
- Added new method
CertificateHelper.isCertificateValidPerNow
- Improved performance of
JsonParser
when position tracking is disabled - Added possibility to read multiple JSON objects from a single source
- Added new classes
LoggingReader
andLoggingWriter
- Added new classes
CountingReader
andCountingWriter
-
JsonParser.parse
now returns an enum indicating EOI or not (incompatible change) - Improved performance of JsonParser by reusing buffers internally
- Added new class
MappedCache
that is a generalization ofCache
. It adds a mapper to determine the cache key. - New parent POM 1.11.0 updates SLF4J to 1.7.29
- Fixed method name in
- v9.3.7 - 2019-09-25
- Extended
IJAXBValidator
API to have avalidate
method that takes an outsideErrorList
- Updated to BouncyCastle 1.63
- Converted some methods in
IMicroQName
to default methods - Extended
HttpHeaderMap
API to makequote if necessary
customizable
- Extended
- v9.3.6 - 2019-08-27
- Extended the
StreamHelper
API with an even more flexiblecopyInputStreamToOutputStream
method -
StreamHelper.getCopy[WithLimit]
can now returnnull
if copying fails - Added new classes around
com.helger.commons.codec.ICharArrayCodec
- Added new class
RFC2616Codec
to correctly encode and decode HTTP header values - Added new option in
HttpHeaderMap.getUnifiedValue
to automatically quote the values if necessary - Added new overloads in
StackTraceHelper
to use a custom line separator - Added new methods
CommonsAssert.assertNotEquals(boolean,boolean)
- Extended the
- v9.3.5 - 2019-08-04
- Updated to BouncyCastle 1.62
- Added new
EURLProtocol
entriesCID
andMID
from RFC 2392 - Minor speed ups in several places
- Added overload of
PDTXMLConverter.getXMLCalendarDate
with timezone offset in minutes - Added new
JsonReader.Builer
overloads -
LocaleHelper.getValidCountryCode
now convert ISO 3166 Alpha 3 codes to ALpha 2 codes where applicable - Made XML serialization settings on the XML declaration more fine grained
- v9.3.4 - 2019-05-28
- Added new overloads for
JsonReader.Builder.setSource
- Catching exception in
VerySecureRandom
initialization -setSeed
may throw an Exception - Deprecated class
RandomHelper
- causes more problems than it solves - Added new method
CertificateHelper.convertStringToCertficateOrNull
- Added new method
CertificateHelper.convertByteArrayToCertficateDirect
- Added complete list of HTTP response codes constants to
CHttp
- Added new method
Base64OutputStream.setNewLineBytes
- Removed methods
Base64.(encode|decode)Object
for security reasons - Added new option
Base64.DO_NEWLINE_CRLF
to use\r\n
as newline separator instead of\n
- Added new overloads for
- v9.3.3 - 2019-05-06
- Added
ICommonsIterable
methodsfindFirstIndex
andfindLastIndex
- Added support for Java 12
- The default XML persistence for configuration files was changed. No more "class" attribute and no nested "value" element needed. The old layout can still be read, but only the new layout is written.
- The class
JsonReader
now has an explicitJsonReader.Builder
class to simplify the usage - New class
SettingsPersistenceJson
to be able to read and write settings in JSON format
- Added
- v9.3.2 - 2019-03-28
- Logging a warning in
VerySecureRandom
if initial seeding takes more than 500 milliseconds - If the system property
ph.disable-securerandom
with the value oftrue
is present, the usage ofSecureRandom
in classRandomHelper
is disabled by default. Respective logging was added. - The system property
ph.securerandom-reseed-interval
with a numeric value ≥ 0 can be used to set the default "re-seed interval" for classVerySecureRandom
-
VerySecureRandom
usesNativePRNGNonBlocking
as the initialSecureRandom
for faster Linux initialization.
- Logging a warning in
- v9.3.1 - 2019-03-06
- Made
IJsonWriterSettings
serializable - Updated to BouncyCastle 1.61
-
null
values in settings can be serialized now -
HttpHeaderMap
methodsforEachSingleHeader
andforEachHeaderLine
now use the unified values
- Made
- v9.3.0 - 2019-02-07
- Restored the
Automatic-Module-Name
ofcom.helger.scopes
- Moved method
exceptionCallbacks
to base classAbstractJAXBBuilder
- Exception handler in
GenericJAXBMarshaller
now based on ´CallbackList` - incompatible change - Fixed the conversion from
String
toInteger
,Long
andShort
so thatnull
is returned on error (therefore throwing aTypeConverterException
) -
IGetter*Trait
getAs...
methods now returnnull
on error instead of throwing aTypeConverterException
- Restored the
- v9.2.1 - 2019-01-23
- Improved API of
JsonParseException
- Added additional default
MicroTypeConverter
registrations (File
,Path
,URL
andURI
) - Added special implementation of
IHasInputStream
forNonBlockingByteArrayOutputStream
- Added enum entry
EXMLSerializeXMLDeclaration.EMIT_NO_NEWLINE
- Extended internal API of
AbstractMapBasedWALDAO
to allow for not invoking the callbacks - Added method
ConfigFileBuilder.addPathFromEnvVar
to get the configuration file path from an environment variable - Added new keystore type
BCFKS
- see issue #13 - Added new constructor for
MapEntry
to takeMap.Entry
- Added new default methods to classes
IHasDimension*
(isLandscape, isPortrait and isQuadratic) -
MimeTypeContent
is now serializable - The OSGI export for submodule
ph-scopes
was corrected - see issue #14 - Added static factory methods for
ByteArrayWrapper
- Improved API of
- v9.2.0 - 2018-11-21
- Undo deprecations of
ValueEnforcer
short and float methods. - Simplified the
IMultilingualText
interface and implementations (backwards incompatible) - Removed all deprecated, unused methods
-
ICommonsIterable
is no longer Serializable. OnlyICommonsCollection
is serializable. -
IHasDisplayText
is no longer Serializable. -
IDisplayTextProvider
is no longer Serializable. -
IHasText
is no longer Serializable. - Changed return type of
SystemProperties.setPropertyValue()
toEChange
-
JAXBDocumentType
takesList<ClassPathResource>
instead ofList<String>
to avoid ClassLoader issues - Changed
PBCProvider
initialization to log a warning instead of throwing an exception - Added
StringHelper
methodsgetQuoted
andappendQuoted
- Improved Java 10/Java 11 support
- Moved
CloneHelper.getClonedJAXBElement
to new classJAXBHelper
inph-jaxb
subproject (Java 11 issue) - Moved class
WSTestHelper
to subprojectph-wsclient
(Java 11 issue) - First version to compile with OracleJDK 11 and OpenJDK 11
- Added methods in
PDTFactory
to remove microseconds and nanoseconds from(Zoned|Offset|Local)DateTime
- Added support for silent mode in
AbstractDAO
- Changed
DOMReader.readXMLDOM
to not throw an Exception. Provide a suitableErrorHandler
instead. -
WrappedCollectingSAXErrorHandler
is now derived fromCollectingSAXErrorHandler
- Undo deprecations of
- v9.1.8 - 2018-10-24
- Added special support for properties
java.runtime.version
andjava.runtime.name
in classSystemProperties
- Class
JavaVersionHelper
now supports AdoptOpenJDK versions -
HttpHeaderMap
stores the value case sensitive internally and compares case sensitive instead (issue #11) - Added
PDTConfig.getUTCTimeZone ()
- Fixed a conversion error from
GregorianCalendar
toXMLGregorianCalendar
if only the date part is used (issue #12) - Added TimeZone related methods in
PDTFactory
- Added method
IHasInputStream.getBufferedInputStream()
,IHasInputStreamAndReader.getBufferedReader()
andIHasReader.getBufferedReader()
- Added method
IHasOutputStream.getBufferedOutputStream()
,IHasOutputStreamAndWriter.getBufferedWriter()
andIHasWriter.getBufferedWriter()
- Opened
JsonReader
API to add the possibility to pass in anIJsonParserCustomizeCallback
instance - Added
IMultilingualText.texts ()
- Fixed some SpotBugs errors
- Added
IJAXBWriter.getAsInputStream(...)
- Added new marker interface
IExplicitlyCloneable
- Added special support for properties
- v9.1.7 - 2018-10-11
- Added new class
IdentityByteArrayCodec
- Added new classes
MacInputStream
andMacOutputStream
- Deprecated some JSON APIs with
byte
,short
andfloat
- Overloaded
WrappedOutputStream.write (byte[],int,int)
for quicker pass-through. Please ensure that all derived classes also overload this method. -
JSONValue
handling forlong
values in theint
range was changed to storeint
internally. This improves testability independent of the value range. - Added new
StringHelper.contains(Any|No|Only)
methods forCharSequence
andString
objects
- Added new class
- v9.1.6 - 2018-10-01
- Added
CHttpHeader.X_CONTENT_SECURITY_POLICY_REPORT_ONLY
- Added
ValueEnforcer.isNE0
methods - Deprecated
ValueEnforcer
methods forshort
andfloat
- Reworked the
VerySecureRandom
initialization to use a native PRNG for initial seeding - Improved customizability of
AbstractWALDAO
in case WAL recovery failed - Extended
IHas...DateTime
APIs - Fixed OSGI SPI configuration for ph-bc
- Added
- v9.1.5 - 2018-09-09
- Extended
WSClientConfig
API - Extended
GenericJAXBMarshaller
API - Class
IJAXBReader
now tries to set systemID forIReadableResource
,File
andPath
parameters. - Extended
PDTFactory
slightly - Fixed potential NPE when an
AbstractWALDAO
is used without a backing file -
DefaultTransformURIResolver
got the possibility to provide a default base URI if none is present in the call - Improved internal API of
AbstractMapBasedWALDAO
- Updated stax-ex to 1.8
- Extended
- v9.1.4 - 2018-08-06
- Added class
XMLBracketModeDeterminatorXMLC14
- Added XML write setting
write CDATA as Text
- Added XML write setting
order attributes and namespaces lexicographically
- XML entities are now emitted as Hexadecimal values instead of numeric (
&#D;
instead of
) - Fixed error in
HttpHeaderMap.addAllHeaders
(was not doing what was expected)
- Added class
- v9.1.3 - 2018-07-19
- Updated to BouncyCastle 1.60
- Extended
LogHelper
to have overloads withSupplier<String>
- Added new
Commons...Map
constructors with parametersMap, Function, Function
- Added new class
LanguageCache
- Added new
CommonsArrayList
static factory methods - Deprecated all the
ChangeLog
classes - they will be moved to ph-less-commons in v9.2 - Added new interface
IHasByteArray
- Implementing
IHasByteArray
inReadableResourceByteArray
,ByteArrayInputStreamProvider
,MessageDigestValue
- Added new class
ByteArrayWrapper
- Added new method
NonBlockingByteArrayOutputStream.getBufferOrCopy()
that copies only on demand - Added new
ArrayHelper.startsWith
overloads - Added static factory methods in
CommonsCopyOnWriteArrayList
- The internal logger name was changed from
s_aLogger
toLOGGER
- Extended
IPrivilegedAction
with new static methods - Added new class
Predicates
with basic typed predicates for primitive types - Added some static
IBooleanPredicate
factory methods - Added
ToStringGenerator.appendPasswordIf
method - Added equals implementation to
PasswordAuthentication
- v9.1.2 - 2018-06-19
- Made setters of
WSClientConfig
final - Changed method name in
CharsetHelper
fromgetCharsetFromNameOrNull
togetCharsetFromNameOrDefault
- Added new sub-project
ph-bc
with some common BouncyCastle helper methods - Added OCSP MIME type constants
- Extended
XMLTransformerFactory
API to support creating secure instances - Improved code quality based on SonarQube analysis
- Removed the Generic type from
IConcurrentCollector
- Added
PropertiesHelper.expandProperties
- Removed empty class
AbstractTreeItemFactory
- Made setters of
- v9.1.1 - 2018-05-14
- Really fixed OSGI ServiceProvider configuration
- v9.1.0 - 2018-05-08
- Fixed invalid call in
ValueEnforcer.isEqual
-
AbstractJAXBBuilder
got an explicit possibility to disable XML schema usage - Improved Java version identification by adding support for JEP 223 identifiers
- Kicked Travis Java 9 integration - was unable to find a Maven configuration working locally, in Eclipse and in Travis :(
- Added
IMicroNode.appendChildren
default methods - Extracted
ph-wsclient
project for later use with Java 9 - Added
ICommonsCollection.setAllMapped
- Added class
CommonsMock
- a very simple mocking engine - Added
EMimeContentType.FONT
- Extended
TreeXMLConverter
API to be able to reuse existing trees for filling - Fixed OSGI ServiceProvider configuration
- Fixed invalid call in
- v9.0.2 - 2018-03-22
- Made setter methods of
JAXB*Builder
final so that they can be called from derived constructors - Improved Java 9 compliance
-
EJavaVersion
was changed incompatible to allow support for Java 10 and 11 - Added
ELockType.DEPENDS
enum constant - Added some more
MathHelper.toBig(Decimal|Integer)
overloads so that it can be used without thinking - Different forbidden characters in filenames depending on OS - https://github.com/phax/as2-server/issues/20
- Updated to parent POM 1.10.2
- Made setter methods of
- v9.0.1 - 2018-02-01
- Minor API adoptions
- Updated to BouncyCastle 1.59
- XML validation now works with custom locales as well
- Added
XPathHelper.createXPathFactorySaxonFirst
- Fixed typo in
XPathHelper
-createNewXPathExpression
instead ofcreateNewXPathExpresion
- Updated to parent POM 1.10.0
- v9.0.0 - 2017-11-05
- Changed
com.helger.commons.function
package tocom.helger.commons.functional
- Replaced
IFilter
withIPredicate
- Replaced
IFilterWithParameter
withIBiPredicate
- Changed
ManagedExecutorService
toExecutorServiceHelper
- Removed class
CCharset
- useStandardCharsets
instead - Added classes
PathHelper
andPathOperations
- Moved class
XMLResourceBundle
to ph-xml - Removed some deprecated
CharsetManager
methods - Reworked
format
package - Removed deprecated 'Mutable*' constructors because of weird defaults
- Removed deprecated methods that handle: greater than, greater or equals, lower than and lower or equals
- Made
MicroTypeConverter
type-safe - Ensure all
Predicate
usages use? super
- Ensure all
Consumer
usages use? super
- Ensure all
Function
usages use? super
/? extends
where applicable - Ensure all
Supplier
usages use? extends
- Moved
ThreadHelper
to packagecom.helger.commons.concurrent
- Removed deprecated methods in
SimpleLSResourceResolver
- Removed package
com.helger.commons.io.monitor
- Removed package
com.helger.commons.scope.singletons
-
@ReturnsMutableObject
does not require a value anymore (but you can still pass one of course) - Extracted
ph-scopes
project to lower size ofph-commons
slightly - Extracted
ph-collection
project to lower size ofph-commons
slightly - Removed default methods from
IAggregator
- Added reverse interface
ISplitter
- Changed caching API to use a function instead of a protected methods
- Integrated
ph-cli
here - Improved and extended traits API
- JAXB components can now use a safe way to write XML with special chars
- JAXB components can now read XML documents with a BOM
- Extracted ph-oton DAO handling into new subproject
ph-dao
- Replaced
SMap
withStringMap
- An
Automatic-Module-Name
was added after beta 1 - Removed support for the application and session application scopes
- Changed
- v8.6.6 - 2017-07-12
- Extended
CSVWriter
API -
SimpleLSResourceResolver
can now handle fat jars from Spring Boot (issue #8) - Extracted
DefaultResourceResolver
fromSimpleLSResourceResolver
and added in ph-commons - Added rudimentary support for
Path
based APIs - Added
WatchService
basedWatchDir
in favor ofFileMonitor
- Extended
- v8.6.5 - 2017-05-19
- Deprecated all default Mutable* constructors, because the default values were partially confusing
- Added new class
DefaultEntityResolver
using a base URL for resolving. - Extracted and renamed classes
PDTZoneID
andPDTMask
- Extended
ILocalDatePeriod
API - Added additional specialized type converters to
BigDecimal
- Unified naming for methods that handle: greater than, greater or equals, lower than and lower or equals
- Added new type converters for
Month
,DayOfWeek
andMonthDay
-
RuntimeException
s during type conversion are encapsulated inTypeConverterException
s.
- v8.6.4 - 2017-04-12
- Some performance improvements
- Fixed error in
StringHelper.replaceMultipleAsString
- Extended
StringHelper
with encode/decode methods - Added new class
NonBlockingCharArrayWriter
- Deprecated some
CharsetManager
methods
- v8.6.3 - 2017-03-28
- Deprecated some String-based
FileHelper
APIs - Improved CertificateHelper parsing
- Added
IPredicate
- a serializablePredicate
interface - Added
IBiPredicate
- a serializableBiPredicate
interface - Added
IBiConsumer
- a serializableBiConsumer
interface - Added
IBiFunction
- a serializableBiFunction
interface - Added
IComparable
- a serializable and extendedComparable
interface - Extended
StringHelper
API - Extended
MicroWriter
API - Extended
XMLWriter
API - Extended
PDTHelper
API - Deprecated
EMonth
andEDayOfWeek
in favour of JDKMonth
andDayOfWeek
- Deprecated some String-based
- v8.6.2 - 2017-02-15
- Extended
XMLSystemProperties
API - Allowing
JAXBDocumentType
objects to not have an@XmlSchema
annotation - Deprecated
CCharset
- useStandardCharsets
instead - Deprecated ToStringGenerator
toString()
- usegetToString()
instead
- Extended
- v8.6.1 - 2017-01-23
-
*MultilingualText
is now based on ICommonsOrderedMap - Extended
GlobalDebug
API slightly -
JAXBDocumentType
implements equals/hashCode -
WSClientConfig
not using chunked encoding by default
-
- v8.6.0 - 2017-01-09
- Removed deprecated methods
- Minor API extensions
- v8.5.6 - 2016-12-10
- Extended APIs
- Fixed a nasty bug with date/time formatting due to pattern modifications (introduced in 8.5.5)
- v8.5.5 - 2016-11-25
- Extended APIs
- v8.5.4 - 2016-11-08
- Fixed a nasty NPE
- v8.5.3 - 2016-11-08
- Added support for
EntityResolver2
in MicroXML parsing - Extended some APIs
- Added support for
- v8.5.2 - 2016-09-25
- Fixed an error with JAXB context creation if @XMLRootElement was used
- Improved consistency of IHasText(WithArgs) and IHasDisplayText(WithArgs) so that they can be used interchangeably
- Extended collection API slightly
- v8.5.1 - 2016-09-12
- Fixed error text retrieval in Single Error; further API extensions and improvements
- v8.5.0 - 2016-09-09
- Reworked the error objects so that there is now a single error handling object. The old objects are retained for backwards compatibility.
- v8.4.0 - 2016-08-21
- Started adding JDK 9 compatibility
- Added new interface
IWriteToStream
- Added support for new Message digest and Mac algorithms
- Added new functional interfaces (IThrowingSupplier, IThrowingConsumer and IThrowingFunction) with customizable Exception type
- Deprecated some legacy interfaces and adapters that may lead to a compiler error (!)
- v8.3.0 - 2016-08-02
- Moved the following sub-projects into this project: ph-datetime, ph-json, ph-charset, ph-graph, ph-matrix and ph-settings
- v8.2.2 - 2016-07-22
- v8.2.1 - 2016-07-15
- v8.2.0 - 2016-07-10
- Added new sub-project
ph-security
that contains MessageDigest, HMac, Keystore etc. stuff
- Added new sub-project
- v8.1.0 - 2016-06-26:
- Minor small API optimizations for JAXB.
-
ValueEnforcer
supports Supplier` functional interface. - GZIP based readable and writable resources added.
- v8.0.0 - 2016-06-08:
- It splits the old big ph-commons library into slightly smaller pieces:
ph-commons
,ph-xml
,ph-jaxb
,ph-tree
andph-less-commons
. - The first version that requires JDK 8
- Multiple API changes to better support functional style
- Base32 codec added
- It splits the old big ph-commons library into slightly smaller pieces:
On Twitter: Follow @philiphelger
Donation link: https://paypal.me/PhilipHelger
It is appreciated if you star the GitHub project if you like it.