-
Notifications
You must be signed in to change notification settings - Fork 19
News and noteworthy
- v12.x [Java 17] - is in development
- v11.x [Java 11] - critical fixes are backported
- v10.x [Java 1.8] - not maintained anymore
- v9.x and older [Java 1.8] - not maintained anymore
v12.1.0 - 2025-11-02
- Changed from Jakarta Nullable annotations to JSpecify. See #54 - thx @vlsi. Backward incompatible change.
- Extracted submodule
ph-csvcontaining the CSV handling. This also changed the package of the classes fromcom.helger.commons.csvtocom.helger.csv. Backward incompatible change. -
SafeXMLStreamWriternow correctly honoursXMLWriterSettings.SerializeXMLDeclarationsetting
v12.0.4 - 2025-10-19
- Reverted back from
Map.entrytonew MapEntry<>due tonull-issues
v12.0.3 - 2025-10-03
- Updated to JAXB 4.0.6
- Added
JDK_25to enumEJavaVersion - Fixed bug in
PDTDisplayHelper.getPeriodTextin case where same day but earlier time is used. See https://github.com/phax/phoss-smp/issues/383
v12.0.2 - 2025-09-22
- Updated to BouncyCastle 1.82
- Made method
BigHelper.equalValuesnull-safe - Added overloads of
GenericReflection.newInstancewith a custom Exception consumer
v12.0.1 - 2025-09-19
- Added overloads
SimpleUrl.add (String, int|long) - Added possibility to customize
GenericJAXBMarshaller.xmlWriterSettings
v12.0.0 - 2025-08-24
- Extracted new submodule
ph-url - Added new annotation
UsedInGeneratedCode - Added new methods to
JAXBHelperto handle JAXBxs:anymappings - Renamed all methods in class
TestHelperso that it uses an uppercaseCinhashCodeorHashCode - Renamed class
URLCodectoRFC3986Codec - Renamed interface
IPrimitiveConverterTotoITypeConverterTo - Renamed interface
IHasPrimitiveConvertertoIHasTypeConverterToand renamed method togetTypeConverterTo() - Added new trait interface
IGenericMapAdderTrait - Renamed
ICommonsMap.addAlltoputAllIfNotNull - Added new class
TypeConverterToAny - Renamed class
PrimitiveConvererToIJsontoTypeConverterToIJson - Renamed package
com.helger.base.traitstocom.helger.base.trait - Renamed
ICommonsIterable.getCountmethods tosize - Interface
ICommonsIterablealready implementsIHasSize - Extracted class
URLCleanserand movedURLHelpertoph-base - Moved class
URNHelpertoph-base - Added new class
URLBuilder
v12.0.0-rc1 - 2025-08-20
- The baseline is now Java 17 - older Java versions are no longer supported
- Uses parent-pom v3.0.0
- Completely restructured the libraries, so that smaller, functional JARs are created instead of one big
ph-commonsJAR- Added new submodule
ph-annotationsincluding the contents of JSR305- Only
NonnullandNullableare taken from thejakarta.annotationpackage instead
- Only
- Extracted new submodules
ph-base,ph-unittest-support,ph-typeconvert,ph-statistics,ph-cache,ph-io,ph-unittest-support-ext,ph-text,ph-diagnostics,ph-config-json,ph-mimeandph-http - Removed submodule
ph-less-commons- the remainders ended up inph-commons - Integrated
ph-web/ph-httpmodule content into this repository - If you are using JSON for configuration, make sure to include the new submodule
ph-config-jsonas well
- Added new submodule
- Movings
- Moved all annotations from package
com.helger.commons.annotationto submoduleph-annotations - Moved basically all classes back and forth between the modules - re-organizing your imports should do 95% of the work
- The
ArrayHelper.EMPTY_*constants were moved to classCGlobal - Moved constant
INITIAL_HASHCODEfromHashCodeGeneratortoHashCodeCalculator - Moved methods
CollectionHelper.new*toCollectionHelperExt.create*
- Moved all annotations from package
- Removals
- Removed classes
SecurityManagerHelper,ReflectionSecurityManager,IPrivilegedActionandAccessControllerHelperbecause the Java SecurityManager is deprecated for removal - Removed deprecated package
com.helger.jaxb.builder - Removed all methods marked as deprecated for removal
- Removed class
IJsonParserCustomizeCallback - Removed method
ABNF.isHexDigitCaseInsensitivein favour ofisHexDigit(was misreading the RFC)
- Removed classes
- Renamings
- Renamed class
SingleError.AbstractBuildertoAbstractSingleErrorBuilder - Renamed class
SingleError.BuildertoSingleErrorBuilder - Renamed class
Option.BuildertoOptionBuilder - Renamed class
KeyStoreAndKeyDescriptor.KeyStoreAndKeyDescriptorBuildertoKeyStoreAndKeyDescriptorBuilder - Renamed class
KeyStoreDescriptor.KeyStoreDescriptorBuildertoKeyStoreDescriptorBuilder - Renamed class
TrustStoreDescriptor.TrustStoreDescriptorBuildertoTrustStoreDescriptorBuilder - Renamed class
BasicThreadFactory.BuildertoBasicThreadFactoryBuilder - Renamed class
JsonReader.BuildertoJsonReader.JsonBuilder - Renamed methods
IMicroNode.append*toadd* - Renamed class
ABNFtoRFC5234Helper - Renamed class
ByteBuffersInputStreamtoMultiByteBufferInputStream - Renamed class
CommonsTestHelpertoTestHelper
- Renamed class
- Additions
- Added classes
(I)JsonParserSettings - Added new class
CacheBuilder - Added new constants
CMimeType.APPLICATION_EDIFACTCMimeType.APPLICATION_EDI_X12
- Via
FileHelper.setWarnOnIssuesthe warnings can be enabled or disabled - Added new interface
IWriteToWriter - Extended
IAppendableandHashCodeCalculatorwith overloads that take arrays with offset and length
- Added classes
- Incompatible changes
-
EqualsHelperandHashCodeGeneratorno longer work based on the SPI based registration. Instead the non-default cases need to be handled manually - By default the global debug mode (
GlobalDebug) is disabled - Extended the
JsonReaderbuilder to include all the settings directly - Extracted all collection related methods from
EqualsHelpertoCollectionEqualsHelper - Extracted functionality from
StringHelperinto new classes:StringHex,StringImplode,StringRemove,StringReplace - Extracted the
BigDecimalandBigIntegerfunctionality fromMathHelpertoBigHelper - Extracted functionality from
CollectionHelperinto new classes:CollectionFind,CollectionSort - The following SPI interfaces were changed:
-
com.helger.commons.thirdparty.IThirdPartyModuleProviderSPI->com.helger.base.thirdparty.IThirdPartyModuleProviderSPI
-
- The methods
IJsonObject.addJsonwhere renamed toaddonly
-
- Deprecations
-
StringHelper.hasTextwas deprecated in favour ofStringHelper.isNotEmpty -
StringHelper.hasNoTextwas deprecated in favour ofStringHelper.isEmpty
-
v11.2.6 - 2025-06-10
- Updated to BouncyCastle 1.81
v11.2.5 - 2025-05-19
- Fixed a bug in
ConfigWithFallback.getAsCharArrayOrFallbackso that fallbacks were performed in the wrong scenario
v11.2.4 - 2025-05-14
- Increased maximum string length for IDs created by
GlobalIDFactory. See #45 - thx @andreasa-winenet - Added new class
StringIDFromUUIDFactoryusing random UUIDs as String IDs
v11.2.3 - 2025-05-13
- Added support for Java 24
- The default XML entity expansion limit for Java 24+ is now correctly identified as
2500 - All tests are now also running on Java 24
v11.2.2 - 2025-05-13
- Using the correct locale in
LoadedKey.getLoadErrorandLoadedKeyStore.getLoadError
v11.2.1 - 2025-04-11
- Added method
AbstractMemoryReadableResource.setPathto define a path different from the empty string - Added new enum
ECertificateCheckResultas an enumeration contain X.509 certification validation results - Added new method
CertificateHelper.checkCertificateto verify if an X.509 certificate is valid in several aspects - Added new class
TrustedCACheckerto check if a certificate is based on one of certain CAs - Added new methods to
CertificateHelperto easily access theCNand theOpart of a certificate principal
v11.2.0 - 2025-02-03
- Extended
ISAXReaderSettingsto include the possibility to provide a customSAXParserFactory - Extended the class
EmailAddressHelperwith a methodisValidForSimplePatternto test for email addresses that eventually contain Unicode characters - Added
HasInputStream.createoverload withbyte[]parameter - Added method
IExpirable.isExpiredIn - Added interface
IURLDownloaderto ph-commons - Added class
ExpiringObjectto ph-datetime - Added classes
TrustedCACertificates,CRLCache,CRLDownloader,CRLHelper,AbstractRevocationCheckBuilder,CertificateRevocationCheckerDefaults,ERevocationCheckMode,ERevoked,IRevokedIndicatorandRevocationCheckResultCacheto ph-security - Added method
KeyStoreHelper.getAllTrustedCertificates
v11.1.12 - 2025-01-21
- Updated to BouncyCastle 1.80
- Made sure, that the XML "Secure processing" flag is set anyway in
XMLFactory.createDefaultDocumentBuilderFactoryin case an external XML parser is in the classpath - Extracted the methods
XMLFactory.defaultCustomize(DocumentBuilder|SAXParser|Transformer)Factoryto allow external factories to be secured as well
v11.1.11 - 2024-12-05
- Removed
bcprov-ext-jdk18onfrom the parent pom, as seems to be included inbcprov-jdk18oninstead - Added support for configuration variable default values when used in the form
${property:default} - Added additional
IMicroNode.appendTextoverloads forboolean,intandlong - Deprecated
EXMLSerializeIndent.INDENT_ONLYas well as.getWithIndent()and.getWithoutAlign()
v11.1.10 - 2024-11-08
- Added new method
IConfigWithFallback.getAsCharArrayOrFallback - Added new interfaces
IKeyStoreDescriptor,IKeyStoreAndKeyDescriptorandITrustStoreDescriptorin ph-security - Added new classes
KeyStoreDescriptor,KeyStoreAndKeyDescriptorandTrustStoreDescriptorin ph-security - Added new method
KeyStoreHelper.iterateKeyStore
v11.1.9 - 2024-10-30
- Updated to BouncyCastle 1.79.0
- Added new annotation
ChangeNextMajorRelease - Deprecated
KeyStoreHelper.loadKeyStoreDirectmethods withStringpassword in favour of versions withchar[]password - Added
KeyStoreHelper.loadKeyStoremethods withchar[]as password type - Deprecated
KeyStoreHelper.loadKeyStoremethods withStringpassword 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.getUnifiedValueunified values combine all whitespaces into a single space
v11.1.7 - 2024-09-10
- Updated to BouncyCastle 1.78.1
- Added method
CertificateHelper.isCA - Added additional
Commons...Mapconstructor overloads - Added method
EqualsHelper.identityDifferent - Made sure that
HttpHeaderMap.getUnifiedValueunified values combine all\r,\nand\tinto a single space - The method
EnvVarHelper.getUnifiedSysEnvNamecan 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.withInputStreamDoandIHasInputStream.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
v11.1.4 - 2024-02-15
- Added support to detect Java 21. See PR #39 - thx @janwytze
- Added "LTS" flag on the
EJavaVersionenum entries - The default
ErrorTextProviderwas slightly changed to put the error field in brackets as well - Class
ErrorTextProvider.FormattableItemis 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
finalfrom classVersion - Added new method
IJsonArray.addIfNotEmpty - Added new method
IJsonObject.addIfNotEmpty
v11.1.2 - 2023-08-16
- Added new keystore type
BKSto support the BouncyCastle internal keystore format
v11.1.1 - 2023-08-10
- Updated to BouncyCastle 1.76
- Extended
KeyStoreHelperAPIs to be able to provide custom securityProviderin it. - Renamed
CertificateHelper.getWithPEMHeadertogetCertificateWithPEMHeader - Added overload of
CertificateHelper.convertStringToCertficate
v11.1.0 - 2023-07-31
- Removed the explicit
SuppressFBWarningsclass in favour of an optional include ofspotbugs-annotations. See issue #36 - Changed the constructor parameter of
CollectingSAXErrorHandlerfromSupplier <ErrorList>toSupplier <? extends ErrorList> - Added new interface
IObjectPoolFactoryto extend the functionality of theObjectPoolclass
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
WALListenerto 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
v11.0.4 - 2023-04-29
- Extended the class
JAXBContextCacheKeyto support multiple packages as well - Deprecated a lot of methods from
JAXBContextCachein favour of theJAXBContextCacheKeyfactory method - Fixed an error in
Codepoint.isLowSurrogateandCodepoint.isHighSurrogate - Added support for writing Surrogate pairs in the XML writer
-
XMLFactory.createDefaultTransformerFactoryno longer emits warnings of unsupported features - Added classes
ConditionalLoggerandIHasConditionalLogger
v11.0.3 - 2023-04-16
- Updated to BouncyCastle 1.73
- Deprecated classes
AbstractJAXBBuilderandAbstractWritingJAXBBuilderfor removal - Classes
LoggingJAXBReadExceptionHandlerandLoggingJAXBWriteExceptionHandlerreceived a singleton accessor field - Extended
IKeyStoreTypeinterface with methodisKeyStorePathRequired - Added new enum entry
EKeyStoreType.PKCS11for support of PKCS11 - see PR #34 - thx @sopgreg - Deprecated classes
JAXBDocumentTypeandIJAXBDocumentType - The
GenericJAXBMarshallernow 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)Streambuilders
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.getDividedBigDecimaloverload - Added additional method
IJAXBWriter.getAsElement - Added additional
ArrayHelper.forEachoverload - Using BouncyCastle dependency
org.bouncycastle:bcjmail-jdk18onfor Jakarta usage - Fixed an
ArrayIndexOutOfBoundsExceptionwhen 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
PathToNodeBuilderto be used to customize the building of a path from a DOM node - see issue #31 - Catching
Throwablein classesConcurrentCollectorSingleandConcurrentCollectorMultipleto 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
IConfigurationValueProviderWithPriorityCallbackmethodonConfigurationSourcetoonConfigurationValueProvider -
Added additional overloads of
XMLOffset(Date|Time|DateTime).ofwithoutZoneOffset -
Renamed
JAXBMarshallerHelper.(is|get|set)Sunto(is|get|set)Jakarta- this is an backwards incompatible change, even though that part should not be used externally anyway -
Added new interface
IIterableConfigurationSourceto enumerate all available configuration items -
The default
TransformerFactorycreated inXMLTransformerFactoryuses now the secure reading -
Made silent mode in class
SystemPropertiescustomizable -
Class
GenericJAXBMarshallernow works onValidationEventHandlerdirectly instead of the factory -
Class
GenericJAXBMarhsallernow 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.isLowSurrogateandCodepoint.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
ArrayIndexOutOfBoundsExceptionwhen 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
PathToNodeBuilderto 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
TextVariableHelperthat can be used to replace${bla}like variables - Added new class
ConfigWithFallbackthat 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.isEmptyandStringHelper.isNotEmptyfor more consistent naming - Fixed JAXB formatting which partially indented wrong
- Added
-
v10.1.7 - 2022-06-24
- Extended
IErrorwith an optional error date time - The algorithm name in
PasswordHashmay not exceed 100 characters - Added
CMimeType.APPLICATION_X509_USER_CERT - Extended
IJsonObjectAPI slightly - Added new methods
XMLHelper.iterateChildrenandXMLHelper.recursiveIterateChildren - Added new enum entries
EXMLParserFeature.ACCESS_EXTERNAL_* - Added new class
NaturalNumericOrderComparator - Added new class
RecursiveNodeIteratorand 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_DIFFERENCEfrom 1e-5 to 1e-4 - Fixed a potential
ConcurrentModificationExceptioninAnnotationUsageCachein 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
getAndIncandincAndGetto theMutable*classes -
IConfig.forEachConfigurationValueProvidernow iterates the priorities correctly when aMultiConfigurationValueProvideris used. - Added support for JDK 15, 16 and 17 in class
EJavaVersion
-
v10.1.4 - 2021-10-30
- Made
AbstractReadOnlyMapBasedMultilingualTextimplementSerializable - Added special
ReadableResourceStringfactory methods for UTF-8 - Class
PasswordSaltnow preferring factory methods over the constructors - The default password salt length was reduced from 512 to 32
-
GlobalIDFactorynow limits String based IDs to a maximum length of 20 for easy DB usage - Fixed an issue, that
XMLOffset(Date|Time|DateTime).parsedid 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.startsWithoverloads -
IHasByteArray.getAllBytesnow honours offset and size - Added new method
IHasByteArray.getBytesAsStringto 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
NoClassDefFoundErrorwhen using a different JAXB implementation - Fixed an error that
PDTToStringwith anOffsetDatewould try to use a time formatter -
PDTToStringnow handlesZoneOffsetandZoneIdbetter - Added
XMLHelper.getChildElementOfNamesas a sanity method - Favouring
XMLOffset*.toStringover thegetAsStringvariant 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*StreamBuilderwithlimit (Long) - Added
Predicates.andandPredicates.or - Create new classes
XMLOffsetDateandAdapterXMLOffsetDatesimilar toOffsetDatebut with an optional zone offset - Create new classes
XMLOffsetTimeandAdapterXMLOffsetTimesimilar toOffsetTimebut with an optional zone offset - Create new classes
XMLOffsetDateTimeandAdapterXMLOffsetDateTimesimilar toOffsetDateTimebut with an optional zone offset - Added method
Version.hasQualifier - Changed
Version.parseto use the new format by default. AddedVersion.parseDotOnlyfor the old version. - Added missing
PDTToString.getAsStringoverloads - 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.helgertocom.helger.commons - The submodule
ph-xmlno longer depends onph-collection - Separated the JAXB adapter classes and
JAXBHelperto 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
Serializablefrom base interfaces - Removed the serializable functional specializations (
IFunction,ISupplier,IConsumer,IPredicate,IBiConsumer,IBiFunction,IBiPredicate,NamespaceContext) -
GenericJAXBMarshallernow has a chaining API - Made
MimeTypeParserExceptiona checked Exception - Added
CertificateHelper.getEncodedCertificate() - Fixed potential NPE in
GenericJAXBMarshaller.toString() - Removed
TimeValuein favour ofDuration - Added
StopWatch.getLapDuration () - Removed
ResourceStreamSourceandResourceStreamResult- see https://saxonica.plan.io/issues/4833 for the reasons - Changed
JsonReader.Buildermethod names to not useset - The calling order of "useBufferedReader" and "dontCloseSource" compared to "source" in
JsonReader.Builderis not longer of importance - Changed the
SingleError.builder()to use method names withoutset - Added more
SingleErrorbuildererrorLocationoverloads - Removed the class
ScriptHelperas Nashorn gets removed in JDK 15 (see JEP 335) - Added new interfaces
IBuilderandIResettableBuilder - Extended
HTTPHeaderMapAPI - Fixed the data type of the custom HTTP headers in
WSClientConfig - Changed the default value
DEFAULT_QUOTE_IF_NECESSARYfromtruetofalse - Deprecated all the "multi map" classes in
ph-collection. With thecomputeIfAbsentfunctions, most of the simplifications can be achieved with runtime features. They will be removed in the next major version. - Extended
ILocalDatePeriodbased on issue #23 - Added classes
ILocalDateTimePeriodandLocalDateTimePeriod - Added class
PasswordHashCreatorPBKDF2_SHA256_1000_48for better PBKDF2 usage - Deprecated class
PasswordHashCreatorPBKDF2_1000_48because it uses the PBKDF2 with the SHA1 hash - Added new class
StringHelper.ImploderBuilderthat 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.isValidURNto check RFC 2141 compliance - Deprecated some methods in
StreamHelperthat should be replaced with calls to the new builder - Added
CommonsHashSet.createFilteredfactory methods - Added new class
AdapterOffsetTime - Added support for
OffsetTimein PDT* classes - Made the JAXB adapters for
AdapterOffsetDateTimeandAdapterZonedDateTimemore resilient to read data without time zone offsets as well - Added class
OffsetDatefrom ThreeTen-Extra project for XML parsing - Added new methods in
PDTFactorythat 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
CommonsHashMapinstead ofCommonsWeakHashMapfor 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
IConfigAPI to easily reload all resource based configuration files - New interface
IAddableByTraitto be used as the constraint for the element type ofIGenericAdderTrait
- Added new JAXB Adapter class
- v9.4.7 - 2020-08-28
- Extended
IPrivilegedActionAPI forSecurityprovider APIs - Extended
IJsonArrayAPI to iterate only child arrays, objects or values - Scope debugging no longer activates itself if the log level is set to debug
- Extended
PDTWebDateHelperto handleLocalTimevalues 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.safeParseMimeTypedoes 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.fileandconfig.urlor the environment variable alternativesCONFIG_RESOURCE,CONFIG_RESOURCES,CONFIG_FILEandCONFIG_URL. - Added possibility to
reloadfor resource-based configuration sources - Fixed a potential NPE in
IJsonObject.getValue (String) - Added
EqualsHelper.equalsCustomusing aBiPredicate - Extended
IConfigAPI to receive theIConfigurationSourceAND the value to determine the source of the configuration value (backwards incompatible change) - Changed the handling of the
Consumersin theConfigimplementation 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
NonBlockingCharArrayWriterwith non-throwingwriteoverloads - Changed
IJsonObjectAPI to favouraddJsoninstead ofaddbecause 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.onGlobalEndto reduce the possibility of a dead-lock - Made
ThreadGroupofBasicThreadFactorycustomizable - Updated to BouncyCastle 1.65
- The
IMissingLocaleHandleris now also called inLocaleHelper.getLocaleif the input strings are all empty - Improved the resolution rules for
LocaleCache,LanguageCacheandCountryCacheon edge cases. - Extracted overridable
GenericJAXBMarshaller.getJAXBContext - Added possibility to cache
JAXBContextobjects 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.urlDecodeis now backwards compatible - Added
URLHelper.urlDecodeOrNullandurlDecodeOrDefault
- 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)
-
JAXBContextCachehas now a method to switch silent mode on or off - Added new constant
GlobalDebug.DEFAULT_SILENT_MODEfor the default silent mode setting - Added new method
CertificateHelper.convertByteArrayToCertficateOrNull - Added new class
PDTDisplayHelper - Added new method
CertificateHelper.convertStringToPrivateKey - Extended the
JsonWriterAPI to also write to an OutputStream - Added new methods
EmailAddress.createOnDemand -
URLHelper.urlEncodeandURLHelper.urlDecodenow usesURLCodec - Deprecated
ICommonsIterable.forEachin 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
-
PropertiesHelpergot new APIs withCharsetto read properties with character sets other than ISO-8859-1 - Started new subproject
ph-configwith a more intelligent configuration handling - Added JDK 14 as a known version
- Added silent mode to
TypeConverter,CountryCache,LanguageCache,ObjectPool,LocaleCache - Added new
JAXBDocumentTypeconstructor for more flexible use - Changed names of
SimpleReadWriteLock.(read|write)Lockedwith primitive suppliers - Changed names of
SimpleLock.lockedwith primitive suppliers - Added
SimpleReadWriteLock.(read|write)LockedGet(Throwing)suppliers
- v9.3.9 - 2019-12-11
- Made
ClassLoaderHelper.getResourcemore robust - Updated "mime-type-info.xml" list with shared-mime-info-spec 1.15
- Moved code from
AbstractWALDAOdown toAbstractDAOfor later reuse. - Reworked
FileIntIDFactoryandFileLongIDFactoryto be more error resistant. - Added support for the "jrt:" protocol
- Added support for JDK 13
- Extended
LocaleCachewith an API to specify what happens if a Locale is not present
- Made
- v9.3.8 - 2019-11-07
- Fixed method name in
RFC2616Codec-getMaximumEncodedLengthinstead ofgetEncodedLength; addedgetMaximumDecodedLength - Avoid double quoting in
HttpHeaderMap.getUnifiedValueif the value already seems to be quoted - Updated to BouncyCastle 1.64
- Added new interface
IBooleanConsumer - Added new method
CertificateHelper.isCertificateValidPerNow - Improved performance of
JsonParserwhen position tracking is disabled - Added possibility to read multiple JSON objects from a single source
- Added new classes
LoggingReaderandLoggingWriter - Added new classes
CountingReaderandCountingWriter -
JsonParser.parsenow returns an enum indicating EOI or not (incompatible change) - Improved performance of JsonParser by reusing buffers internally
- Added new class
MappedCachethat 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
IJAXBValidatorAPI to have avalidatemethod that takes an outsideErrorList - Updated to BouncyCastle 1.63
- Converted some methods in
IMicroQNameto default methods - Extended
HttpHeaderMapAPI to makequote if necessarycustomizable
- Extended
- v9.3.6 - 2019-08-27
- Extended the
StreamHelperAPI with an even more flexiblecopyInputStreamToOutputStreammethod -
StreamHelper.getCopy[WithLimit]can now returnnullif copying fails - Added new classes around
com.helger.commons.codec.ICharArrayCodec - Added new class
RFC2616Codecto correctly encode and decode HTTP header values - Added new option in
HttpHeaderMap.getUnifiedValueto automatically quote the values if necessary - Added new overloads in
StackTraceHelperto 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
EURLProtocolentriesCIDandMIDfrom RFC 2392 - Minor speed ups in several places
- Added overload of
PDTXMLConverter.getXMLCalendarDatewith timezone offset in minutes - Added new
JsonReader.Buileroverloads -
LocaleHelper.getValidCountryCodenow 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
VerySecureRandominitialization -setSeedmay 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)Objectfor security reasons - Added new option
Base64.DO_NEWLINE_CRLFto use\r\nas newline separator instead of\n
- Added new overloads for
- v9.3.3 - 2019-05-06
- Added
ICommonsIterablemethodsfindFirstIndexandfindLastIndex - 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
JsonReadernow has an explicitJsonReader.Builderclass to simplify the usage - New class
SettingsPersistenceJsonto be able to read and write settings in JSON format
- Added
- v9.3.2 - 2019-03-28
- Logging a warning in
VerySecureRandomif initial seeding takes more than 500 milliseconds - If the system property
ph.disable-securerandomwith the value oftrueis present, the usage ofSecureRandomin classRandomHelperis disabled by default. Respective logging was added. - The system property
ph.securerandom-reseed-intervalwith a numeric value ≥ 0 can be used to set the default "re-seed interval" for classVerySecureRandom -
VerySecureRandomusesNativePRNGNonBlockingas the initialSecureRandomfor faster Linux initialization.
- Logging a warning in
- v9.3.1 - 2019-03-06
- Made
IJsonWriterSettingsserializable - Updated to BouncyCastle 1.61
-
nullvalues in settings can be serialized now -
HttpHeaderMapmethodsforEachSingleHeaderandforEachHeaderLinenow use the unified values
- Made
- v9.3.0 - 2019-02-07
- Restored the
Automatic-Module-Nameofcom.helger.scopes - Moved method
exceptionCallbacksto base classAbstractJAXBBuilder - Exception handler in
GenericJAXBMarshallernow based on ´CallbackList` - incompatible change - Fixed the conversion from
StringtoInteger,LongandShortso thatnullis returned on error (therefore throwing aTypeConverterException) -
IGetter*TraitgetAs...methods now returnnullon error instead of throwing aTypeConverterException
- Restored the
- v9.2.1 - 2019-01-23
- Improved API of
JsonParseException - Added additional default
MicroTypeConverterregistrations (File,Path,URLandURI) - Added special implementation of
IHasInputStreamforNonBlockingByteArrayOutputStream - Added enum entry
EXMLSerializeXMLDeclaration.EMIT_NO_NEWLINE - Extended internal API of
AbstractMapBasedWALDAOto allow for not invoking the callbacks - Added method
ConfigFileBuilder.addPathFromEnvVarto get the configuration file path from an environment variable - Added new keystore type
BCFKS- see issue #13 - Added new constructor for
MapEntryto takeMap.Entry - Added new default methods to classes
IHasDimension*(isLandscape, isPortrait and isQuadratic) -
MimeTypeContentis now serializable - The OSGI export for submodule
ph-scopeswas corrected - see issue #14 - Added static factory methods for
ByteArrayWrapper
- Improved API of
- v9.2.0 - 2018-11-21
- Undo deprecations of
ValueEnforcershort and float methods. - Simplified the
IMultilingualTextinterface and implementations (backwards incompatible) - Removed all deprecated, unused methods
-
ICommonsIterableis no longer Serializable. OnlyICommonsCollectionis serializable. -
IHasDisplayTextis no longer Serializable. -
IDisplayTextProvideris no longer Serializable. -
IHasTextis no longer Serializable. - Changed return type of
SystemProperties.setPropertyValue()toEChange -
JAXBDocumentTypetakesList<ClassPathResource>instead ofList<String>to avoid ClassLoader issues - Changed
PBCProviderinitialization to log a warning instead of throwing an exception - Added
StringHelpermethodsgetQuotedandappendQuoted - Improved Java 10/Java 11 support
- Moved
CloneHelper.getClonedJAXBElementto new classJAXBHelperinph-jaxbsubproject (Java 11 issue) - Moved class
WSTestHelperto subprojectph-wsclient(Java 11 issue) - First version to compile with OracleJDK 11 and OpenJDK 11
- Added methods in
PDTFactoryto remove microseconds and nanoseconds from(Zoned|Offset|Local)DateTime - Added support for silent mode in
AbstractDAO - Changed
DOMReader.readXMLDOMto not throw an Exception. Provide a suitableErrorHandlerinstead. -
WrappedCollectingSAXErrorHandleris now derived fromCollectingSAXErrorHandler
- Undo deprecations of
- v9.1.8 - 2018-10-24
- Added special support for properties
java.runtime.versionandjava.runtime.namein classSystemProperties - Class
JavaVersionHelpernow supports AdoptOpenJDK versions -
HttpHeaderMapstores the value case sensitive internally and compares case sensitive instead (issue #11) - Added
PDTConfig.getUTCTimeZone () - Fixed a conversion error from
GregorianCalendartoXMLGregorianCalendarif 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
JsonReaderAPI to add the possibility to pass in anIJsonParserCustomizeCallbackinstance - 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
MacInputStreamandMacOutputStream - Deprecated some JSON APIs with
byte,shortandfloat - Overloaded
WrappedOutputStream.write (byte[],int,int)for quicker pass-through. Please ensure that all derived classes also overload this method. -
JSONValuehandling forlongvalues in theintrange was changed to storeintinternally. This improves testability independent of the value range. - Added new
StringHelper.contains(Any|No|Only)methods forCharSequenceandStringobjects
- Added new class
- v9.1.6 - 2018-10-01
- Added
CHttpHeader.X_CONTENT_SECURITY_POLICY_REPORT_ONLY - Added
ValueEnforcer.isNE0methods - Deprecated
ValueEnforcermethods forshortandfloat - Reworked the
VerySecureRandominitialization to use a native PRNG for initial seeding - Improved customizability of
AbstractWALDAOin case WAL recovery failed - Extended
IHas...DateTimeAPIs - Fixed OSGI SPI configuration for ph-bc
- Added
- v9.1.5 - 2018-09-09
- Extended
WSClientConfigAPI - Extended
GenericJAXBMarshallerAPI - Class
IJAXBReadernow tries to set systemID forIReadableResource,FileandPathparameters. - Extended
PDTFactoryslightly - Fixed potential NPE when an
AbstractWALDAOis used without a backing file -
DefaultTransformURIResolvergot 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
LogHelperto have overloads withSupplier<String> - Added new
Commons...Mapconstructors with parametersMap, Function, Function - Added new class
LanguageCache - Added new
CommonsArrayListstatic factory methods - Deprecated all the
ChangeLogclasses - they will be moved to ph-less-commons in v9.2 - Added new interface
IHasByteArray - Implementing
IHasByteArrayinReadableResourceByteArray,ByteArrayInputStreamProvider,MessageDigestValue - Added new class
ByteArrayWrapper - Added new method
NonBlockingByteArrayOutputStream.getBufferOrCopy()that copies only on demand - Added new
ArrayHelper.startsWithoverloads - Added static factory methods in
CommonsCopyOnWriteArrayList - The internal logger name was changed from
s_aLoggertoLOGGER - Extended
IPrivilegedActionwith new static methods - Added new class
Predicateswith basic typed predicates for primitive types - Added some static
IBooleanPredicatefactory methods - Added
ToStringGenerator.appendPasswordIfmethod - Added equals implementation to
PasswordAuthentication
- v9.1.2 - 2018-06-19
- Made setters of
WSClientConfigfinal - Changed method name in
CharsetHelperfromgetCharsetFromNameOrNulltogetCharsetFromNameOrDefault - Added new sub-project
ph-bcwith some common BouncyCastle helper methods - Added OCSP MIME type constants
- Extended
XMLTransformerFactoryAPI 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 -
AbstractJAXBBuildergot 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.appendChildrendefault methods - Extracted
ph-wsclientproject for later use with Java 9 - Added
ICommonsCollection.setAllMapped - Added class
CommonsMock- a very simple mocking engine - Added
EMimeContentType.FONT - Extended
TreeXMLConverterAPI 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*Builderfinal so that they can be called from derived constructors - Improved Java 9 compliance
-
EJavaVersionwas changed incompatible to allow support for Java 10 and 11 - Added
ELockType.DEPENDSenum 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-createNewXPathExpressioninstead ofcreateNewXPathExpresion - Updated to parent POM 1.10.0
- v9.0.0 - 2017-11-05
- Changed
com.helger.commons.functionpackage tocom.helger.commons.functional - Replaced
IFilterwithIPredicate - Replaced
IFilterWithParameterwithIBiPredicate - Changed
ManagedExecutorServicetoExecutorServiceHelper - Removed class
CCharset- useStandardCharsetsinstead - Added classes
PathHelperandPathOperations - Moved class
XMLResourceBundleto ph-xml - Removed some deprecated
CharsetManagermethods - Reworked
formatpackage - 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
MicroTypeConvertertype-safe - Ensure all
Predicateusages use? super - Ensure all
Consumerusages use? super - Ensure all
Functionusages use? super/? extendswhere applicable - Ensure all
Supplierusages use? extends - Moved
ThreadHelperto packagecom.helger.commons.concurrent - Removed deprecated methods in
SimpleLSResourceResolver - Removed package
com.helger.commons.io.monitor - Removed package
com.helger.commons.scope.singletons -
@ReturnsMutableObjectdoes not require a value anymore (but you can still pass one of course) - Extracted
ph-scopesproject to lower size ofph-commonsslightly - Extracted
ph-collectionproject to lower size ofph-commonsslightly - Removed default methods from
IAggregator - Added reverse interface
ISplitter - Changed caching API to use a function instead of a protected methods
- Integrated
ph-clihere - 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
SMapwithStringMap - An
Automatic-Module-Namewas added after beta 1 - Removed support for the application and session application scopes
- Changed
- v8.6.6 - 2017-07-12
- Extended
CSVWriterAPI -
SimpleLSResourceResolvercan now handle fat jars from Spring Boot (issue #8) - Extracted
DefaultResourceResolverfromSimpleLSResourceResolverand added in ph-commons - Added rudimentary support for
Pathbased APIs - Added
WatchServicebasedWatchDirin favor ofFileMonitor
- Extended
- v8.6.5 - 2017-05-19
- Deprecated all default Mutable* constructors, because the default values were partially confusing
- Added new class
DefaultEntityResolverusing a base URL for resolving. - Extracted and renamed classes
PDTZoneIDandPDTMask - Extended
ILocalDatePeriodAPI - 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,DayOfWeekandMonthDay -
RuntimeExceptions during type conversion are encapsulated inTypeConverterExceptions.
- v8.6.4 - 2017-04-12
- Some performance improvements
- Fixed error in
StringHelper.replaceMultipleAsString - Extended
StringHelperwith encode/decode methods - Added new class
NonBlockingCharArrayWriter - Deprecated some
CharsetManagermethods
- v8.6.3 - 2017-03-28
- Deprecated some String-based
FileHelperAPIs - Improved CertificateHelper parsing
- Added
IPredicate- a serializablePredicateinterface - Added
IBiPredicate- a serializableBiPredicateinterface - Added
IBiConsumer- a serializableBiConsumerinterface - Added
IBiFunction- a serializableBiFunctioninterface - Added
IComparable- a serializable and extendedComparableinterface - Extended
StringHelperAPI - Extended
MicroWriterAPI - Extended
XMLWriterAPI - Extended
PDTHelperAPI - Deprecated
EMonthandEDayOfWeekin favour of JDKMonthandDayOfWeek
- Deprecated some String-based
- v8.6.2 - 2017-02-15
- Extended
XMLSystemPropertiesAPI - Allowing
JAXBDocumentTypeobjects to not have an@XmlSchemaannotation - Deprecated
CCharset- useStandardCharsetsinstead - Deprecated ToStringGenerator
toString()- usegetToString()instead
- Extended
- v8.6.1 - 2017-01-23
-
*MultilingualTextis now based on ICommonsOrderedMap - Extended
GlobalDebugAPI slightly -
JAXBDocumentTypeimplements equals/hashCode -
WSClientConfignot 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
EntityResolver2in 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-securitythat contains MessageDigest, HMac, Keystore etc. stuff
- Added new sub-project
- v8.1.0 - 2016-06-26:
- Minor small API optimizations for JAXB.
-
ValueEnforcersupports 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-treeandph-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.