Skip to content

Commit 5a75323

Browse files
authored
Fix -Xlint warnings in the generated code (#178)
* Fix -Xlint warnings in the generated code
1 parent 71353e0 commit 5a75323

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

pom.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,9 @@
193193
<version>${maven-compiler-plugin-version}</version>
194194
<configuration>
195195
<release>${jdk-version}</release>
196+
<compilerArgs>
197+
<arg>-Xlint:all</arg>
198+
</compilerArgs>
196199
</configuration>
197200
</plugin>
198201

record-builder-processor/src/main/java/io/soabase/recordbuilder/processor/CollectionBuilderUtils.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@
1919
import io.soabase.recordbuilder.core.RecordBuilder;
2020

2121
import javax.lang.model.element.Modifier;
22+
import java.io.Serial;
2223
import java.util.*;
2324
import java.util.regex.Pattern;
2425

2526
import static io.soabase.recordbuilder.processor.RecordBuilderProcessor.generatedRecordBuilderAnnotation;
2627
import static io.soabase.recordbuilder.processor.RecordBuilderProcessor.recordBuilderGeneratedAnnotation;
28+
import static io.soabase.recordbuilder.processor.RecordBuilderProcessor.suppressWarningsAnnotation;
2729

2830
class CollectionBuilderUtils {
2931
private final boolean useImmutableCollections;
@@ -384,7 +386,12 @@ private MethodSpec buildShimMethod(String name, TypeName mainType, Class<?> abst
384386
TypeName[] wildCardTypeArguments = parameterizedType.typeArguments.stream().map(WildcardTypeName::subtypeOf)
385387
.toList().toArray(new TypeName[0]);
386388
var extendedParameterizedType = ParameterizedTypeName.get(ClassName.get(abstractType), wildCardTypeArguments);
387-
return MethodSpec.methodBuilder(name).addAnnotation(generatedRecordBuilderAnnotation)
389+
390+
MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder(name);
391+
if (!useImmutableCollections) {
392+
methodBuilder.addAnnotation(suppressWarningsAnnotation);
393+
}
394+
return methodBuilder.addAnnotation(generatedRecordBuilderAnnotation)
388395
.addModifiers(Modifier.PRIVATE, Modifier.STATIC).addTypeVariables(Arrays.asList(typeVariables))
389396
.returns(parameterizedType).addParameter(extendedParameterizedType, "o").addStatement(code).build();
390397
}
@@ -467,6 +474,9 @@ private TypeSpec buildMutableCollectionSubType(String className, ClassName mutab
467474
.addModifiers(Modifier.PRIVATE, Modifier.STATIC)
468475
.superclass(ParameterizedTypeName.get(mutableCollectionType, typeArguments))
469476
.addTypeVariables(Arrays.asList(typeVariables))
477+
.addField(FieldSpec
478+
.builder(TypeName.LONG, "serialVersionUID", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
479+
.addAnnotation(Serial.class).initializer("1L").build())
470480
.addMethod(MethodSpec.constructorBuilder().addAnnotation(generatedRecordBuilderAnnotation)
471481
.addStatement("super()").build())
472482
.addMethod(MethodSpec.constructorBuilder().addAnnotation(generatedRecordBuilderAnnotation)

record-builder-processor/src/main/java/io/soabase/recordbuilder/processor/RecordBuilderProcessor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ public class RecordBuilderProcessor extends AbstractProcessor {
4545

4646
static final AnnotationSpec generatedRecordBuilderAnnotation = AnnotationSpec.builder(Generated.class)
4747
.addMember("value", "$S", RecordBuilder.class.getName()).build();
48+
static final AnnotationSpec suppressWarningsAnnotation = AnnotationSpec.builder(SuppressWarnings.class)
49+
.addMember("value", "$S", "unchecked").build();
4850
static final AnnotationSpec generatedRecordInterfaceAnnotation = AnnotationSpec.builder(Generated.class)
4951
.addMember("value", "$S", RecordInterface.class.getName()).build();
5052
static final AnnotationSpec recordBuilderGeneratedAnnotation = AnnotationSpec.builder(RecordBuilderGenerated.class)

0 commit comments

Comments
 (0)