Skip to content

Commit 066ce65

Browse files
committed
add nullaway, errorprone, archunit and remove package-info-files
1 parent 7bcee97 commit 066ce65

23 files changed

Lines changed: 129 additions & 31 deletions

pom.xml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,20 @@
1818
<properties>
1919
<java.version>25</java.version>
2020
<mapstruct.version>1.6.3</mapstruct.version>
21+
<nullaway.version>0.13.2</nullaway.version>
22+
<errorprone.version>2.49.0</errorprone.version>
2123
</properties>
2224

25+
<dependencyManagement>
26+
<dependencies>
27+
<dependency>
28+
<groupId>it.aboutbits</groupId>
29+
<artifactId>archunit-toolbox</artifactId>
30+
<version>1.1.0</version>
31+
</dependency>
32+
</dependencies>
33+
</dependencyManagement>
34+
2335
<dependencies>
2436
<dependency>
2537
<groupId>org.springframework.boot</groupId>
@@ -86,6 +98,17 @@
8698
<version>2.0.5</version>
8799
<scope>test</scope>
88100
</dependency>
101+
<dependency>
102+
<groupId>com.tngtech.archunit</groupId>
103+
<artifactId>archunit-junit5</artifactId>
104+
<version>1.4.2</version>
105+
<scope>test</scope>
106+
</dependency>
107+
<dependency>
108+
<groupId>it.aboutbits</groupId>
109+
<artifactId>archunit-toolbox</artifactId>
110+
<scope>test</scope>
111+
</dependency>
89112
</dependencies>
90113

91114
<build>
@@ -113,11 +136,37 @@
113136
<artifactId>lombok-mapstruct-binding</artifactId>
114137
<version>0.2.0</version>
115138
</path>
139+
<path>
140+
<groupId>com.google.errorprone</groupId>
141+
<artifactId>error_prone_core</artifactId>
142+
<version>${errorprone.version}</version>
143+
</path>
144+
<path>
145+
<groupId>com.uber.nullaway</groupId>
146+
<artifactId>nullaway</artifactId>
147+
<version>${nullaway.version}</version>
148+
</path>
116149
</annotationProcessorPaths>
117150
<compilerArgs>
118151
<arg>-Amapstruct.defaultComponentModel=spring</arg>
119152
<arg>-Amapstruct.unmappedTargetPolicy=ERROR</arg>
153+
<arg>-XDcompilePolicy=simple</arg>
154+
<arg>--should-stop=ifError=FLOW</arg>
155+
<!-- @formatter:off -->
156+
<arg>-Xplugin:ErrorProne -XepDisableAllChecks -XepOpt:NullAway:AnnotatedPackages=it.aboutbits.springboot.emailservice -XepOpt:NullAway:JSpecifyMode=true -Xep:NullAway:ERROR -XepOpt:NullAway:ExcludedFieldAnnotations=org.mockito.InjectMocks,org.mockito.Mock</arg>
157+
<!-- @formatter:on -->
158+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
159+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
160+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
161+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
162+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
163+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
164+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
165+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
166+
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
167+
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
120168
</compilerArgs>
169+
<fork>true</fork>
121170
</configuration>
122171
</plugin>
123172
<plugin>

src/main/java/it/aboutbits/springboot/emailservice/EmailServiceConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import it.aboutbits.springboot.emailservice.lib.application.UnavailableAttachmentDataSource;
1616
import it.aboutbits.springboot.emailservice.lib.jpa.EmailRepository;
1717
import jakarta.persistence.EntityManager;
18+
import org.jspecify.annotations.NullMarked;
1819
import org.springframework.boot.autoconfigure.AutoConfigurationPackage;
1920
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2021
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -25,6 +26,7 @@
2526
import java.util.List;
2627

