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;
  }
}

Reply via email to