I'm sure this is entirely a hole of my own digging, but I'm stuck,
un-sure which part is broken.
I started to move to java 15 but the code generation step failed.
However if I revert to java 11 I get the same error as follows:
Dec 07, 2020 11:55:58 AM org.jooq.tools.JooqLogger warn
WARNING: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber:
6235; cvc-complex-type.2.4.a: Invalid content was found starting
with element
'{"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":primaryKeyTypes}'.
One of
'{"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":generatedAnnotationDate,
"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":constructorPropertiesAnnotation,
"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":constructorPropertiesAnnotationOnPojos,
"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":constructorPropertiesAnnotationOnRecords,
"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":pojosAsJavaRecordClasses,
"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":pojosAsScalaCaseClasses,
"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":pojosAsKotlinDataClasses,
"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":jpaVersion,
"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":globalDomainReferences,
"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":commentsOnEmbeddables,
"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":generatedSerialVersionUID,
"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":maxMembersPerInitialiser,
"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":newline,
"http://www.jooq.org/xsd/jooq-codegen-3.14.0.xsd":indentation}' is
expected.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by
com.sun.xml.bind.v2.runtime.reflect.opt.Injector
(file:/home/rob/.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-impl/2.3.0.1/2e979dabb3e5e74a0686115075956391a14dece8/jaxb-impl-2.3.0.1.jar)
to method
java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int)
WARNING: Please consider reporting this to the maintainers of
com.sun.xml.bind.v2.runtime.reflect.opt.Injector
WARNING: Use --illegal-access=warn to enable warnings of further
illegal reflective access operations
WARNING: All illegal access operations will be denied in a future
release
Dec 07, 2020 11:55:59 AM org.jooq.tools.JooqLogger error
SEVERE: Cannot read
/home/rob/gits/gitlab/sgs4/jooq/build/tmp/generateJooq/config.xml.
Error : Error generating code for catalog
org.jooq.codegen.GeneratorException: Error generating code for catalog
at org.jooq.codegen.JavaGenerator.generate(JavaGenerator.java:441)
at org.jooq.codegen.GenerationTool.run0(GenerationTool.java:879)
at org.jooq.codegen.GenerationTool.run(GenerationTool.java:233)
at
org.jooq.codegen.GenerationTool.generate(GenerationTool.java:228)
at org.jooq.codegen.GenerationTool.main(GenerationTool.java:200)
Caused by: java.lang.NullPointerException
at org.jooq.codegen.JavaWriter.beforeClose(JavaWriter.java:227)
at org.jooq.codegen.GeneratorWriter.close(GeneratorWriter.java:339)
at
org.jooq.codegen.JavaGenerator.closeJavaWriter(JavaGenerator.java:8566)
at
org.jooq.codegen.JavaGenerator.generateCatalog(JavaGenerator.java:6253)
at org.jooq.codegen.JavaGenerator.generate(JavaGenerator.java:531)
at org.jooq.codegen.JavaGenerator.generate(JavaGenerator.java:436)
... 4 more
and I'm not sure which warning is, shall we say, understated. Is it the
'invalid content' or the 'Illegal reflective access'. I have attacted
the generated config.xml as well as my extension of JavaGenerator.
Also, I don't explicitly involve com.sun.xml.bind/jaxb-impl/2.3.0.1 and
am wondering how to get round that.
--
You received this message because you are subscribed to the Google Groups "jOOQ User
Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jooq-user/ba070c23-85ee-fe1b-eadb-1224af0a4fed%40gmail.com.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-3.13.0.xsd"><logging>WARN</logging><onError>FAIL</onError><jdbc><driver>org.postgresql.Driver</driver><url>jdbc:postgresql://localhost:5432/sgsdev</url><user>postgres</user><password>notnull</password></jdbc><generator><name>edu.utah.camplab.jooq.JxonAnnotationGenerator</name><strategy><name>org.jooq.codegen.DefaultGeneratorStrategy</name></strategy><database><name>org.jooq.meta.postgres.PostgresDatabase</name><regexMatchesPartialQualification>true</regexMatchesPartialQualification><sqlMatchesPartialQualification>true</sqlMatchesPartialQualification><includes>.*</includes><excludes></excludes><includeExcludeColumns>false</includeExcludeColumns><includeTables>true</includeTables><includeEmbeddables>true</includeEmbeddables><includeRoutines>true</includeRoutines><includeTriggerRoutines>false</includeTriggerRoutines><includePackages>true</includePackages><includePackageRoutines>true</includePackageRoutines><includePackageUDTs>true</includePackageUDTs><includePackageConstants>true</includePackageConstants><includeUDTs>true</includeUDTs><includeSequences>true</includeSequences><includeIndexes>true</includeIndexes><includePrimaryKeys>true</includePrimaryKeys><includeUniqueKeys>true</includeUniqueKeys><includeForeignKeys>true</includeForeignKeys><includeCheckConstraints>true</includeCheckConstraints><includeSystemIndexes>false</includeSystemIndexes><includeSystemCheckConstraints>false</includeSystemCheckConstraints><includeInvisibleColumns>true</includeInvisibleColumns><recordVersionFields></recordVersionFields><recordTimestampFields></recordTimestampFields><syntheticIdentities></syntheticIdentities><syntheticPrimaryKeys></syntheticPrimaryKeys><overridePrimaryKeys></overridePrimaryKeys><dateAsTimestamp>false</dateAsTimestamp><ignoreProcedureReturnValues>false</ignoreProcedureReturnValues><unsignedTypes>true</unsignedTypes><integerDisplayWidths>true</integerDisplayWidths><inputCatalog></inputCatalog><outputCatalogToDefault>false</outputCatalogToDefault><inputSchema></inputSchema><outputSchemaToDefault>false</outputSchemaToDefault><schemaVersionProvider>select max(version::int) FROM public.flyway_schema_history</schemaVersionProvider><catalogVersionProvider></catalogVersionProvider><orderProvider></orderProvider><forceIntegerTypesOnZeroScaleDecimals>true</forceIntegerTypesOnZeroScaleDecimals><logSlowQueriesAfterSeconds>5</logSlowQueriesAfterSeconds><logSlowResultsAfterSeconds>5</logSlowResultsAfterSeconds><catalogs><catalog><inputCatalog></inputCatalog><outputCatalogToDefault>false</outputCatalogToDefault><schemata><schema><inputSchema>public</inputSchema><outputSchemaToDefault>false</outputSchemaToDefault></schema><schema><inputSchema>base</inputSchema><outputSchemaToDefault>false</outputSchemaToDefault></schema><schema><inputSchema>sgstemplate</inputSchema><outputSchemaToDefault>true</outputSchemaToDefault></schema></schemata></catalog></catalogs><forcedTypes><forcedType><userType>java.util.LocalDateTime</userType><converter>edu.utah.camplab.jooq.DateTimeConverter</converter><includeExpression>.*timestamp.*</includeExpression><nullability>ALL</nullability><objectType>ALL</objectType></forcedType></forcedTypes></database><generate><indexes>true</indexes><relations>true</relations><sequenceFlags>true</sequenceFlags><implicitJoinPathsToOne>true</implicitJoinPathsToOne><deprecated>false</deprecated><deprecationOnUnknownTypes>true</deprecationOnUnknownTypes><instanceFields>true</instanceFields><generatedAnnotation>false</generatedAnnotation><generatedAnnotationType>DETECT_FROM_JDK</generatedAnnotationType><nonnullAnnotation>false</nonnullAnnotation><nonnullAnnotationType>javax.annotation.Nonnull</nonnullAnnotationType><nullableAnnotation>false</nullableAnnotation><nullableAnnotationType>javax.annotation.Nullable</nullableAnnotationType><routines>true</routines><sequences>true</sequences><udts>true</udts><queues>true</queues><links>true</links><keys>true</keys><tables>true</tables><embeddables>true</embeddables><records>true</records><recordsImplementingRecordN>true</recordsImplementingRecordN><pojos>true</pojos><pojosEqualsAndHashCode>false</pojosEqualsAndHashCode><pojosToString>true</pojosToString><immutablePojos>false</immutablePojos><serializablePojos>true</serializablePojos><interfaces>false</interfaces><immutableInterfaces>false</immutableInterfaces><serializableInterfaces>true</serializableInterfaces><daos>false</daos><jpaAnnotations>false</jpaAnnotations><validationAnnotations>false</validationAnnotations><springAnnotations>false</springAnnotations><globalObjectReferences>true</globalObjectReferences><globalCatalogReferences>true</globalCatalogReferences><globalSchemaReferences>true</globalSchemaReferences><globalTableReferences>true</globalTableReferences><globalSequenceReferences>true</globalSequenceReferences><globalUDTReferences>true</globalUDTReferences><globalRoutineReferences>true</globalRoutineReferences><globalQueueReferences>true</globalQueueReferences><globalLinkReferences>true</globalLinkReferences><globalKeyReferences>true</globalKeyReferences><globalIndexReferences>true</globalIndexReferences><javadoc>true</javadoc><comments>true</comments><commentsOnCatalogs>true</commentsOnCatalogs><commentsOnSchemas>true</commentsOnSchemas><commentsOnTables>true</commentsOnTables><commentsOnColumns>true</commentsOnColumns><commentsOnUDTs>true</commentsOnUDTs><commentsOnAttributes>true</commentsOnAttributes><commentsOnPackages>true</commentsOnPackages><commentsOnRoutines>true</commentsOnRoutines><commentsOnParameters>true</commentsOnParameters><commentsOnSequences>true</commentsOnSequences><commentsOnLinks>true</commentsOnLinks><commentsOnQueues>true</commentsOnQueues><commentsOnKeys>true</commentsOnKeys><sources>true</sources><sourcesOnViews>true</sourcesOnViews><fluentSetters>true</fluentSetters><javaBeansGettersAndSetters>false</javaBeansGettersAndSetters><varargSetters>false</varargSetters><fullyQualifiedTypes></fullyQualifiedTypes><emptyCatalogs>false</emptyCatalogs><emptySchemas>false</emptySchemas><javaTimeTypes>true</javaTimeTypes><primaryKeyTypes>false</primaryKeyTypes><newline>\n</newline></generate><target><packageName>edu.utah.camplab.db.generated</packageName><directory>/home/rob/gits/gitlab/sgs4/jooq/src/main/java</directory><encoding>UTF-8</encoding><clean>true</clean></target></generator></configuration>
package edu.utah.camplab.jooq;
import java.util.ArrayList;
import java.util.List;
//import org.jooq.util.TableDefinition;
import org.jooq.codegen.DefaultGeneratorStrategy;
import org.jooq.codegen.GeneratorStrategy;
import org.jooq.codegen.JavaGenerator;
import org.jooq.codegen.JavaWriter;
import org.jooq.meta.Definition;
import org.jooq.meta.SchemaDefinition;
import org.jooq.tools.StringUtils;
/**
* We need to let JXON know how to deal with our transport classes
**/
public class JxonAnnotationGenerator extends JavaGenerator {
//@Override
protected void printClassAnnotations(JavaWriter out, SchemaDefinition schema, GeneratorStrategy.Mode mode) {
if (out.file().getAbsolutePath().contains("pojo")) {
String pack = getStrategy().getJavaPackageName(schema, DefaultGeneratorStrategy.Mode.POJO);
System.out.println("package: " + pack);
String[] parts = out.file().getName().split("\\.");
String nomDeClass = pack + ".tables.pojos." + parts[0];
System.out.println("Add annotations to " + nomDeClass);
out.println("@%s(use=%s.Id.MINIMAL_CLASS, include=%s.As.PROPERTY, property=\"class\")",
"JsonTypeInfo",
"JsonTypeInfo",
"JsonTypeInfo");
;
out.println("@JsonTypeName(\"%s\")", nomDeClass);
out.println("@JsonFormat(shape=JsonFormat.Shape.ARRAY)");
out.println("@JsonPropertyOrder(alphabetic=true)");
}
printClassAnnotations(out, schema, mode);
}
protected void printPackage(JavaWriter out, Definition definition, DefaultGeneratorStrategy.Mode mode) {
String header = getStrategy().getFileHeader(definition, mode);
if (!StringUtils.isBlank(header)) {
out.println("/*");
printJavadocParagraph(out, header, "");
out.println("*/");
}
out.println("package %s;", getStrategy().getJavaPackageName(definition, mode));
out.println();
if (mode == DefaultGeneratorStrategy.Mode.POJO) {
List<String> importeds = new ArrayList<>();
importeds.add("com.fasterxml.jackson.annotation.JsonCreator");
importeds.add("com.fasterxml.jackson.annotation.JsonTypeInfo");
importeds.add("com.fasterxml.jackson.annotation.JsonTypeName");
importeds.add("com.fasterxml.jackson.annotation.JsonFormat");
importeds.add("com.fasterxml.jackson.annotation.JsonPropertyOrder");
out.ref(importeds);
}
out.printImports();
out.println();
}
}
import java.sql.Timestamp;
import java.time.LocalDateTime;
import org.jooq.Converter;
public class TimestampConverter implements Converter<Timestamp, LocalDateTime> {
@Override
public LocalDateTime from(Timestamp t) {
System.out.println("from timestamp");
return t == null ? null : LocalDateTime.parse(t.toString());
}
@Override
public Timestamp to(LocalDateTime u) {
return u == null ? null : Timestamp.valueOf(u.toString());
}
@Override
public Class<Timestamp> fromType() {
return Timestamp.class;
}
@Override
public Class<LocalDateTime> toType() {
return LocalDateTime.class;
}
}