2728
@AutoConfigurationPackage
29+
@NullMarked
2830
public class EmailServiceConfiguration {
2931
@Bean(initMethod = "migrate")
3032
@ConditionalOnProperty(value = "aboutbits.emailservice.migrations.enabled", matchIfMissing = true)

src/main/java/it/aboutbits/springboot/emailservice/lib/AttachmentCleanerCallback.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package it.aboutbits.springboot.emailservice.lib;
22

3+
import org.jspecify.annotations.NullMarked;
4+
5+
@NullMarked
36
public interface AttachmentCleanerCallback {
47
void report(Report report);
58

src/main/java/it/aboutbits/springboot/emailservice/lib/AttachmentDataSource.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package it.aboutbits.springboot.emailservice.lib;
22

33
import it.aboutbits.springboot.emailservice.lib.exception.AttachmentException;
4+
import org.jspecify.annotations.NullMarked;
45

56
import java.io.InputStream;
67

8+
@NullMarked
79
public interface AttachmentDataSource {
810
InputStream getAttachmentPayload(long fileReference) throws AttachmentException;
911

src/main/java/it/aboutbits/springboot/emailservice/lib/EmailAttachmentDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package it.aboutbits.springboot.emailservice.lib;
22

33
import it.aboutbits.springboot.emailservice.lib.model.Email;
4+
import org.jspecify.annotations.NullMarked;
45

6+
@NullMarked
57
public record EmailAttachmentDto(
68
long id,
79

src/main/java/it/aboutbits/springboot/emailservice/lib/EmailDto.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package it.aboutbits.springboot.emailservice.lib;
22

3+
import org.jspecify.annotations.NullMarked;
34
import org.jspecify.annotations.Nullable;
45

56
import java.time.OffsetDateTime;
67
import java.util.List;
78
import java.util.Set;
89

10+
@NullMarked
911
public record EmailDto(
1012
long id,
1113

@@ -29,9 +31,12 @@ public record EmailDto(
2931
Set<EmailAttachmentDto> attachments,
3032

3133
OffsetDateTime scheduledAt,
34+
@Nullable
3235
OffsetDateTime sentAt,
3336

37+
@Nullable
3438
OffsetDateTime errorAt,
39+
@Nullable
3540
String errorMessage,
3641

3742
OffsetDateTime createdAt,

src/main/java/it/aboutbits/springboot/emailservice/lib/EmailSchedulerCallback.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package it.aboutbits.springboot.emailservice.lib;
22

3+
import org.jspecify.annotations.NullMarked;
4+
5+
@NullMarked
36
public interface EmailSchedulerCallback {
47
void report(Report report);
58

src/main/java/it/aboutbits/springboot/emailservice/lib/application/CleanupAttachmentFiles.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
import it.aboutbits.springboot.emailservice.lib.exception.AttachmentException;
66
import lombok.RequiredArgsConstructor;
77
import lombok.extern.log4j.Log4j2;
8+
import org.jspecify.annotations.NullMarked;
89
import org.springframework.scheduling.annotation.Scheduled;
910

1011
import java.time.Duration;
1112
import java.util.List;
1213

1314
@RequiredArgsConstructor
1415
@Log4j2
16+
@NullMarked
1517
public class CleanupAttachmentFiles {
1618
private static final String JOB_DESCRIPTION = "Cleanup attachments of sent Emails.";
1719

src/main/java/it/aboutbits/springboot/emailservice/lib/application/EmailAttachmentMapper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@
22

33
import it.aboutbits.springboot.emailservice.lib.EmailAttachmentDto;
44
import it.aboutbits.springboot.emailservice.lib.model.EmailAttachment;
5+
import org.jspecify.annotations.NullMarked;
6+
import org.jspecify.annotations.NullUnmarked;
7+
import org.mapstruct.AnnotateWith;
58
import org.mapstruct.Mapper;
69

710
import java.util.List;
811

912
@Mapper
13+
@AnnotateWith(NullUnmarked.class)
14+
@NullMarked
1015
public interface EmailAttachmentMapper {
1116
EmailAttachmentDto toDto(EmailAttachment model);
1217

src/main/java/it/aboutbits/springboot/emailservice/lib/application/EmailMapper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,18 @@
22

33
import it.aboutbits.springboot.emailservice.lib.EmailDto;
44
import it.aboutbits.springboot.emailservice.lib.model.Email;
5+
import org.jspecify.annotations.NullMarked;
6+
import org.jspecify.annotations.NullUnmarked;
7+
import org.mapstruct.AnnotateWith;
58
import org.mapstruct.Mapper;
69
import org.springframework.data.domain.Page;
710
import org.springframework.data.domain.PageImpl;
811

912
import java.util.List;
1013

1114
@Mapper(uses = EmailAttachmentMapper.class)
15+
@AnnotateWith(NullUnmarked.class)
16+
@NullMarked
1217
public interface EmailMapper {
1318
EmailDto toDto(Email model);
1419

0 commit comments

Comments
 (0)