Skip to content

Commit 30a2fb9

Browse files
committed
add jspecify, nullaway, archunit and fix things
1 parent 9c5ab70 commit 30a2fb9

198 files changed

Lines changed: 1688 additions & 528 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.idea/codeStyles/Project.xml

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lombok.config

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
config.stopBubbling = true
2+
3+
lombok.addLombokGeneratedAnnotation = true
4+
5+
# Copy JSpecify annotations to generated code (constructors, getters, setters)
6+
lombok.copyableAnnotations += org.jspecify.annotations.Nullable
7+
lombok.copyableAnnotations += org.jspecify.annotations.NonNull
8+
lombok.addNullAnnotations = jspecify

pom.xml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
<properties>
2020
<java.version>25</java.version>
21+
<errorprone.version>2.45.0</errorprone.version>
22+
<nullaway.version>0.12.14</nullaway.version>
2123
</properties>
2224

2325
<dependencies>
@@ -136,6 +138,20 @@
136138
<version>2.0.2</version>
137139
<scope>test</scope>
138140
</dependency>
141+
142+
<!-- https://mvnrepository.com/artifact/com.tngtech.archunit/archunit-junit5 -->
143+
<dependency>
144+
<groupId>com.tngtech.archunit</groupId>
145+
<artifactId>archunit-junit5</artifactId>
146+
<version>1.4.1</version>
147+
<scope>test</scope>
148+
</dependency>
149+
<dependency>
150+
<groupId>com.tngtech.archunit</groupId>
151+
<artifactId>archunit-junit5-api</artifactId>
152+
<version>1.4.1</version>
153+
<scope>compile</scope>
154+
</dependency>
139155
</dependencies>
140156

141157
<build>
@@ -157,7 +173,36 @@
157173
<artifactId>lombok</artifactId>
158174
<version>${lombok.version}</version>
159175
</path>
176+
<path>
177+
<groupId>com.google.errorprone</groupId>
178+
<artifactId>error_prone_core</artifactId>
179+
<version>${errorprone.version}</version>
180+
</path>
181+
<path>
182+
<groupId>com.uber.nullaway</groupId>
183+
<artifactId>nullaway</artifactId>
184+
<version>${nullaway.version}</version>
185+
</path>
160186
</annotationProcessorPaths>
187+
<compilerArgs>
188+
<arg>-Amapstruct.unmappedTargetPolicy=ERROR</arg>
189+
<arg>-XDcompilePolicy=simple</arg>
190+
<arg>--should-stop=ifError=FLOW</arg>
191+
<!-- @formatter:off -->
192+
<arg>-Xplugin:ErrorProne -XepDisableAllChecks -XepOpt:NullAway:AnnotatedPackages=it.aboutbits.springbootboilerplate -XepOpt:NullAway:JSpecifyMode=true -Xep:NullAway:ERROR</arg>
193+
<!-- @formatter:on -->
194+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
195+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
196+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
197+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
198+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
199+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
200+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
201+
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
202+
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
203+
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
204+
</compilerArgs>
205+
<fork>true</fork>
161206
</configuration>
162207
</plugin>
163208
<plugin>

src/main/java/it/aboutbits/springboot/toolbox/autoconfiguration/persistence/AbstractCustomTypeContributor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
import org.hibernate.boot.model.TypeContributor;
77
import org.hibernate.service.ServiceRegistry;
88
import org.hibernate.type.descriptor.java.JavaType;
9+
import org.jspecify.annotations.NullMarked;
910

1011
import java.lang.reflect.InvocationTargetException;
1112
import java.util.Set;
1213

14+
@NullMarked
1315
public abstract class AbstractCustomTypeContributor implements TypeContributor {
1416
@SuppressWarnings("rawtypes")
1517
private final Set<Class<? extends AutoRegisteredJavaType>> relevantTypes;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package it.aboutbits.springboot.toolbox.autoconfiguration.persistence;
22

33
import org.hibernate.type.descriptor.java.JavaType;
4+
import org.jspecify.annotations.NullMarked;
45

6+
@NullMarked
57
public interface AutoRegisteredJavaType<T> extends JavaType<T> {
68
}

src/main/java/it/aboutbits/springboot/toolbox/autoconfiguration/persistence/CustomTypeContributor.java

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

3+
import org.jspecify.annotations.NullMarked;
4+
5+
@NullMarked
36
public final class CustomTypeContributor extends AbstractCustomTypeContributor {
47
public CustomTypeContributor() {
58
super("it.aboutbits.springboot.toolbox");

src/main/java/it/aboutbits/springboot/toolbox/autoconfiguration/web/CustomTypeConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import it.aboutbits.springboot.toolbox.type.identity.EntityId;
88
import it.aboutbits.springboot.toolbox.web.CustomTypePropertyEditor;
99
import it.aboutbits.springboot.toolbox.web.EntityIdPropertyEditor;
10+
import org.jspecify.annotations.NullMarked;
1011
import org.springframework.boot.jackson.autoconfigure.JsonMapperBuilderCustomizer;
1112
import org.springframework.context.annotation.Bean;
1213
import org.springframework.context.annotation.Configuration;
@@ -18,6 +19,7 @@
1819
import java.util.Set;
1920

2021
@Configuration
22+
@NullMarked
2123
public class CustomTypeConfiguration {
2224
@ControllerAdvice
2325
public static class CustomTypePropertyBinder {
@@ -56,5 +58,4 @@ public JsonMapperBuilderCustomizer jsonCustomizer(CustomTypeScanner configuratio
5658
return builder -> builder
5759
.addModule(module);
5860
}
59-
6061
}

src/main/java/it/aboutbits/springboot/toolbox/autoconfiguration/web/CustomTypeScanner.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import it.aboutbits.springboot.toolbox.type.CustomType;
55
import lombok.Getter;
66
import lombok.extern.slf4j.Slf4j;
7+
import org.jspecify.annotations.NullMarked;
78

89
import java.lang.annotation.ElementType;
910
import java.lang.annotation.Retention;
@@ -18,6 +19,7 @@
1819

1920
@Slf4j
2021
@Getter
22+
@NullMarked
2123
public class CustomTypeScanner {
2224
private static final String LIBRARY_BASE_PACKAGE_NAME = "it.aboutbits.springboot.toolbox";
2325

src/main/java/it/aboutbits/springboot/toolbox/autoconfiguration/web/CustomTypeScannerRegistrar.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package it.aboutbits.springboot.toolbox.autoconfiguration.web;
22

3+
import org.jspecify.annotations.NullMarked;
34
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
45
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
56
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
@@ -8,6 +9,7 @@
89

910
import java.util.Objects;
1011

12+
@NullMarked
1113
public class CustomTypeScannerRegistrar implements ImportBeanDefinitionRegistrar {
1214

1315
/**

src/main/java/it/aboutbits/springboot/toolbox/autoconfiguration/web/RegisterCustomTypesWithJacksonAndMvc.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package it.aboutbits.springboot.toolbox.autoconfiguration.web;
22

3+
import org.jspecify.annotations.NullMarked;
34
import org.springframework.context.annotation.Import;
45

56
import java.lang.annotation.ElementType;
@@ -10,6 +11,7 @@
1011
@Target({ElementType.TYPE})
1112
@Retention(RetentionPolicy.RUNTIME)
1213
@Import({CustomTypeScannerRegistrar.class, CustomTypeConfiguration.class})
14+
@NullMarked
1315
public @interface RegisterCustomTypesWithJacksonAndMvc {
1416
String[] additionalTypePackages() default "";
1517
}

0 commit comments

Comments
 (0)