From 2ae8460ef0fd6ffd62b0a10f1b9856cc92e477c2 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Mon, 25 Jul 2016 11:23:00 +0200 Subject: [PATCH] [#5457] "overriding method fields in class AbstractRecord" compilation error when using ScalaGenerator on tables containing columns like "fields", "configuration", etc. --- .../jooq/util/GeneratorStrategyWrapper.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategyWrapper.java b/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategyWrapper.java index 3ebd4a4a9d..6a7aab4fa1 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategyWrapper.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategyWrapper.java @@ -43,6 +43,7 @@ package org.jooq.util; import static org.jooq.util.GenerationUtil.convertToIdentifier; import java.io.Serializable; +import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; @@ -234,9 +235,8 @@ class GeneratorStrategyWrapper extends AbstractGeneratorStrategy { * class hierarchy of a generated class */ private Set reservedColumns(Class clazz) { - if (clazz == null) { + if (clazz == null) return Collections.emptySet(); - } Set result = reservedColumns.get(clazz); @@ -246,17 +246,18 @@ class GeneratorStrategyWrapper extends AbstractGeneratorStrategy { // Recurse up in class hierarchy result.addAll(reservedColumns(clazz.getSuperclass())); - for (Class c : clazz.getInterfaces()) { + for (Class c : clazz.getInterfaces()) result.addAll(reservedColumns(c)); - } - for (Method m : clazz.getDeclaredMethods()) { - String name = m.getName(); + for (Method m : clazz.getDeclaredMethods()) + if (m.getParameterTypes().length == 0) + result.add(m.getName()); - if (name.startsWith("get") && m.getParameterTypes().length == 0) { - result.add(name); - } - } + // [#5457] In Scala, we must not "override" any inherited members, even if they're private + // or package private, and thus not visible + if (language == Language.SCALA) + for (Field f : clazz.getDeclaredFields()) + result.add(f.getName()); } return result;