Releases: problem4j/problem4j-core
v1.4.2
- Maven:
<dependencies> <dependency> <groupId>io.github.problem4j</groupId> <artifactId>problem4j-core</artifactId> <version>1.4.2</version> </dependency> </dependencies>
- Gradle (Kotlin DSL):
dependencies { implementation("io.github.problem4j:problem4j-core:1.4.2") }
Fixed
- Make
ProblemBuilderremove extension member ifnullvalues is passed, instead of silently ignoring it and keeping the previous value. - Cleanup
defaultmethods inProblemBuilderinterface.
v1.4.1
- Maven:
<dependencies> <dependency> <groupId>io.github.problem4j</groupId> <artifactId>problem4j-core</artifactId> <version>1.4.1</version> </dependency> </dependencies>
- Gradle (Kotlin DSL):
dependencies { implementation("io.github.problem4j:problem4j-core:1.4.1") }
Fixed
- Change type from
Objectto? extends Object(and@Nullable Objectto? extends @Nullable Object) for generics in method arguments to support covariant arguments.
v1.4.0
- Maven:
<dependencies> <dependency> <groupId>io.github.problem4j</groupId> <artifactId>problem4j-core</artifactId> <version>1.4.0</version> </dependency> </dependencies>
- Gradle (Kotlin DSL):
dependencies { implementation("io.github.problem4j:problem4j-core:1.4.0") }
Added
- Add various static
Problem.of(...)factory methods for in-place creation convenience. - Add support for JSpecify annotations for nullability and Kotlin interop.
- Add support for Java Platform Module System if using Java version 9+, due to producing multi-release JAR artifacts.
module org.example.project { requires io.github.problem4j.core; }
v1.4.0-RC1
- Maven:
<dependencies> <dependency> <groupId>io.github.problem4j</groupId> <artifactId>problem4j-core</artifactId> <version>1.4.0-RC1</version> </dependency> </dependencies>
- Gradle (Kotlin DSL):
dependencies { implementation("io.github.problem4j:problem4j-core:1.4.0-RC1") }
Added
- Add various static
Problem.of(...)factory methods for in-place creation convenience. - Add support for JSpecify annotations for nullability and Kotlin interop.
- Add support for Java Platform Module System if using Java version 9+, due to producing multi-release JAR artifacts.
module org.example.project { requires io.github.problem4j.core; }
v1.3.3
- Maven:
<dependencies> <dependency> <groupId>io.github.problem4j</groupId> <artifactId>problem4j-core</artifactId> <version>1.3.3</version> </dependency> </dependencies>
- Gradle (Kotlin DSL):
dependencies { implementation("io.github.problem4j:problem4j-core:1.3.3") }
Fixed
- Pull back from the idea of returning JSON-alike strings in
toString()methods of this library's classes. While it was nice, sinceContent-Typeis namedapplication/problem+json, these strings were not 100% valid JSONs in all scenarios, and it could be tempting to use it as a response body somewhere. Instead of that,toStringmethods will now produce strings that are simple, useful for logging/debugging and JSON representations should be delegated tojackson-databindandproblem4j-jackson, or any other library that may be supported in the future. - Seal the contract between
toProblemBuildermethod overloading inAbstractProblemMapperby making one methodfinal. Any extensions this logic should be performed by overriding the second method as the first one must only delegate to it.@Override public final ProblemBuilder toProblemBuilder(Throwable t) { return toProblemBuilder(t, null); } @Override public ProblemBuilder toProblemBuilder(Throwable t, ProblemContext context) { // ...
- Re-use instance of default implementation of
ProblemMapperreturned byProblemMapper.create(), because it's thread-safe, stateless and immutable. - Make resolution of deprecated HTTP status codes in
ProblemStatuslazy, by delegating to nested class. - Apply minor improvements to JavaDocs.
v1.3.2
- Maven:
<dependencies> <dependency> <groupId>io.github.problem4j</groupId> <artifactId>problem4j-core</artifactId> <version>1.3.2</version> </dependency> </dependencies>
- Gradle (Kotlin DSL):
dependencies { implementation("io.github.problem4j:problem4j-core:1.3.2") }
Fixed
- Resolve confusing naming of
ProblemBuilderinterface methods having singular naming, but actually taking plural arguments (and deprecate old ones). - Apply minor fixes in JavaDocs,
toStringand exception messages.
v1.3.1
- Maven:
<dependencies> <dependency> <groupId>io.github.problem4j</groupId> <artifactId>problem4j-core</artifactId> <version>1.3.1</version> </dependency> </dependencies>
- Gradle (Kotlin DSL):
dependencies { implementation("io.github.problem4j:problem4j-core:1.3.1") }
Added
- Override
toStringinAbstractProblemBuilder(probably won't be used but useful in debug mode). - Unify
toStringoverrides ofAbstractProblem,AbstractProblemBuilderandAbstractProblemContextto return output in similar style. - Finalize missing JavaDocs (and fix various existing) - all
publicclasses and methods now have proper JavaDocs. - Annotate
ProblemMappingwith@Documentedso it will appear in JavaDocs.
Changed
- Use
HashMapinstead ofLinkedHashMapforAbstractProblemBuilder, as order of insertion of extension members does not matter.
v1.3.0
This release moves the project to a different namespace - io.github.problem4j, which has the side effect of breaking backward compatibility (due to changing root package). This change was made intentionally right now, as the library is still very young. Other libraries from Problem4J family will eventually follow this change.
https://central.sonatype.com/artifact/io.github.problem4j/problem4j-core/1.3.0
- Maven:
<dependencies> <dependency> <groupId>io.github.problem4j</groupId> <artifactId>problem4j-core</artifactId> <version>1.3.0</version> </dependency> </dependencies>
- Gradle (Kotlin DSL):
dependencies { implementation("io.github.problem4j:problem4j-core:1.3.0") }
Added
- Add
@ProblemMappingannotation along with processor to convert annotated exception intoProblemobject (pulled fromproblem4j-springproject). - Extract abstract classes for major library model classes to enable extension and customization.
Changed
- Transfer library to
io.github.problem4jnamespace (both mavengroupIdand Java package, as described at the beginning of release notes).
v1.3.0-RC1
This release moves the project to a different namespace - io.github.problem4j, which has the side effect of breaking backward compatibility (due to changing root package). This change was made intentionally right now, as the library is still very young. Other libraries from Problem4J family will eventually follow this change.
https://central.sonatype.com/artifact/io.github.problem4j/problem4j-core/1.3.0-RC1
- Maven:
<dependencies> <dependency> <groupId>io.github.problem4j</groupId> <artifactId>problem4j-core</artifactId> <version>1.3.0-RC1</version> </dependency> </dependencies>
- Gradle (Kotlin DSL):
dependencies { implementation("io.github.problem4j:problem4j-core:1.3.0-RC1") }
Added
- Add
@ProblemMappingannotation along with processor to convert annotated exception intoProblemobject (pulled fromproblem4j-springproject). - Extract abstract classes for major library model classes to enable extension and customization.
Changed
- Transfer library to
io.github.problem4jnamespace (both mavengroupIdand Java package, as described at the beginning of release notes).
v1.2.5
https://central.sonatype.com/artifact/io.github.malczuuu.problem4j/problem4j-core/1.2.5
- Maven:
<dependencies> <dependency> <groupId>io.github.malczuuu.problem4j</groupId> <artifactId>problem4j-core</artifactId> <version>1.2.5</version> </dependency> </dependencies>
- Gradle (Kotlin DSL):
dependencies { implementation("io.github.malczuuu.problem4j:problem4j-core:1.2.5") }
This release contains no functional changes - just adds LICENSE file to META-INF in published *.jar files.
Changes: v1.2.4...v1.2.5