From ea4b74c95d3f0d20bff6639fb75884ed88f8dedb Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Sun, 22 Dec 2019 11:33:27 -0500 Subject: [PATCH] add support for cascade flag, helps avoid circularities --- .../wizard/model/entityconfig/EntityReferences.java | 5 ++++- .../wizard/model/entityconfig/annotations/ECForeignKey.java | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/EntityReferences.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/EntityReferences.java index aece083..aaa57aa 100644 --- a/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/EntityReferences.java +++ b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/EntityReferences.java @@ -34,6 +34,9 @@ public class EntityReferences { public static final Predicate FIELD_HAS_FK = f -> f.getAnnotation(ECForeignKey.class) != null; + public static final Predicate FIELD_HAS_CASCADING_FK + = f -> f.getAnnotation(ECForeignKey.class) != null && f.getAnnotation(ECForeignKey.class).cascade(); + public static final Predicate FIELD_HAS_INDEX = f -> f.getAnnotation(ECIndex.class) != null; @@ -69,7 +72,7 @@ public class EntityReferences { final List> refs = new ArrayList<>(); while (!clazz.getName().equals(Object.class.getName())) { refs.addAll(Arrays.stream(clazz.getDeclaredFields()) - .filter(EntityReferences.FIELD_HAS_FK) + .filter(EntityReferences.FIELD_HAS_CASCADING_FK) .map(EntityReferences.FIELD_TO_FK_CLASS) .collect(Collectors.toList())); clazz = clazz.getSuperclass(); diff --git a/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/annotations/ECForeignKey.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/annotations/ECForeignKey.java index 1a99c40..3ca5989 100644 --- a/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/annotations/ECForeignKey.java +++ b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/annotations/ECForeignKey.java @@ -13,5 +13,6 @@ public @interface ECForeignKey { Class entity(); String field() default "uuid"; boolean index() default true; + boolean cascade() default true; }