From 28421ef933ab76e1bcef2ee74ce0d3dc7bacec7e Mon Sep 17 00:00:00 2001 From: Joran Van Belle Date: Wed, 24 Apr 2024 20:05:05 +0200 Subject: [PATCH] chore(processor): add test for record support --- .github/workflows/maven.yml | 8 ++++++-- .../java/io/jonasg/bob/definitions/TypeDefinition.java | 10 ++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 7a853cf..8562d1e 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -29,6 +29,10 @@ jobs: java-version: ${{ matrix.java }} distribution: 'temurin' cache: maven - - name: Build with Maven + - name: Build with Maven if records are not supported if: ${{ matrix.java }} == 11 - run: mvn -B -ntp verify -Dtest=\!RecordsTest.java --file pom.xml \ No newline at end of file + run: mvn -B -ntp verify -Dtest=\!RecordsTest.java --file pom.xml + + - name: Build with Maven if records are supported + if: ${{ matrix.java }} != 11 + run: mvn -B -ntp verify --file pom.xml diff --git a/processor/src/main/java/io/jonasg/bob/definitions/TypeDefinition.java b/processor/src/main/java/io/jonasg/bob/definitions/TypeDefinition.java index 5223689..0feb30f 100644 --- a/processor/src/main/java/io/jonasg/bob/definitions/TypeDefinition.java +++ b/processor/src/main/java/io/jonasg/bob/definitions/TypeDefinition.java @@ -59,8 +59,8 @@ public List getSetterMethods() { for (FieldDefinition field : fields) { String name = field.name().substring(0, 1).toUpperCase() + field.name().substring(1); methodsWithOneParam.stream() - .filter(m -> m.name().equals(field.name()) || (m.name().equals(field.name().substring(2)) - && field.type().getKind().equals(TypeKind.BOOLEAN))) + .filter(m -> m.name().equals(field.name()) || + isABooleanField(field, m)) .findFirst() .map(m -> new SetterMethodDefinition(m.name(), field, m.parameters().get(0))) .ifPresent(setters::add); @@ -75,6 +75,12 @@ public List getSetterMethods() { return setters; } + private boolean isABooleanField(FieldDefinition field, MethodDefinition m) { + return field.name().startsWith("is") + && m.name().equalsIgnoreCase(field.name().substring(2)) + && field.type().getKind().equals(TypeKind.BOOLEAN); + } + public boolean containsSetterMethods() { return !getSetterMethods().isEmpty(); }