From 69f913f08205bb45dd5649a1d60016c03cf3977b Mon Sep 17 00:00:00 2001 From: Nikhil Purushe Date: Wed, 20 Jul 2016 21:56:55 -0700 Subject: [PATCH] Resolve #225 Fix transient property not generated when used on an interface type --- .../java/io/requery/processor/EntityGenerator.java | 10 ++++++---- .../src/main/java/io/requery/processor/EntityType.java | 2 -- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/requery-processor/src/main/java/io/requery/processor/EntityGenerator.java b/requery-processor/src/main/java/io/requery/processor/EntityGenerator.java index 154aff6f..d1b58a01 100644 --- a/requery-processor/src/main/java/io/requery/processor/EntityGenerator.java +++ b/requery-processor/src/main/java/io/requery/processor/EntityGenerator.java @@ -171,12 +171,14 @@ private void generateMembers(TypeSpec.Builder builder) { Modifier memberVisibility = entity.isEmbedded() ? Modifier.PROTECTED : Modifier.PRIVATE; // generate property states if (!entity.isStateless()) { - for (AttributeDescriptor attribute : entity.attributes().values()) { + entity.attributes().values().stream() + .filter(attribute -> !attribute.isTransient()) + .forEach(attribute -> { TypeName stateType = ClassName.get(PropertyState.class); builder.addField(FieldSpec - .builder(stateType, propertyStateFieldName(attribute), memberVisibility) - .build()); - } + .builder(stateType, propertyStateFieldName(attribute), memberVisibility) + .build()); + }); } // only generate for interfaces or if the entity is immutable but has no builder boolean generateMembers = typeElement.getKind().isInterface() || diff --git a/requery-processor/src/main/java/io/requery/processor/EntityType.java b/requery-processor/src/main/java/io/requery/processor/EntityType.java index 8df051e0..9385a4ac 100644 --- a/requery-processor/src/main/java/io/requery/processor/EntityType.java +++ b/requery-processor/src/main/java/io/requery/processor/EntityType.java @@ -22,7 +22,6 @@ import io.requery.PropertyNameStyle; import io.requery.ReadOnly; import io.requery.Table; -import io.requery.Transient; import javax.annotation.processing.ProcessingEnvironment; import javax.lang.model.SourceVersion; @@ -156,7 +155,6 @@ private boolean isMethodProcessable(ExecutableElement element) { (isImmutable() || !element.getModifiers().contains(Modifier.FINAL)) && (!isImmutable() || !type.equals(element().asType())) && !type.equals(builderType().map(Element::asType).orElse(null)) && - !Mirrors.findAnnotationMirror(element, Transient.class).isPresent() && !element.getModifiers().contains(Modifier.STATIC) && !name.equals("toString") && !name.equals("hashCode"); }