Skip to content

News and noteworthy

Philip Helger edited this page Nov 8, 2024 · 124 revisions

Maintenance

  • 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

Releases

  • v11.1.10 - 2024-11-08
    • Added new method IConfigWithFallback.getAsCharArrayOrFallback
    • Added new interfaces IKeyStoreDescriptor, IKeyStoreAndKeyDescriptor and ITrustStoreDescriptor in ph-security
    • Added new classes KeyStoreDescriptor, KeyStoreAndKeyDescriptor and TrustStoreDescriptor in 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.loadKeyStoreDirect methods with String password in favour of versions with char[] password
    • Added KeyStoreHelper.loadKeyStore methods with char[] as password type
    • Deprecated KeyStoreHelper.loadKeyStore methods with String password in favour of versions with char[] 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
  • 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 and IHasInputStream.withBufferedInputStreamDo
    • Added new interface method IHasByteArray.isPartialArray
    • Added build compatibility with Java 21
    • Deprecated method ICommonsList.getFirst() in favour of ICommonsList.getFirstOrNull() because of clash with JDK 21 API extension. See issue #42
    • Deprecated method ICommonsList.getLast() in favour of ICommonsList.getLastOrNull() because of clash with JDK 21 API extension. See issue #42
    • Deprecated method ICommonsList.removeFirst() in favour of ICommonsList.removeFirstOrNull() because of clash with JDK 21 API extension. See issue #42
    • Deprecated method ICommonsList.removeLast() in favour of ICommonsList.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 EJavaVersion enum entries
    • The default ErrorTextProvider was slightly changed to put the error field in brackets as well
    • Class ErrorTextProvider.FormattableItem is no longer final
    • 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 class Version
    • 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
  • v11.1.1 - 2023-08-10
    • Updated to BouncyCastle 1.76
    • Extended KeyStoreHelper APIs to be able to provide custom security Provider in it.
    • Renamed CertificateHelper.getWithPEMHeader to getCertificateWithPEMHeader
    • Added overload of CertificateHelper.convertStringToCertficate
  • v11.1.0 - 2023-07-31
    • Removed the explicit SuppressFBWarnings class in favour of an optional include of spotbugs-annotations. See issue #36
    • Changed the constructor parameter of CollectingSAXErrorHandler from Supplier <ErrorList> to Supplier <? extends ErrorList>
    • Added new interface IObjectPoolFactory to extend the functionality of the ObjectPool class
  • 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
  • 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 the JAXBContextCacheKey factory method
    • Fixed an error in Codepoint.isLowSurrogate and Codepoint.isHighSurrogate
    • Added support for writing Surrogate pairs in the XML writer
    • XMLFactory.createDefaultTransformerFactory no longer emits warnings of unsupported features
    • Added classes ConditionalLogger and IHasConditionalLogger
  • v11.0.3 - 2023-04-16
    • Updated to BouncyCastle 1.73
    • Deprecated classes AbstractJAXBBuilder and AbstractWritingJAXBBuilder for removal
    • Classes LoggingJAXBReadExceptionHandler and LoggingJAXBWriteExceptionHandler received a singleton accessor field
    • Extended IKeyStoreType interface with method isKeyStorePathRequired
    • Added new enum entry EKeyStoreType.PKCS11 for support of PKCS11 - see PR #34 - thx @sopgreg
    • Deprecated classes JAXBDocumentType and IJAXBDocumentType
    • 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 classes ConcurrentCollectorSingle and ConcurrentCollectorMultiple 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 method onConfigurationSource to onConfigurationValueProvider
    • Added additional overloads of XMLOffset(Date|Time|DateTime).of without ZoneOffset
    • 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 in XMLTransformerFactory uses now the secure reading
    • Made silent mode in class SystemProperties customizable
    • Class GenericJAXBMarshaller now works on ValidationEventHandler directly instead of the factory
    • Class GenericJAXBMarhsaller now also implements IJAXBValidator
  • 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 and Codepoint.isHighSurrogate (backport from 11.0.4)
    • Added support for writing Surrogate pairs in the XML writer (backport from 11.0.4)
  • 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)
  • 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)
  • 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 a Supplier
    • 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. Use setReplaceVariables(true) to enable this functionality
  • v10.1.8 - 2022-07-13
    • Added StringHelper.isEmpty and StringHelper.isNotEmpty for more consistent naming
    • Fixed JAXB formatting which partially indented wrong
  • 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 and XMLHelper.recursiveIterateChildren
    • Added new enum entries EXMLParserFeature.ACCESS_EXTERNAL_*
    • Added new class NaturalNumericOrderComparator
    • Added new class RecursiveNodeIterator and deprecated class RecursiveChildNodeIterator
    • Added a factory method to class MicroRecursiveIterator
  • 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 in AnnotationUsageCache 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 and incAndGet to the Mutable* classes
    • IConfig.forEachConfigurationValueProvider now iterates the priorities correctly when a MultiConfigurationValueProvider is used.
    • Added support for JDK 15, 16 and 17 in class EJavaVersion
  • v10.1.4 - 2021-10-30
    • Made AbstractReadOnlyMapBasedMultilingualText implement Serializable
    • 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
  • v10.1.3 - 2021-09-19
    • Made XMLOffset(Date|Time|DateTime) implement Serializable (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)
  • 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 an OffsetDate would try to use a time formatter
    • PDTToString now handles ZoneOffset and ZoneId better
    • Added XMLHelper.getChildElementOfNames as a sanity method
    • Favouring XMLOffset*.toString over the getAsString variant for better interoperability
  • v10.1.1 - 2021-05-02
    • Build with Java 1.8 instead of Java 11 because of binary incompatibility with ByteBuffer.flip() signature
  • v10.1.0 - 2021-05-02
    • Started the explicit Wiki
    • Added CHttpHeader.HOST
    • Extended Copy*StreamBuilder with limit (Long)
    • Added Predicates.and and Predicates.or
    • Create new classes XMLOffsetDate and AdapterXMLOffsetDate similar to OffsetDate but with an optional zone offset
    • Create new classes XMLOffsetTime and AdapterXMLOffsetTime similar to OffsetTime but with an optional zone offset
    • Create new classes XMLOffsetDateTime and AdapterXMLOffsetDateTime similar to OffsetDateTime but with an optional zone offset
    • Added method Version.hasQualifier
    • Changed Version.parse to use the new format by default. Added Version.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 to com.helger.commons
    • The submodule ph-xml no longer depends on ph-collection
    • Separated the JAXB adapter classes and JAXBHelper to new submodule ph-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 of Duration
    • Added StopWatch.getLapDuration ()
    • Removed ResourceStreamSource and ResourceStreamResult - see https://saxonica.plan.io/issues/4833 for the reasons
    • Changed JsonReader.Builder method names to not use set
    • 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 without set
    • Added more SingleError builder errorLocation overloads
    • Removed the class ScriptHelper as Nashorn gets removed in JDK 15 (see JEP 335)
    • Added new interfaces IBuilder and IResettableBuilder
    • Extended HTTPHeaderMap API
    • Fixed the data type of the custom HTTP headers in WSClientConfig
    • Changed the default value DEFAULT_QUOTE_IF_NECESSARY from true to false
    • Deprecated all the "multi map" classes in ph-collection. With the computeIfAbsent 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 and LocalDateTimePeriod
    • 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 the StringHelper.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 and AdapterZonedDateTime 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
  • 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 of CommonsWeakHashMap for all registries having Class<?> as the key
  • v9.5.1 - 2020-09-18
    • Build with Java 1.8 instead of Java 11 because of binary incompatibility with ByteBuffer.flip() signature
  • v9.5.0 - 2020-09-17
  • 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 of IGenericAdderTrait
  • v9.4.7 - 2020-08-28
    • Extended IPrivilegedAction API for Security 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 handle LocalTime values as well
    • Added predefined JAXB adapters in package com.helger.jaxb.adapter
  • 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 properties config.resource, config.resources, config.file and config.url or the environment variable alternatives CONFIG_RESOURCE, CONFIG_RESOURCES, CONFIG_FILE and CONFIG_URL.
    • Added possibility to reload for resource-based configuration sources
    • Fixed a potential NPE in IJsonObject.getValue (String)
    • Added EqualsHelper.equalsCustom using a BiPredicate
    • Extended IConfig API to receive the IConfigurationSource AND the value to determine the source of the configuration value (backwards incompatible change)
    • Changed the handling of the Consumers in the Config implementation in a backward incompatible way (setters vs. constructor, new parameter type)
  • v9.4.4 - 2020-05-21
    • Fixed a backwards compatibility issue with JsonObject.add(String,IJson)
  • v9.4.3 - 2020-05-21
    • Extended tests - thanks to @dliang2000
    • Extended NonBlockingCharArrayWriter with non-throwing write overloads
    • Changed IJsonObject API to favour addJson instead of add 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 of BasicThreadFactory customizable
    • Updated to BouncyCastle 1.65
    • The IMissingLocaleHandler is now also called in LocaleHelper.getLocale if the input strings are all empty
    • Improved the resolution rules for LocaleCache, LanguageCache and CountryCache on edge cases.
    • Extracted overridable GenericJAXBMarshaller.getJAXBContext
    • Added possibility to cache JAXBContext objects created via classes
  • 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 and urlDecodeOrDefault
  • 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 and URLHelper.urlDecode now uses URLCodec
    • Deprecated ICommonsIterable.forEach in favour of findAll
    • 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 with Charset 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 to AbstractDAO for later reuse.
    • Reworked FileIntIDFactory and FileLongIDFactory 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
  • v9.3.8 - 2019-11-07
    • Fixed method name in RFC2616Codec - getMaximumEncodedLength instead of getEncodedLength; added getMaximumDecodedLength
    • 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 and LoggingWriter
    • Added new classes CountingReader and CountingWriter
    • 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 of Cache. It adds a mapper to determine the cache key.
    • New parent POM 1.11.0 updates SLF4J to 1.7.29
  • v9.3.7 - 2019-09-25
    • Extended IJAXBValidator API to have a validate method that takes an outside ErrorList
    • Updated to BouncyCastle 1.63
    • Converted some methods in IMicroQName to default methods
    • Extended HttpHeaderMap API to make quote if necessary customizable
  • v9.3.6 - 2019-08-27
    • Extended the StreamHelper API with an even more flexible copyInputStreamToOutputStream method
    • StreamHelper.getCopy[WithLimit] can now return null 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)
  • v9.3.5 - 2019-08-04
    • Updated to BouncyCastle 1.62
    • Added new EURLProtocol entries CID and MID 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
  • v9.3.3 - 2019-05-06
    • Added ICommonsIterable methods findFirstIndex and findLastIndex
    • 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 explicit JsonReader.Builder class to simplify the usage
    • New class SettingsPersistenceJson to be able to read and write settings in JSON format
  • 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 of true is present, the usage of SecureRandom in class RandomHelper 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 class VerySecureRandom
    • VerySecureRandom uses NativePRNGNonBlocking as the initial SecureRandom for faster Linux initialization.
  • v9.3.1 - 2019-03-06
    • Made IJsonWriterSettings serializable
    • Updated to BouncyCastle 1.61
    • null values in settings can be serialized now
    • HttpHeaderMap methods forEachSingleHeader and forEachHeaderLine now use the unified values
  • v9.3.0 - 2019-02-07
    • Restored the Automatic-Module-Name of com.helger.scopes
    • Moved method exceptionCallbacks to base class AbstractJAXBBuilder
    • Exception handler in GenericJAXBMarshaller now based on ´CallbackList` - incompatible change
    • Fixed the conversion from String to Integer, Long and Short so that null is returned on error (therefore throwing a TypeConverterException)
    • IGetter*Trait getAs... methods now return null on error instead of throwing a TypeConverterException
  • v9.2.1 - 2019-01-23
    • Improved API of JsonParseException
    • Added additional default MicroTypeConverter registrations (File, Path, URL and URI)
    • Added special implementation of IHasInputStream for NonBlockingByteArrayOutputStream
    • 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 take Map.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
  • 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. Only ICommonsCollection is serializable.
    • IHasDisplayText is no longer Serializable.
    • IDisplayTextProvider is no longer Serializable.
    • IHasText is no longer Serializable.
    • Changed return type of SystemProperties.setPropertyValue() to EChange
    • JAXBDocumentType takes List<ClassPathResource> instead of List<String> to avoid ClassLoader issues
    • Changed PBCProvider initialization to log a warning instead of throwing an exception
    • Added StringHelper methods getQuoted and appendQuoted
    • Improved Java 10/Java 11 support
    • Moved CloneHelper.getClonedJAXBElement to new class JAXBHelper in ph-jaxb subproject (Java 11 issue)
    • Moved class WSTestHelper to subproject ph-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 suitable ErrorHandler instead.
    • WrappedCollectingSAXErrorHandler is now derived from CollectingSAXErrorHandler
  • v9.1.8 - 2018-10-24
    • Added special support for properties java.runtime.version and java.runtime.name in class SystemProperties
    • 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 to XMLGregorianCalendar if only the date part is used (issue #12)
    • Added TimeZone related methods in PDTFactory
    • Added method IHasInputStream.getBufferedInputStream(), IHasInputStreamAndReader.getBufferedReader() and IHasReader.getBufferedReader()
    • Added method IHasOutputStream.getBufferedOutputStream(), IHasOutputStreamAndWriter.getBufferedWriter() and IHasWriter.getBufferedWriter()
    • Opened JsonReader API to add the possibility to pass in an IJsonParserCustomizeCallback instance
    • Added IMultilingualText.texts ()
    • Fixed some SpotBugs errors
    • Added IJAXBWriter.getAsInputStream(...)
    • Added new marker interface IExplicitlyCloneable
  • v9.1.7 - 2018-10-11
    • Added new class IdentityByteArrayCodec
    • Added new classes MacInputStream and MacOutputStream
    • Deprecated some JSON APIs with byte, short and float
    • Overloaded WrappedOutputStream.write (byte[],int,int) for quicker pass-through. Please ensure that all derived classes also overload this method.
    • JSONValue handling for long values in the int range was changed to store int internally. This improves testability independent of the value range.
    • Added new StringHelper.contains(Any|No|Only) methods for CharSequence and String objects
  • v9.1.6 - 2018-10-01
    • Added CHttpHeader.X_CONTENT_SECURITY_POLICY_REPORT_ONLY
    • Added ValueEnforcer.isNE0 methods
    • Deprecated ValueEnforcer methods for short and float
    • 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
  • v9.1.5 - 2018-09-09
    • Extended WSClientConfig API
    • Extended GenericJAXBMarshaller API
    • Class IJAXBReader now tries to set systemID for IReadableResource, File and Path 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
  • 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 &#13;)
    • Fixed error in HttpHeaderMap.addAllHeaders (was not doing what was expected)
  • v9.1.3 - 2018-07-19
    • Updated to BouncyCastle 1.60
    • Extended LogHelper to have overloads with Supplier<String>
    • Added new Commons...Map constructors with parameters Map, 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 in ReadableResourceByteArray, 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 to LOGGER
    • 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 from getCharsetFromNameOrNull to getCharsetFromNameOrDefault
    • 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
  • 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
  • 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
  • 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 of createNewXPathExpresion
    • Updated to parent POM 1.10.0
  • v9.0.0 - 2017-11-05
    • Changed com.helger.commons.function package to com.helger.commons.functional
    • Replaced IFilter with IPredicate
    • Replaced IFilterWithParameter with IBiPredicate
    • Changed ManagedExecutorService to ExecutorServiceHelper
    • Removed class CCharset - use StandardCharsets instead
    • Added classes PathHelper and PathOperations
    • 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 package com.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 of ph-commons slightly
    • Extracted ph-collection project to lower size of ph-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 with StringMap
    • An Automatic-Module-Name was added after beta 1
    • Removed support for the application and session application scopes
  • v8.6.6 - 2017-07-12
    • Extended CSVWriter API
    • SimpleLSResourceResolver can now handle fat jars from Spring Boot (issue #8)
    • Extracted DefaultResourceResolver from SimpleLSResourceResolver and added in ph-commons
    • Added rudimentary support for Path based APIs
    • Added WatchService based WatchDir in favor of FileMonitor
  • 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 and PDTMask
    • 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 and MonthDay
    • RuntimeExceptions during type conversion are encapsulated in TypeConverterExceptions.
  • 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 serializable Predicate interface
    • Added IBiPredicate - a serializable BiPredicate interface
    • Added IBiConsumer - a serializable BiConsumer interface
    • Added IBiFunction - a serializable BiFunction interface
    • Added IComparable - a serializable and extended Comparable interface
    • Extended StringHelper API
    • Extended MicroWriter API
    • Extended XMLWriter API
    • Extended PDTHelper API
    • Deprecated EMonth and EDayOfWeek in favour of JDK Month and DayOfWeek
  • v8.6.2 - 2017-02-15
    • Extended XMLSystemProperties API
    • Allowing JAXBDocumentType objects to not have an @XmlSchema annotation
    • Deprecated CCharset - use StandardCharsets instead
    • Deprecated ToStringGenerator toString() - use getToString() instead
  • 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
  • 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
  • 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 and ph-less-commons.
    • The first version that requires JDK 8
    • Multiple API changes to better support functional style
    • Base32 codec added
Clone this wiki locally