summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/iciql/Iciql.java8
-rw-r--r--src/main/java/com/iciql/TableDefinition.java44
2 files changed, 26 insertions, 26 deletions
diff --git a/src/main/java/com/iciql/Iciql.java b/src/main/java/com/iciql/Iciql.java
index b303372..302b34d 100644
--- a/src/main/java/com/iciql/Iciql.java
+++ b/src/main/java/com/iciql/Iciql.java
@@ -474,8 +474,8 @@ public interface Iciql {
/**
* The inherit columns allows this model class to inherit columns from
- * its super class. Any IQTable annotation present on the super class is
- * ignored. Default: false.
+ * its super class. IQTable and IQView annotations present on the super
+ * class or above are honored. Default: false.
*/
boolean inheritColumns() default false;
@@ -549,8 +549,8 @@ public interface Iciql {
/**
* The inherit columns allows this model class to inherit columns from
- * its super class. Any IQTable annotation present on the super class is
- * ignored. Default: false.
+ * its super class. IQTable and IQView annotations present on the super
+ * class or above are honored. Default: false.
*/
boolean inheritColumns() default false;
diff --git a/src/main/java/com/iciql/TableDefinition.java b/src/main/java/com/iciql/TableDefinition.java
index e4fff87..e07cee6 100644
--- a/src/main/java/com/iciql/TableDefinition.java
+++ b/src/main/java/com/iciql/TableDefinition.java
@@ -439,28 +439,7 @@ public class TableDefinition<T> {
inheritColumns = viewAnnotation.inheritColumns();
}
- List<Field> classFields = Utils.newArrayList();
- classFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
- if (inheritColumns) {
- Class<?> superClass = clazz.getSuperclass();
- classFields.addAll(Arrays.asList(superClass.getDeclaredFields()));
-
- if (superClass.isAnnotationPresent(IQView.class)) {
- IQView superView = superClass.getAnnotation(IQView.class);
- if (superView.inheritColumns()) {
- // inherit columns from super.super.class
- Class<?> superSuperClass = superClass.getSuperclass();
- classFields.addAll(Arrays.asList(superSuperClass.getDeclaredFields()));
- }
- } else if (superClass.isAnnotationPresent(IQTable.class)) {
- IQTable superTable = superClass.getAnnotation(IQTable.class);
- if (superTable.inheritColumns()) {
- // inherit columns from super.super.class
- Class<?> superSuperClass = superClass.getSuperclass();
- classFields.addAll(Arrays.asList(superSuperClass.getDeclaredFields()));
- }
- }
- }
+ List<Field> classFields = classFields(inheritColumns);
Set<FieldDefinition> uniqueFields = new LinkedHashSet<FieldDefinition>();
T defaultObject = Db.instance(clazz);
@@ -606,6 +585,27 @@ public class TableDefinition<T> {
}
}
+ private List<Field> classFields(boolean inheritColumns) {
+ List<Field> classFields = Utils.newArrayList();
+ classFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
+ Class<?> superClass = clazz;
+ while (inheritColumns) {
+ superClass = superClass.getSuperclass();
+ classFields.addAll(Arrays.asList(superClass.getDeclaredFields()));
+
+ if (superClass.isAnnotationPresent(IQView.class)) {
+ IQView superView = superClass.getAnnotation(IQView.class);
+ inheritColumns = superView.inheritColumns();
+ } else if (superClass.isAnnotationPresent(IQTable.class)) {
+ IQTable superTable = superClass.getAnnotation(IQTable.class);
+ inheritColumns = superTable.inheritColumns();
+ } else {
+ inheritColumns = false;
+ }
+ }
+ return classFields;
+ }
+
void checkMultipleBooleans() {
if (multiplePrimitiveBools) {
throw new IciqlException(