[jOOQ/jOOQ#10812] Compilation error in KotlinGenerator generated code when <enumConverter/> flag is turned on
This commit is contained in:
parent
32966556b1
commit
65b97aed0e
@ -153,12 +153,10 @@ import org.jooq.meta.IndexDefinition;
|
||||
import org.jooq.meta.JavaTypeResolver;
|
||||
import org.jooq.meta.PackageDefinition;
|
||||
import org.jooq.meta.ParameterDefinition;
|
||||
import org.jooq.meta.PositionedDefinition;
|
||||
import org.jooq.meta.RoutineDefinition;
|
||||
import org.jooq.meta.SchemaDefinition;
|
||||
import org.jooq.meta.SequenceDefinition;
|
||||
import org.jooq.meta.TableDefinition;
|
||||
import org.jooq.meta.TableElementDefinition;
|
||||
import org.jooq.meta.TypedElementDefinition;
|
||||
import org.jooq.meta.UDTDefinition;
|
||||
import org.jooq.meta.UniqueKeyDefinition;
|
||||
@ -8046,6 +8044,24 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String constructorCall(String type) {
|
||||
String rawtype = type.replaceAll("<.*>", "").replaceAll("\\[.*\\]", "");
|
||||
String typeParams = type.replace(rawtype, "");
|
||||
|
||||
switch (language) {
|
||||
case SCALA:
|
||||
return "new " + out.ref(rawtype) + typeParams.replace("<", "[").replace(">", "]");
|
||||
|
||||
case KOTLIN:
|
||||
return out.ref(rawtype) + typeParams;
|
||||
|
||||
case JAVA:
|
||||
default:
|
||||
return "new " + out.ref(rawtype) + typeParams;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String ref(String type) {
|
||||
return out.ref(type);
|
||||
|
||||
@ -153,6 +153,11 @@ public abstract class AbstractTypedElementDefinition<T extends Definition>
|
||||
public String classLiteral(String type) {
|
||||
return type + ".class";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String constructorCall(String type) {
|
||||
return "new " + type;
|
||||
}
|
||||
});
|
||||
|
||||
return type;
|
||||
@ -252,7 +257,7 @@ public abstract class AbstractTypedElementDefinition<T extends Definition>
|
||||
if (Boolean.TRUE.equals(customType.isEnumConverter()) ||
|
||||
EnumConverter.class.getName().equals(customType.getConverter())) {
|
||||
String tType = tType(db, resolver, definedType);
|
||||
converter = "new " + EnumConverter.class.getName() + "<" + tType + ", " + uType + ">(" + resolver.classLiteral(tType) + ", " + resolver.classLiteral(uType) + ")";
|
||||
converter = resolver.constructorCall(EnumConverter.class.getName() + "<" + resolver.ref(tType) + ", " + resolver.ref(uType) + ">") + "(" + resolver.classLiteral(tType) + ", " + resolver.classLiteral(uType) + ")";
|
||||
}
|
||||
else if (customType.getLambdaConverter() != null) {
|
||||
LambdaConverter c = customType.getLambdaConverter();
|
||||
|
||||
@ -65,6 +65,18 @@ public interface JavaTypeResolver {
|
||||
*/
|
||||
String classLiteral(String type);
|
||||
|
||||
/**
|
||||
* Get a language dependent constructor call for a type.
|
||||
* <p>
|
||||
* <table>
|
||||
* <tr><th>Language</th><th>Output for <code>String</code></th></tr>
|
||||
* <tr><td>Java</td><td><code>new EnumConverter<A, B></code></td></tr>
|
||||
* <tr><td>Scala</td><td><code>new EnumConverter[A, B]</code></td></tr>
|
||||
* <tr><td>Kotlin</td><td><code>EnumConverter<A, B></code></td></tr>
|
||||
* </table>
|
||||
*/
|
||||
String constructorCall(String type);
|
||||
|
||||
/**
|
||||
* Get the unqualified type reference and add an import for the qualified
|
||||
* type, if necessary.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user