diff --git a/core/pom.xml b/core/pom.xml index 7fa2f6af..921faecb 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -145,6 +145,13 @@ 1.9.5 test + + + test + org.projectlombok + lombok + 1.16.18 + diff --git a/core/src/main/java/org/sql2o/reflection/PojoMetadata.java b/core/src/main/java/org/sql2o/reflection/PojoMetadata.java index f67c6b88..ba9758c0 100644 --- a/core/src/main/java/org/sql2o/reflection/PojoMetadata.java +++ b/core/src/main/java/org/sql2o/reflection/PojoMetadata.java @@ -127,6 +127,17 @@ private PropertyAndFieldInfo initializePropertyInfo() { propertyGetters.put(propertyName, factoryFacade.newGetter(m)); } + if (m.getName().startsWith("is")) { + String propertyName = m.getName().substring(2); + if (caseSensitive) { + propertyName = propertyName.substring(0, 1).toLowerCase() + propertyName.substring(1); + } else { + propertyName = propertyName.toLowerCase(); + } + + propertyGetters.put(propertyName, factoryFacade.newGetter(m)); + } + if (m.getName().startsWith("set") && m.getParameterTypes().length == 1) { String propertyName = readAnnotatedColumnName(m, isJpaColumnInClasspath); if(propertyName == null) { diff --git a/core/src/test/java/org/sql2o/reflect/ReadLombokAnnotationTest.java b/core/src/test/java/org/sql2o/reflect/ReadLombokAnnotationTest.java new file mode 100644 index 00000000..40a79aad --- /dev/null +++ b/core/src/test/java/org/sql2o/reflect/ReadLombokAnnotationTest.java @@ -0,0 +1,31 @@ +package org.sql2o.reflect; + +import com.google.common.collect.ImmutableMap; +import junit.framework.TestCase; +import lombok.Data; +import org.junit.Test; +import org.sql2o.reflection.PojoMetadata; + +@SuppressWarnings("unused") +public class ReadLombokAnnotationTest + extends TestCase { + + @Test + public void testBooleanGetter() { + PojoMetadata metadata = newPojoMetadata(BooleanAnnotation.class); + assertNotNull(metadata.getPropertyGetterIfExists("field1")); + assertNotNull(metadata.getPropertyGetterIfExists("field2")); + } + + private PojoMetadata newPojoMetadata(Class clazz) { + return new PojoMetadata(clazz, false, false, ImmutableMap. of(), true); + } + + @Data + private static class BooleanAnnotation { + private boolean field1; + private Boolean field2; + } + + +}