Skip to content

Adopt JSpecify on the public API surface #418

Description

@zantvoort

The framework reads JSpecify @NullMarked/@NullUnmarked correctly from user models (storm-core/src/main/java/st/orm/core/spi/Nullability.java:36-56) and org.jspecify is already a dependency, but Storm's own public surface uses jakarta.annotation.Nullable. That annotation is declaration-site rather than type-use, so it cannot express List<@Nullable String>, and Kotlin treats it as a platform-type hint rather than a hard contract.

A @NullMarked package-info on the public packages plus type-use @Nullable where needed gives Kotlin callers real non-null types and lets Java tooling check the contract. Fits naturally with the null-marked-by-default entity semantics shipped in #257.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions