Skip to content

Releases: problem4j/problem4j-core

v1.4.2

26 Feb 18:12
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

  1. Maven:
    <dependencies>
        <dependency>
            <groupId>io.github.problem4j</groupId>
            <artifactId>problem4j-core</artifactId>
            <version>1.4.2</version>
        </dependency>
    </dependencies>
  2. Gradle (Kotlin DSL):
    dependencies {
        implementation("io.github.problem4j:problem4j-core:1.4.2")
    }

Fixed

  • Make ProblemBuilder remove extension member if null values is passed, instead of silently ignoring it and keeping the previous value.
  • Cleanup default methods in ProblemBuilder interface.

v1.4.1

17 Feb 20:43
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

  1. Maven:
    <dependencies>
        <dependency>
            <groupId>io.github.problem4j</groupId>
            <artifactId>problem4j-core</artifactId>
            <version>1.4.1</version>
        </dependency>
    </dependencies>
  2. Gradle (Kotlin DSL):
    dependencies {
        implementation("io.github.problem4j:problem4j-core:1.4.1")
    }

Fixed

  • Change type from Object to ? extends Object (and @Nullable Object to ? extends @Nullable Object) for generics in method arguments to support covariant arguments.

v1.4.0

16 Feb 22:23
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

  1. Maven:
    <dependencies>
        <dependency>
            <groupId>io.github.problem4j</groupId>
            <artifactId>problem4j-core</artifactId>
            <version>1.4.0</version>
        </dependency>
    </dependencies>
  2. 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

14 Feb 15:54
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

v1.4.0-RC1 Pre-release
Pre-release
  1. Maven:
    <dependencies>
        <dependency>
            <groupId>io.github.problem4j</groupId>
            <artifactId>problem4j-core</artifactId>
            <version>1.4.0-RC1</version>
        </dependency>
    </dependencies>
  2. 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

12 Feb 17:04
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

  1. Maven:
    <dependencies>
        <dependency>
            <groupId>io.github.problem4j</groupId>
            <artifactId>problem4j-core</artifactId>
            <version>1.3.3</version>
        </dependency>
    </dependencies>
  2. 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, since Content-Type is named application/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, toString methods will now produce strings that are simple, useful for logging/debugging and JSON representations should be delegated to jackson-databind and problem4j-jackson, or any other library that may be supported in the future.
  • Seal the contract between toProblemBuilder method overloading in AbstractProblemMapper by making one method final. 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 ProblemMapper returned by ProblemMapper.create(), because it's thread-safe, stateless and immutable.
  • Make resolution of deprecated HTTP status codes in ProblemStatus lazy, by delegating to nested class.
  • Apply minor improvements to JavaDocs.

v1.3.2

29 Jan 22:08
Immutable release. Only release title and notes can be modified.
d6a5a0e

Choose a tag to compare

  1. Maven:
    <dependencies>
        <dependency>
            <groupId>io.github.problem4j</groupId>
            <artifactId>problem4j-core</artifactId>
            <version>1.3.2</version>
        </dependency>
    </dependencies>
  2. Gradle (Kotlin DSL):
    dependencies {
        implementation("io.github.problem4j:problem4j-core:1.3.2")
    }

Fixed

  • Resolve confusing naming of ProblemBuilder interface methods having singular naming, but actually taking plural arguments (and deprecate old ones).
  • Apply minor fixes in JavaDocs, toString and exception messages.

v1.3.1

13 Jan 19:11
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

  1. Maven:
    <dependencies>
        <dependency>
            <groupId>io.github.problem4j</groupId>
            <artifactId>problem4j-core</artifactId>
            <version>1.3.1</version>
        </dependency>
    </dependencies>
  2. Gradle (Kotlin DSL):
    dependencies {
        implementation("io.github.problem4j:problem4j-core:1.3.1")
    }

Added

  • Override toString in AbstractProblemBuilder (probably won't be used but useful in debug mode).
  • Unify toString overrides of AbstractProblem, AbstractProblemBuilder and AbstractProblemContext to return output in similar style.
  • Finalize missing JavaDocs (and fix various existing) - all public classes and methods now have proper JavaDocs.
  • Annotate ProblemMapping with @Documented so it will appear in JavaDocs.

Changed

  • Use HashMap instead of LinkedHashMap for AbstractProblemBuilder, as order of insertion of extension members does not matter.

v1.3.0

24 Dec 10:21
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

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

  1. Maven:
    <dependencies>
        <dependency>
            <groupId>io.github.problem4j</groupId>
            <artifactId>problem4j-core</artifactId>
            <version>1.3.0</version>
        </dependency>
    </dependencies>
  2. Gradle (Kotlin DSL):
    dependencies {
        implementation("io.github.problem4j:problem4j-core:1.3.0")
    }

Added

  • Add @ProblemMapping annotation along with processor to convert annotated exception into Problem object (pulled from problem4j-spring project).
  • Extract abstract classes for major library model classes to enable extension and customization.

Changed

  • Transfer library to io.github.problem4j namespace (both maven groupId and Java package, as described at the beginning of release notes).

v1.3.0-RC1

22 Dec 19:00
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

v1.3.0-RC1 Pre-release
Pre-release

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

  1. Maven:
    <dependencies>
        <dependency>
            <groupId>io.github.problem4j</groupId>
            <artifactId>problem4j-core</artifactId>
            <version>1.3.0-RC1</version>
        </dependency>
    </dependencies>
  2. Gradle (Kotlin DSL):
    dependencies {
        implementation("io.github.problem4j:problem4j-core:1.3.0-RC1")
    }

Added

  • Add @ProblemMapping annotation along with processor to convert annotated exception into Problem object (pulled from problem4j-spring project).
  • Extract abstract classes for major library model classes to enable extension and customization.

Changed

  • Transfer library to io.github.problem4j namespace (both maven groupId and Java package, as described at the beginning of release notes).

v1.2.5

17 Dec 19:41
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

https://central.sonatype.com/artifact/io.github.malczuuu.problem4j/problem4j-core/1.2.5

  1. Maven:
    <dependencies>
        <dependency>
            <groupId>io.github.malczuuu.problem4j</groupId>
            <artifactId>problem4j-core</artifactId>
            <version>1.2.5</version>
        </dependency>
    </dependencies>
  2. 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