Skip to content

JSpecify: Propagate nullability annotations to mapper implementation #4076

Description

@RaniAgus

Use case

While trying the latest beta I've noticed that IDE adds a Overriding method parameters are not annotated warning to all null marked mappers because the generated implementations don't include any annotation at all:

Image

Generated Code

For example, here:

@Mapper
@NullMarked // or @NullMarked in package-info.java
public interface NullMarkedMapper {

    @Mapping(target = "foo", source = "source1.foo")
    @Mapping(target = "bar", source = "source1.bar")
    @Mapping(target = "baz", source = "source2.baz")
    Target map(Source1 source1, @Nullable Source2 source2);
}

Generated code could be:

@Generated(
    value = "org.mapstruct.ap.MappingProcessor",
    date = "0000-00-00T00:00:00+0000",
    comments = "version: , compiler: javac, environment: Java 21"
)
@NullMarked
public class NullMarkedMapperImpl implements NullMarkedMapper {

    @Override
    public Target map(Source1 source1, @Nullable Source2 source2) {

        Long baz = null;
        if ( source2 != null ) {
            baz = source2.getBaz();
        }
        String foo = null;
        foo = source1.getFoo();
        boolean bar = false;
        bar = source1.isBar();

        Target target = new Target( foo, bar, baz );

        return target;
    }
}

Possible workarounds

Right now I'm ignoring the warning because it's not a compilation issue

MapStruct Version

1.7.0.Beta2

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions