From 45097fd05d2cfd63561b64e8ff02e8a8b06cff91 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 14 Jan 2020 17:23:57 +0100 Subject: [PATCH] [jOOQ/jOOQ#8677] Log warning when file based databases have invalid configurations --- .../java/org/jooq/codegen/GenerationTool.java | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java index 288f7169a8..f831de0d39 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java @@ -293,6 +293,9 @@ public class GenerationTool { if (g == null) throw new GeneratorException("The tag is mandatory. For details, see " + Constants.NS_CODEGEN); + org.jooq.meta.jaxb.Database d = defaultIfNull(g.getDatabase(), new org.jooq.meta.jaxb.Database()); + String databaseName = trim(d.getName()); + // [#1394] The element and some others should be optional if (g.getGenerate() == null) g.setGenerate(new Generate()); @@ -339,15 +342,24 @@ public class GenerationTool { } if (j != null) { - Class driver = (Class) loadClass(driverClass(j)); + try { + Class driver = (Class) loadClass(driverClass(j)); - Properties properties = properties(j.getProperties()); - if (!properties.containsKey("user")) - properties.put("user", defaultString(defaultString(j.getUser(), j.getUsername()))); - if (!properties.containsKey("password")) - properties.put("password", defaultString(j.getPassword())); + Properties properties = properties(j.getProperties()); + if (!properties.containsKey("user")) + properties.put("user", defaultString(defaultString(j.getUser(), j.getUsername()))); + if (!properties.containsKey("password")) + properties.put("password", defaultString(j.getPassword())); - connection = driver.newInstance().connect(defaultString(j.getUrl()), properties); + connection = driver.newInstance().connect(defaultString(j.getUrl()), properties); + } + catch (Exception e) { + if (databaseName != null) + if (databaseName.contains("DDLDatabase") || databaseName.contains("XMLDatabase") || databaseName.contains("JPADatabase")) + log.warn("Error while connecting to database. Note that file based database implementations do not need a configuration in the code generator.", e); + + throw e; + } } } } @@ -392,8 +404,6 @@ public class GenerationTool { generator.setStrategy(strategy); - org.jooq.meta.jaxb.Database d = defaultIfNull(g.getDatabase(), new org.jooq.meta.jaxb.Database()); - String databaseName = trim(d.getName()); Class databaseClass = !isBlank(databaseName) ? (Class) loadClass(databaseName) : connection != null