diff --git a/bom/application/pom.xml b/bom/application/pom.xml index 021b108284740..4494d9119170a 100644 --- a/bom/application/pom.xml +++ b/bom/application/pom.xml @@ -168,7 +168,9 @@ 3.0.2.Final 9.21.2 3.0.3 - 4.20.0 + + 4.23.1 + 4.23.0 2.1 6.0.0 4.10.2 @@ -5893,6 +5895,10 @@ javax.xml.bind jaxb-api + + javax.activation + * + @@ -5904,7 +5910,7 @@ org.liquibase.ext liquibase-mongodb - ${liquibase.version} + ${liquibase-mongodb.version} org.codehaus.groovy diff --git a/extensions/liquibase-mongodb/deployment/src/main/java/io/quarkus/liquibase/mongodb/deployment/LiquibaseMongodbProcessor.java b/extensions/liquibase-mongodb/deployment/src/main/java/io/quarkus/liquibase/mongodb/deployment/LiquibaseMongodbProcessor.java index 64eb0713a8faf..f043f34fb046f 100644 --- a/extensions/liquibase-mongodb/deployment/src/main/java/io/quarkus/liquibase/mongodb/deployment/LiquibaseMongodbProcessor.java +++ b/extensions/liquibase-mongodb/deployment/src/main/java/io/quarkus/liquibase/mongodb/deployment/LiquibaseMongodbProcessor.java @@ -33,10 +33,10 @@ import io.quarkus.deployment.builditem.ApplicationInfoBuildItem; import io.quarkus.deployment.builditem.CombinedIndexBuildItem; import io.quarkus.deployment.builditem.FeatureBuildItem; +import io.quarkus.deployment.builditem.IndexDependencyBuildItem; import io.quarkus.deployment.builditem.InitTaskBuildItem; import io.quarkus.deployment.builditem.InitTaskCompletedBuildItem; import io.quarkus.deployment.builditem.ServiceStartBuildItem; -import io.quarkus.deployment.builditem.SystemPropertyBuildItem; import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem; import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBundleBuildItem; import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; @@ -61,6 +61,7 @@ import liquibase.exception.LiquibaseException; import liquibase.parser.ChangeLogParser; import liquibase.parser.ChangeLogParserFactory; +import liquibase.plugin.AbstractPluginFactory; import liquibase.resource.ClassLoaderResourceAccessor; class LiquibaseMongodbProcessor { @@ -74,12 +75,11 @@ FeatureBuildItem feature() { return new FeatureBuildItem(Feature.LIQUIBASE_MONGODB); } - @BuildStep - public SystemPropertyBuildItem disableHub() { - // Don't block app startup with prompt: - // Do you want to see this operation's report in Liquibase Hub, which improves team collaboration? - // If so, enter your email. If not, enter [N] to no longer be prompted, or [S] to skip for now, but ask again next time (default "S"): - return new SystemPropertyBuildItem("liquibase.hub.mode", "off"); + @BuildStep(onlyIf = NativeOrNativeSourcesBuild.class) + List indexLiquibase() { + return List.of( + new IndexDependencyBuildItem("org.liquibase", "liquibase-core"), + new IndexDependencyBuildItem("org.liquibase.ext", "liquibase-mongodb")); } @BuildStep(onlyIf = NativeOrNativeSourcesBuild.class) @@ -103,18 +103,23 @@ void nativeImageConfiguration( liquibase.database.jvm.JdbcConnection.class.getName()) .methods().build()); + reflective.produce(ReflectiveClassBuildItem + .builder(combinedIndex.getIndex().getAllKnownSubclasses(AbstractPluginFactory.class).stream() + .map(classInfo -> classInfo.name().toString()) + .toArray(String[]::new)) + .constructors().build()); + + reflective.produce(ReflectiveClassBuildItem + .builder(liquibase.command.CommandFactory.class.getName(), + // deprecated, but still used by liquibase.nosql.lockservice.AbstractNoSqlLockService + liquibase.configuration.GlobalConfiguration.class.getName()) + .constructors().build()); + reflective.produce(ReflectiveClassBuildItem.builder( liquibase.parser.ChangeLogParserConfiguration.class.getName(), - liquibase.hub.HubServiceFactory.class.getName(), - liquibase.logging.core.DefaultLoggerConfiguration.class.getName(), - // deprecated, but still used by liquibase.nosql.lockservice.AbstractNoSqlLockService - liquibase.configuration.GlobalConfiguration.class.getName(), liquibase.GlobalConfiguration.class.getName(), - liquibase.license.LicenseServiceFactory.class.getName(), liquibase.executor.ExecutorService.class.getName(), liquibase.change.ChangeFactory.class.getName(), - liquibase.logging.core.LogServiceFactory.class.getName(), - liquibase.logging.LogFactory.class.getName(), liquibase.change.ColumnConfig.class.getName(), liquibase.change.AddColumnConfig.class.getName(), liquibase.change.core.LoadDataColumnConfig.class.getName(), @@ -122,9 +127,7 @@ void nativeImageConfiguration( liquibase.sql.visitor.ReplaceSqlVisitor.class.getName(), liquibase.sql.visitor.AppendSqlVisitor.class.getName(), liquibase.sql.visitor.RegExpReplaceSqlVisitor.class.getName(), - liquibase.ext.mongodb.database.MongoClientDriver.class.getName(), - liquibase.resource.PathHandlerFactory.class.getName(), - liquibase.logging.mdc.MdcManagerFactory.class.getName()) + liquibase.ext.mongodb.database.MongoClientDriver.class.getName()) .constructors().methods().fields().build()); reflective.produce(ReflectiveClassBuildItem.builder( @@ -170,7 +173,6 @@ void nativeImageConfiguration( liquibase.snapshot.SnapshotGenerator.class, liquibase.sqlgenerator.SqlGenerator.class, liquibase.structure.DatabaseObject.class, - liquibase.hub.HubService.class, liquibase.logging.mdc.MdcManager.class) .forEach(t -> addService(services, reflective, t, false)); @@ -196,6 +198,10 @@ void nativeImageConfiguration( "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.17.xsd", "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.18.xsd", "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.19.xsd", + "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.20.xsd", + "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.21.xsd", + "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.22.xsd", + "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.23.xsd", "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd", "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd", "liquibase.build.properties")); diff --git a/extensions/liquibase-mongodb/runtime/src/main/java/io/quarkus/liquibase/mongodb/LiquibaseMongodbFactory.java b/extensions/liquibase-mongodb/runtime/src/main/java/io/quarkus/liquibase/mongodb/LiquibaseMongodbFactory.java index e8744a52b193a..e98532a448bae 100644 --- a/extensions/liquibase-mongodb/runtime/src/main/java/io/quarkus/liquibase/mongodb/LiquibaseMongodbFactory.java +++ b/extensions/liquibase-mongodb/runtime/src/main/java/io/quarkus/liquibase/mongodb/LiquibaseMongodbFactory.java @@ -3,6 +3,7 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collectors; import io.quarkus.liquibase.mongodb.runtime.LiquibaseMongodbBuildTimeConfig; import io.quarkus.liquibase.mongodb.runtime.LiquibaseMongodbConfig; @@ -91,7 +92,9 @@ public LiquibaseMongodbConfig getConfiguration() { * @return the label expression */ public LabelExpression createLabels() { - return new LabelExpression(liquibaseMongodbConfig.labels.orElse(null)); + // need to join because of https://github.com/liquibase/liquibase/issues/4763 + return new LabelExpression( + liquibaseMongodbConfig.labels.map(labels -> labels.stream().collect(Collectors.joining(","))).orElse(null)); } /** diff --git a/extensions/liquibase/deployment/src/main/java/io/quarkus/liquibase/deployment/LiquibaseProcessor.java b/extensions/liquibase/deployment/src/main/java/io/quarkus/liquibase/deployment/LiquibaseProcessor.java index 4d6c65e2b30f5..52b2e76afd401 100644 --- a/extensions/liquibase/deployment/src/main/java/io/quarkus/liquibase/deployment/LiquibaseProcessor.java +++ b/extensions/liquibase/deployment/src/main/java/io/quarkus/liquibase/deployment/LiquibaseProcessor.java @@ -49,7 +49,6 @@ import io.quarkus.deployment.builditem.InitTaskBuildItem; import io.quarkus.deployment.builditem.InitTaskCompletedBuildItem; import io.quarkus.deployment.builditem.ServiceStartBuildItem; -import io.quarkus.deployment.builditem.SystemPropertyBuildItem; import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem; import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBundleBuildItem; import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; @@ -75,6 +74,7 @@ import liquibase.exception.LiquibaseException; import liquibase.parser.ChangeLogParser; import liquibase.parser.ChangeLogParserFactory; +import liquibase.plugin.AbstractPluginFactory; import liquibase.resource.ClassLoaderResourceAccessor; class LiquibaseProcessor { @@ -90,14 +90,6 @@ FeatureBuildItem feature() { return new FeatureBuildItem(Feature.LIQUIBASE); } - @BuildStep - public SystemPropertyBuildItem disableHub() { - // Don't block app startup with prompt: - // Do you want to see this operation's report in Liquibase Hub, which improves team collaboration? - // If so, enter your email. If not, enter [N] to no longer be prompted, or [S] to skip for now, but ask again next time (default "S"): - return new SystemPropertyBuildItem("liquibase.hub.mode", "off"); - } - @BuildStep(onlyIf = NativeOrNativeSourcesBuild.class) IndexDependencyBuildItem indexLiquibase() { return new IndexDependencyBuildItem("org.liquibase", "liquibase-core"); @@ -126,29 +118,26 @@ void nativeImageConfiguration( .build()); reflective.produce(ReflectiveClassBuildItem - .builder("liquibase.command.LiquibaseCommandFactory", - liquibase.command.CommandFactory.class.getName()) + .builder(combinedIndex.getIndex().getAllKnownSubclasses(AbstractPluginFactory.class).stream() + .map(classInfo -> classInfo.name().toString()) + .toArray(String[]::new)) + .constructors().build()); + + reflective.produce(ReflectiveClassBuildItem + .builder(liquibase.command.CommandFactory.class.getName()) .constructors().build()); reflective.produce(ReflectiveClassBuildItem.builder( liquibase.parser.ChangeLogParserConfiguration.class.getName(), - liquibase.hub.HubServiceFactory.class.getName(), - liquibase.logging.core.DefaultLoggerConfiguration.class.getName(), liquibase.GlobalConfiguration.class.getName(), - liquibase.license.LicenseServiceFactory.class.getName(), liquibase.executor.ExecutorService.class.getName(), - liquibase.change.ChangeFactory.class.getName(), - liquibase.logging.core.LogServiceFactory.class.getName(), - liquibase.logging.LogFactory.class.getName(), liquibase.change.ColumnConfig.class.getName(), liquibase.change.AddColumnConfig.class.getName(), liquibase.change.core.LoadDataColumnConfig.class.getName(), liquibase.sql.visitor.PrependSqlVisitor.class.getName(), liquibase.sql.visitor.ReplaceSqlVisitor.class.getName(), liquibase.sql.visitor.AppendSqlVisitor.class.getName(), - liquibase.sql.visitor.RegExpReplaceSqlVisitor.class.getName(), - liquibase.resource.PathHandlerFactory.class.getName(), - liquibase.logging.mdc.MdcManagerFactory.class.getName()) + liquibase.sql.visitor.RegExpReplaceSqlVisitor.class.getName()) .constructors().methods().fields().build()); reflective.produce(ReflectiveClassBuildItem.builder( @@ -201,7 +190,6 @@ void nativeImageConfiguration( liquibase.snapshot.SnapshotGenerator.class, liquibase.sqlgenerator.SqlGenerator.class, liquibase.structure.DatabaseObject.class, - liquibase.hub.HubService.class, liquibase.logging.mdc.MdcManager.class) .forEach(t -> consumeService(t, (serviceClass, implementations) -> { services.produce( @@ -244,6 +232,10 @@ void nativeImageConfiguration( "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.17.xsd", "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.18.xsd", "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.19.xsd", + "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.20.xsd", + "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.21.xsd", + "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.22.xsd", + "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.23.xsd", "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd", "www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd", "liquibase.build.properties")); diff --git a/extensions/liquibase/runtime/src/main/java/io/quarkus/liquibase/LiquibaseFactory.java b/extensions/liquibase/runtime/src/main/java/io/quarkus/liquibase/LiquibaseFactory.java index 00b34a5af882c..dd66fe3cb15ac 100644 --- a/extensions/liquibase/runtime/src/main/java/io/quarkus/liquibase/LiquibaseFactory.java +++ b/extensions/liquibase/runtime/src/main/java/io/quarkus/liquibase/LiquibaseFactory.java @@ -1,6 +1,7 @@ package io.quarkus.liquibase; import java.util.Map; +import java.util.stream.Collectors; import javax.sql.DataSource; @@ -71,7 +72,10 @@ public LiquibaseConfig getConfiguration() { * @return the label expression */ public LabelExpression createLabels() { - return new LabelExpression(config.labels); + // need to join because of https://github.com/liquibase/liquibase/issues/4763 + return new LabelExpression(config.labels != null + ? config.labels.stream().collect(Collectors.joining(",")) + : null); } /**