From 9c1a9a2bb3eeea1344f256d1827d1a354d8be89f Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 9 Feb 2022 18:06:47 +0100 Subject: [PATCH] [jOOQ/jOOQ#13031] Add a rootPath property to the LiquibaseDatabase configuration for the FileSystemResourceAccessor --- .../liquibase/LiquibaseDatabase.java | 29 +++++++------------ pom.xml | 2 +- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/jOOQ-meta-extensions-liquibase/src/main/java/org/jooq/meta/extensions/liquibase/LiquibaseDatabase.java b/jOOQ-meta-extensions-liquibase/src/main/java/org/jooq/meta/extensions/liquibase/LiquibaseDatabase.java index 0cee5eb576..7356c7fd7e 100644 --- a/jOOQ-meta-extensions-liquibase/src/main/java/org/jooq/meta/extensions/liquibase/LiquibaseDatabase.java +++ b/jOOQ-meta-extensions-liquibase/src/main/java/org/jooq/meta/extensions/liquibase/LiquibaseDatabase.java @@ -39,12 +39,12 @@ package org.jooq.meta.extensions.liquibase; import static org.jooq.tools.StringUtils.isBlank; +import java.io.File; import java.lang.reflect.Method; import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -53,6 +53,7 @@ import org.jooq.meta.TableDefinition; import org.jooq.meta.extensions.AbstractInterpretingDatabase; import org.jooq.tools.Convert; import org.jooq.tools.JooqLogger; +import org.jooq.tools.StringUtils; import liquibase.Liquibase; import liquibase.database.Database; @@ -61,6 +62,7 @@ import liquibase.database.jvm.JdbcConnection; import liquibase.resource.ClassLoaderResourceAccessor; import liquibase.resource.CompositeResourceAccessor; import liquibase.resource.FileSystemResourceAccessor; +import liquibase.resource.ResourceAccessor; /** * The Liquibase database. @@ -100,6 +102,7 @@ public class LiquibaseDatabase extends AbstractInterpretingDatabase { @Override protected void export() throws Exception { + String rootPath = getProperties().getProperty("rootPath"); String scripts = getProperties().getProperty("scripts"); includeLiquibaseTables = Boolean.parseBoolean(getProperties().getProperty("includeLiquibaseTables", "false")); @@ -143,27 +146,15 @@ public class LiquibaseDatabase extends AbstractInterpretingDatabase { databaseChangeLogLockTableName = database.getDatabaseChangeLogLockTableName(); // [#9866] Allow for loading included files from the classpath or using absolute paths. - FileSystemResourceAccessor fsra; - - try { - fsra = new FileSystemResourceAccessor(); - } - - // [#11659] Continue supporting Liquibase 3.x - catch (NoSuchMethodError e) { - fsra = FileSystemResourceAccessor.class.getConstructor().newInstance(); - } - - Liquibase liquibase = new Liquibase( - scripts, - new CompositeResourceAccessor( - fsra, + // [#12872] [#13021] The decision is made based on the presence of the rootPath property + ResourceAccessor ra = StringUtils.isBlank(rootPath) + ? new CompositeResourceAccessor( new ClassLoaderResourceAccessor(), new ClassLoaderResourceAccessor(Thread.currentThread().getContextClassLoader()) - ), - database - ); + ) + : new FileSystemResourceAccessor(new File(rootPath)); + Liquibase liquibase = new Liquibase(scripts, ra, database); liquibase.update(contexts); } diff --git a/pom.xml b/pom.xml index 8a88fd8a98..2275688746 100644 --- a/pom.xml +++ b/pom.xml @@ -50,7 +50,7 @@ 5.6.1.Final - 4.4.1 + 4.4.3 5.3.14 2.6.1