v2.0.0-RC1
Pre-release
Pre-release
·
15 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
- Maven:
<dependencies> <dependency> <groupId>io.github.problem4j</groupId> <artifactId>problem4j-core</artifactId> <version>2.0.0-RC1</version> </dependency> </dependencies>
- Gradle (Kotlin DSL):
dependencies { implementation("io.github.problem4j:problem4j-core:2.0.0-RC1") }
Important
The primary point of release 2.0.0 is refinement and cleanup of the library's public API. It simplifies the API for Problem by providing a single getExtensions() method for problem extension members management, returning an unmodifiable Map, and drops abstract implementations in favour of keeping most of the the internals as package-private.
Migration guide will be noted for the final 2.0.0 release.
Added
- Add
DefaultProblemMapperto replaceAbstractProblemMapperandProblemMapper.create(). - Add
StatusTitleResolverSPI to allow users to provide custom resolution ofstatuscode intotitle. To be used with HTTP status enums depending on the user's framework. - Add
ProblemSupportfor common utilities.
Changed
- Make all methods in
Problem,ProblemBuilderandProblemContextinterfaces non-default. - Make
Problem.Extensionnot extendMap.Entryand instead be a simple data class withnameandvalueproperties. - Reorganize interface
defaultmethods.
Removed
- Remove deprecated methods from
ProblemBuilder. - Minify number of methods in
Problem- plaingetExtensions()returningMap<String, Object>is enough. - Remove deprecated
ProblemStatusenum from public API. The resolution ofstatuscode intotitleis still supported and available for extension viaStatusTitleResolverSPI. - Remove
AbstractProblemclass - useProblemobjects created viaProblem.builder()or static factory methods. Custom implementations ofProblemcan be created by implementing theProbleminterface. - Remove
AbstractProblemBuilderclass - useProblem.builder()static method to get default builder implementation. Custom implementations ofProblemBuildercan be created by implementing theProblemBuilderinterface. - Remove
AbstractProblemContextclass - useProblemContextobjects created viaProblemContext.create()static method. Custom implementations ofProblemContextcan be created by implementing theProblemContextinterface. - Remove
AbstractProblemMapperclass - useDefaultProblemMapperinstead.