From a0978700d54464723fca3d7e73326464b041b489 Mon Sep 17 00:00:00 2001 From: Matthias Wuttke Date: Sat, 9 Nov 2019 20:05:40 +0100 Subject: [PATCH 01/19] MaxDB sequence query --- .../liquibase/snapshot/jvm/SequenceSnapshotGenerator.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/liquibase-core/src/main/java/liquibase/snapshot/jvm/SequenceSnapshotGenerator.java b/liquibase-core/src/main/java/liquibase/snapshot/jvm/SequenceSnapshotGenerator.java index e7e2e72cb30..3ab7969f64e 100644 --- a/liquibase-core/src/main/java/liquibase/snapshot/jvm/SequenceSnapshotGenerator.java +++ b/liquibase-core/src/main/java/liquibase/snapshot/jvm/SequenceSnapshotGenerator.java @@ -242,9 +242,11 @@ protected String getSelectSequenceSql(Schema schema, Database database) { "FROM SYS.SYSSEQUENCE s " + "JOIN SYS.SYSUSER u ON s.OWNER = u.USER_ID "+ "WHERE u.USER_NAME = '" + schema.getName() + "'"; - } else { + } else if (database.getClass().getName().contains("MaxDB")) { + return "SELECT SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT_BY, CYCLE_FLAG AS WILL_CYCLE " + + "FROM sequences WHERE SCHEMANAME = '" + schema.getName() + "'"; + } else { throw new UnexpectedLiquibaseException("Don't know how to query for sequences on " + database); - } - + } } } From bf79f205787123925251eb75280d2cbaa130e048 Mon Sep 17 00:00:00 2001 From: Matthias Wuttke Date: Sat, 9 Nov 2019 21:10:46 +0100 Subject: [PATCH 02/19] Fix more queries for MaxDB --- .../main/java/liquibase/snapshot/JdbcDatabaseSnapshot.java | 5 +++++ .../snapshot/jvm/UniqueConstraintSnapshotGenerator.java | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/liquibase-core/src/main/java/liquibase/snapshot/JdbcDatabaseSnapshot.java b/liquibase-core/src/main/java/liquibase/snapshot/JdbcDatabaseSnapshot.java index 7d8bf181f78..0220847d66b 100644 --- a/liquibase-core/src/main/java/liquibase/snapshot/JdbcDatabaseSnapshot.java +++ b/liquibase-core/src/main/java/liquibase/snapshot/JdbcDatabaseSnapshot.java @@ -1432,6 +1432,11 @@ private String createSql(String catalogName, String schemaName, String tableName if (tableName != null) { sql += " and table_name='" + tableName + "'"; } + } else if (database.getClass().getName().contains("MaxDB")) { + sql = "select distinct tablename AS TABLE_NAME, constraintname AS CONSTRAINT_NAME from CONSTRAINTCOLUMNS WHERE CONSTRAINTTYPE = 'UNIQUE_CONST'"; + if (tableName != null) { + sql += " and tablename='" + tableName + "'"; + } } else if (database instanceof MSSQLDatabase) { sql = "SELECT " + diff --git a/liquibase-core/src/main/java/liquibase/snapshot/jvm/UniqueConstraintSnapshotGenerator.java b/liquibase-core/src/main/java/liquibase/snapshot/jvm/UniqueConstraintSnapshotGenerator.java index f925928eaa7..dd8aa4cf5d4 100644 --- a/liquibase-core/src/main/java/liquibase/snapshot/jvm/UniqueConstraintSnapshotGenerator.java +++ b/liquibase-core/src/main/java/liquibase/snapshot/jvm/UniqueConstraintSnapshotGenerator.java @@ -193,6 +193,10 @@ protected List listConstraints(Table table, DatabaseSnapshot snapshot + "and const.table_name='" + database.correctObjectName(example.getRelation().getName(), Table.class) + "' " + "and const.constraint_name='" + database.correctObjectName(name, UniqueConstraint.class) + "'" + "order by ordinal_position"; + } else if (database.getClass().getName().contains("MaxDB")) { + sql = "select CONSTRAINTNAME as constraint_name, COLUMNNAME as column_name from CONSTRAINTCOLUMNS WHERE CONSTRAINTTYPE = 'UNIQUE_CONST' AND tablename = '" + + database.correctObjectName(example.getRelation().getName(), Table.class) + "' AND constraintname = '" + + database.correctObjectName(name, UniqueConstraint.class) + "'"; } else if (database instanceof MSSQLDatabase) { sql = "SELECT " + From 26f9eac8d4958455c06c2c6e97c12c19c1666dfd Mon Sep 17 00:00:00 2001 From: Sergeev Viktor Date: Thu, 24 Jun 2021 08:00:09 +0300 Subject: [PATCH 03/19] made the logging of visitors(update/rollback) the same --- .../java/liquibase/changelog/visitor/UpdateVisitor.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/liquibase-core/src/main/java/liquibase/changelog/visitor/UpdateVisitor.java b/liquibase-core/src/main/java/liquibase/changelog/visitor/UpdateVisitor.java index a1517fed9a1..6b0609ff535 100644 --- a/liquibase-core/src/main/java/liquibase/changelog/visitor/UpdateVisitor.java +++ b/liquibase-core/src/main/java/liquibase/changelog/visitor/UpdateVisitor.java @@ -10,6 +10,9 @@ import liquibase.database.ObjectQuotingStrategy; import liquibase.exception.LiquibaseException; import liquibase.exception.MigrationFailedException; +import liquibase.executor.Executor; +import liquibase.executor.ExecutorService; +import liquibase.executor.LoggingExecutor; import java.util.Set; @@ -40,6 +43,10 @@ public Direction getDirection() { @Override public void visit(ChangeSet changeSet, DatabaseChangeLog databaseChangeLog, Database database, Set filterResults) throws LiquibaseException { + Executor executor = Scope.getCurrentScope().getSingleton(ExecutorService.class).getExecutor("jdbc", database); + if (! (executor instanceof LoggingExecutor)) { + Scope.getCurrentScope().getUI().sendMessage("Running Changeset:" + changeSet); + } ChangeSet.RunStatus runStatus = this.database.getRunStatus(changeSet); Scope.getCurrentScope().getLog(getClass()).fine("Running Changeset:" + changeSet); fireWillRun(changeSet, databaseChangeLog, database, runStatus); From c5d2ae47a108c3fb47ac5588d21e4c7aa14be767 Mon Sep 17 00:00:00 2001 From: cullencoyle Date: Fri, 5 Nov 2021 11:52:57 -0400 Subject: [PATCH 04/19] Issue #2152: Fix for Null Pointer Exception During Diff Change Log Generation --- .../output/changelog/core/ChangedColumnChangeGenerator.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/liquibase-core/src/main/java/liquibase/diff/output/changelog/core/ChangedColumnChangeGenerator.java b/liquibase-core/src/main/java/liquibase/diff/output/changelog/core/ChangedColumnChangeGenerator.java index 09a3ebcced1..581adc74820 100644 --- a/liquibase-core/src/main/java/liquibase/diff/output/changelog/core/ChangedColumnChangeGenerator.java +++ b/liquibase-core/src/main/java/liquibase/diff/output/changelog/core/ChangedColumnChangeGenerator.java @@ -81,6 +81,11 @@ public Change[] fixChanged(DatabaseObject changedObject, ObjectDifferences diffe change.setColumnName(column.getName()); change.setRemarks(column.getRemarks()); + LiquibaseDataType columnDataType = DataTypeFactory.getInstance().from(column.getType(), comparisonDatabase); + if (columnDataType != null) { + change.setColumnDataType(columnDataType.toString()); + } + changes.add(change); } From cef879f5e04df2f7f0cace2435705f7df5f3a134 Mon Sep 17 00:00:00 2001 From: Steven Massaro Date: Wed, 10 Nov 2021 12:31:08 -0600 Subject: [PATCH 05/19] Cleanup SQLite database after tests complete and JVM exits --- .../dbtest/sqlite/SQLiteIntegrationTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/liquibase-integration-tests/src/test/java/liquibase/dbtest/sqlite/SQLiteIntegrationTest.java b/liquibase-integration-tests/src/test/java/liquibase/dbtest/sqlite/SQLiteIntegrationTest.java index 0a62035fdab..e22d70a757c 100644 --- a/liquibase-integration-tests/src/test/java/liquibase/dbtest/sqlite/SQLiteIntegrationTest.java +++ b/liquibase-integration-tests/src/test/java/liquibase/dbtest/sqlite/SQLiteIntegrationTest.java @@ -73,4 +73,17 @@ public void testOutputChangeLog() throws Exception { assertTrue(true); } + @Override + public void tearDown() throws Exception { + super.tearDown(); + try { + String url = getDatabase().getConnection().getURL() + .replaceFirst("jdbc:sqlite:", ""); // remove the prefix of the URL jdbc:sqlite:C:\path\to\tmp\dir\liquibase.db + Scope.getCurrentScope().getLog(getClass()).info("Marking SQLite database as delete on exit: " + url); + // Want to delete the sqlite db on jvm exit so that future runs are not using stale data. + new File(url).deleteOnExit(); + } catch (Exception e) { + Scope.getCurrentScope().getLog(getClass()).warning("Failed to mark SQLite database as delete on exit.", e); + } + } } From 5c6f4dccd3e341eea093201457e0781634a43b39 Mon Sep 17 00:00:00 2001 From: Steven Massaro Date: Wed, 10 Nov 2021 13:30:23 -0600 Subject: [PATCH 06/19] Resolve SQLite test failure (unsure if this is the correct resolution to issue) --- .../resources/changelogs/sqlite/complete/root.changelog.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/liquibase-integration-tests/src/test/resources/changelogs/sqlite/complete/root.changelog.xml b/liquibase-integration-tests/src/test/resources/changelogs/sqlite/complete/root.changelog.xml index 5a0891b40a9..e201673d75e 100644 --- a/liquibase-integration-tests/src/test/resources/changelogs/sqlite/complete/root.changelog.xml +++ b/liquibase-integration-tests/src/test/resources/changelogs/sqlite/complete/root.changelog.xml @@ -84,7 +84,7 @@ - + From 648e2a0d5f10ec64183e21dcd0eec9cdac4cb537 Mon Sep 17 00:00:00 2001 From: Wesley Willard Date: Thu, 11 Nov 2021 08:22:32 -0600 Subject: [PATCH 07/19] Make lock granted time be consistent with change set executed time Enhance listLocks message LB-2126 --- liquibase-core/src/main/java/liquibase/Liquibase.java | 3 ++- .../sqlgenerator/core/LockDatabaseChangeLogGenerator.java | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/liquibase-core/src/main/java/liquibase/Liquibase.java b/liquibase-core/src/main/java/liquibase/Liquibase.java index f863099492e..5cdfa58aa39 100644 --- a/liquibase-core/src/main/java/liquibase/Liquibase.java +++ b/liquibase-core/src/main/java/liquibase/Liquibase.java @@ -1942,12 +1942,13 @@ public void reportLocks(PrintStream out) throws LiquibaseException { + "@" + getDatabase().getConnection().getURL()); if (locks.length == 0) { out.println(" - No locks"); + return; } for (DatabaseChangeLogLock lock : locks) { out.println(" - " + lock.getLockedBy() + " at " + DateFormat.getDateTimeInstance().format(lock.getLockGranted())); } - + out.println("NOTE: The lock time displayed is based on the database's configured time"); } public void forceReleaseLocks() throws LiquibaseException { diff --git a/liquibase-core/src/main/java/liquibase/sqlgenerator/core/LockDatabaseChangeLogGenerator.java b/liquibase-core/src/main/java/liquibase/sqlgenerator/core/LockDatabaseChangeLogGenerator.java index dfcd5933109..17d19558a03 100644 --- a/liquibase-core/src/main/java/liquibase/sqlgenerator/core/LockDatabaseChangeLogGenerator.java +++ b/liquibase-core/src/main/java/liquibase/sqlgenerator/core/LockDatabaseChangeLogGenerator.java @@ -8,6 +8,7 @@ import liquibase.sql.Sql; import liquibase.sqlgenerator.SqlGeneratorChain; import liquibase.sqlgenerator.SqlGeneratorFactory; +import liquibase.statement.DatabaseFunction; import liquibase.statement.core.LockDatabaseChangeLogStatement; import liquibase.statement.core.UpdateStatement; import liquibase.util.NetUtil; @@ -44,9 +45,10 @@ public Sql[] generateSql(LockDatabaseChangeLogStatement statement, Database data ObjectQuotingStrategy currentStrategy = database.getObjectQuotingStrategy(); database.setObjectQuotingStrategy(ObjectQuotingStrategy.LEGACY); try { + String dateValue = database.getCurrentDateTimeFunction(); UpdateStatement updateStatement = new UpdateStatement(liquibaseCatalog, liquibaseSchema, database.getDatabaseChangeLogLockTableName()); updateStatement.addNewColumnValue("LOCKED", true); - updateStatement.addNewColumnValue("LOCKGRANTED", new Timestamp(new java.util.Date().getTime())); + updateStatement.addNewColumnValue("LOCKGRANTED", new DatabaseFunction(dateValue)); updateStatement.addNewColumnValue("LOCKEDBY", hostname + hostDescription + " (" + hostaddress + ")"); updateStatement.setWhereClause(database.escapeColumnName(liquibaseCatalog, liquibaseSchema, database.getDatabaseChangeLogTableName(), "ID") + " = 1 AND " + database.escapeColumnName(liquibaseCatalog, liquibaseSchema, database.getDatabaseChangeLogTableName(), "LOCKED") + " = "+ DataTypeFactory.getInstance().fromDescription("boolean", database).objectToSql(false, database)); From 6d3df91c75c0c846fd9e4707ca4337d5512eab57 Mon Sep 17 00:00:00 2001 From: Nathan Voxland Date: Wed, 22 Dec 2021 13:19:53 -0600 Subject: [PATCH 08/19] Update XSD to 4.6 --- .../java/liquibase/parser/core/xml/XMLChangeLogSAXParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/liquibase-core/src/main/java/liquibase/parser/core/xml/XMLChangeLogSAXParser.java b/liquibase-core/src/main/java/liquibase/parser/core/xml/XMLChangeLogSAXParser.java index ba089394eb2..d8eb80e4604 100644 --- a/liquibase-core/src/main/java/liquibase/parser/core/xml/XMLChangeLogSAXParser.java +++ b/liquibase-core/src/main/java/liquibase/parser/core/xml/XMLChangeLogSAXParser.java @@ -16,7 +16,7 @@ public class XMLChangeLogSAXParser extends AbstractChangeLogParser { - public static final String LIQUIBASE_SCHEMA_VERSION = "4.1"; + public static final String LIQUIBASE_SCHEMA_VERSION = "4.6"; private SAXParserFactory saxParserFactory; private final LiquibaseEntityResolver resolver = new LiquibaseEntityResolver(); From 09c8ec6bd57093b76ab41b2ed739e3b72dc61e97 Mon Sep 17 00:00:00 2001 From: Nathan Voxland Date: Wed, 22 Dec 2021 16:12:03 -0600 Subject: [PATCH 09/19] Added space to update/rollback messages after ":" --- .../java/liquibase/changelog/visitor/RollbackVisitor.java | 2 +- .../main/java/liquibase/changelog/visitor/UpdateVisitor.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/liquibase-core/src/main/java/liquibase/changelog/visitor/RollbackVisitor.java b/liquibase-core/src/main/java/liquibase/changelog/visitor/RollbackVisitor.java index 79b32d88c43..b4259f4a7eb 100644 --- a/liquibase-core/src/main/java/liquibase/changelog/visitor/RollbackVisitor.java +++ b/liquibase-core/src/main/java/liquibase/changelog/visitor/RollbackVisitor.java @@ -46,7 +46,7 @@ public Direction getDirection() { public void visit(ChangeSet changeSet, DatabaseChangeLog databaseChangeLog, Database database, Set filterResults) throws LiquibaseException { Executor executor = Scope.getCurrentScope().getSingleton(ExecutorService.class).getExecutor("jdbc", database); if (! (executor instanceof LoggingExecutor)) { - Scope.getCurrentScope().getUI().sendMessage("Rolling Back Changeset:" + changeSet); + Scope.getCurrentScope().getUI().sendMessage("Rolling Back Changeset: " + changeSet); } sendRollbackWillRunEvent(changeSet, databaseChangeLog, database); try { diff --git a/liquibase-core/src/main/java/liquibase/changelog/visitor/UpdateVisitor.java b/liquibase-core/src/main/java/liquibase/changelog/visitor/UpdateVisitor.java index 6b0609ff535..7ab6f46e7fc 100644 --- a/liquibase-core/src/main/java/liquibase/changelog/visitor/UpdateVisitor.java +++ b/liquibase-core/src/main/java/liquibase/changelog/visitor/UpdateVisitor.java @@ -45,10 +45,10 @@ public void visit(ChangeSet changeSet, DatabaseChangeLog databaseChangeLog, Data Set filterResults) throws LiquibaseException { Executor executor = Scope.getCurrentScope().getSingleton(ExecutorService.class).getExecutor("jdbc", database); if (! (executor instanceof LoggingExecutor)) { - Scope.getCurrentScope().getUI().sendMessage("Running Changeset:" + changeSet); + Scope.getCurrentScope().getUI().sendMessage("Running Changeset: " + changeSet); } ChangeSet.RunStatus runStatus = this.database.getRunStatus(changeSet); - Scope.getCurrentScope().getLog(getClass()).fine("Running Changeset:" + changeSet); + Scope.getCurrentScope().getLog(getClass()).fine("Running Changeset: " + changeSet); fireWillRun(changeSet, databaseChangeLog, database, runStatus); ExecType execType = null; ObjectQuotingStrategy previousStr = this.database.getObjectQuotingStrategy(); From 2b341b0862187453d1f197b16c3a7e44832152aa Mon Sep 17 00:00:00 2001 From: Wesley Willard Date: Tue, 28 Dec 2021 14:28:18 -0600 Subject: [PATCH 10/19] Rework CommandTests to have cleanup before and after tests DAT-8752 --- .../testing/command/CommandTests.groovy | 13 ++- .../setup/SetupCleanResourcesAfter.groovy | 79 +++++++++++++++++++ ...roovy => SetupCleanResourcesBefore.groovy} | 4 +- 3 files changed, 93 insertions(+), 3 deletions(-) create mode 100644 liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesAfter.groovy rename liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/{SetupCleanResources.groovy => SetupCleanResourcesBefore.groovy} (92%) diff --git a/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/command/CommandTests.groovy b/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/command/CommandTests.groovy index abcc9b8db99..09d9e4c28bf 100644 --- a/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/command/CommandTests.groovy +++ b/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/command/CommandTests.groovy @@ -869,7 +869,18 @@ Long Description: ${commandDefinition.getLongDescription() ?: "NOT SET"} * */ void cleanResources(String... filesToDelete) { - this.setups.add(new SetupCleanResources(filesToDelete)) + this.setups.add(new SetupCleanResourcesBefore(filesToDelete)) + } + + /** + * + * Delete the specified resources after the test using a FilenameFilter + * + * @param fileToDeletes + * + */ + void cleanResourcesAfter(FilenameFilter filter, String... filesToDelete) { + this.setups.add(new SetupCleanResourcesAfter(filter, filesToDelete)) } /** diff --git a/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesAfter.groovy b/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesAfter.groovy new file mode 100644 index 00000000000..a659310925a --- /dev/null +++ b/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesAfter.groovy @@ -0,0 +1,79 @@ +package liquibase.extension.testing.setup + + +import liquibase.extension.testing.TestDatabaseConnections + +class SetupCleanResourcesAfter extends TestSetup { + + private final List resourcesToDelete = new ArrayList<>() + private FilenameFilter filter + + /** + * + * Delete resources using a filter + * The list of resources to delete is a list of directories + * + * @param filter + * @param resourcesToDelete + */ + SetupCleanResourcesAfter(FilenameFilter filter, String[] resourcesToDelete) { + this.filter = filter + this.resourcesToDelete.addAll(resourcesToDelete as Set) + } + + @Override + void setup(TestDatabaseConnections.ConnectionStatus connectionStatus) throws Exception { + // + // Empty implementation because only the cleanup method is used + // + } + + @Override + void cleanup() throws Exception { + // + // Delete resources in the specified directories that match the filter + // + if (filter != null) { + deleteResourcesThatMatch() + return + } + + // + // Delete the list of resources + // + for (String fileToDelete : resourcesToDelete) { + URL url = Thread.currentThread().getContextClassLoader().getResource(fileToDelete) + if (url == null) { + return + } + File f = new File(url.toURI()) + if (f.exists()) { + boolean b = f.delete() + if (b) { + assert !f.exists(): "The file '$f' was not deleted" + } + } + } + } + + void deleteResourcesThatMatch() { + for (String resourceName : resourcesToDelete) { + URL url = Thread.currentThread().getContextClassLoader().getResource(resourceName) + if (url == null) { + continue + } + File directory = new File(url.toURI()) + assert directory.isDirectory(): "The resource '$resourceName' is not a directory" + String[] listOfFiles = directory.list(filter) + for (String s : listOfFiles) { + File f = new File(directory, s) + if (f.exists()) { + boolean b = f.delete() + if (b) { + assert !f.exists(): "The file '$f' was not deleted" + } + } + } + } + } +} diff --git a/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResources.groovy b/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesBefore.groovy similarity index 92% rename from liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResources.groovy rename to liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesBefore.groovy index 66cb594cf82..c814fb3ab18 100644 --- a/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResources.groovy +++ b/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesBefore.groovy @@ -15,11 +15,11 @@ import liquibase.resource.FileSystemResourceAccessor import java.nio.file.Paths -class SetupCleanResources extends TestSetup { +class SetupCleanResourcesBefore extends TestSetup { private final List resourcesToDelete = new ArrayList<>() - SetupCleanResources(String[] resourcesToDelete) { + SetupCleanResourcesBefore(String[] resourcesToDelete) { this.resourcesToDelete.addAll(resourcesToDelete as Set) } From 7f94ff544214496dc5f60b92bb0a8f4264ada1d2 Mon Sep 17 00:00:00 2001 From: Wesley Willard Date: Tue, 28 Dec 2021 15:58:34 -0600 Subject: [PATCH 11/19] Handle file to delete as an absolute path DAT-8752 --- .../testing/setup/SetupCleanResourcesAfter.groovy | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesAfter.groovy b/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesAfter.groovy index a659310925a..d3b93a2729e 100644 --- a/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesAfter.groovy +++ b/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesAfter.groovy @@ -58,11 +58,14 @@ class SetupCleanResourcesAfter extends TestSetup { void deleteResourcesThatMatch() { for (String resourceName : resourcesToDelete) { - URL url = Thread.currentThread().getContextClassLoader().getResource(resourceName) - if (url == null) { - continue + File directory = new File(resourceName) + if (! directory.isAbsolute()) { + URL url = Thread.currentThread().getContextClassLoader().getResource(resourceName) + if (url == null) { + continue + } + directory = new File(url.toURI()) } - File directory = new File(url.toURI()) assert directory.isDirectory(): "The resource '$resourceName' is not a directory" String[] listOfFiles = directory.list(filter) for (String s : listOfFiles) { From 4730be8c899accfe05e0eaaea924d59532b21918 Mon Sep 17 00:00:00 2001 From: Wesley Willard Date: Tue, 4 Jan 2022 13:20:18 -0600 Subject: [PATCH 12/19] WIP DAT-4793 --- .../FormattedSqlChangeLogParser.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/liquibase-core/src/main/java/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParser.java b/liquibase-core/src/main/java/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParser.java index cc688fce693..4c332ff1d5c 100644 --- a/liquibase-core/src/main/java/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParser.java +++ b/liquibase-core/src/main/java/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParser.java @@ -1,5 +1,6 @@ package liquibase.parser.core.formattedsql; +import liquibase.ContextExpression; import liquibase.Labels; import liquibase.Scope; import liquibase.change.core.EmptyChange; @@ -20,6 +21,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -81,6 +83,7 @@ public DatabaseChangeLog parse(String physicalChangeLogLocation, ChangeLogParame ChangeSet changeSet = null; RawSQLChange change = null; Pattern changeLogPattern = Pattern.compile("\\-\\-\\s*liquibase formatted.*", Pattern.CASE_INSENSITIVE); + Pattern propertyPattern = Pattern.compile("\\s*\\-\\-[\\s]*property\\s+(.*:.*)\\s+(.*:.*).*", Pattern.CASE_INSENSITIVE); Pattern changeSetPattern = Pattern.compile("\\s*\\-\\-[\\s]*changeset\\s+(\"[^\"]+\"|[^:]+):\\s*(\"[^\"]+\"|\\S+).*", Pattern.CASE_INSENSITIVE); Pattern rollbackPattern = Pattern.compile("\\s*\\-\\-[\\s]*rollback (.*)", Pattern.CASE_INSENSITIVE); Pattern preconditionsPattern = Pattern.compile("\\s*\\-\\-[\\s]*preconditions(.*)", Pattern.CASE_INSENSITIVE); @@ -114,7 +117,31 @@ public DatabaseChangeLog parse(String physicalChangeLogLocation, ChangeLogParame String line; while ((line = reader.readLine()) != null) { + /* + if (((Map) obj).containsKey("property")) { + Map property = (Map) ((Map) obj).get("property"); + ContextExpression context = new ContextExpression((String) property.get("context")); + Labels labels = new Labels((String) property.get("labels")); + + Boolean global = getGlobalParam(property); + + if (property.containsKey("name")) { + Object value = property.get("value"); + if (value != null) { + value = value.toString(); // TODO: not nice... + } + changeLogParameters.set((String) property.get("name"), (String) value, context, labels, (String) property.get("dbms"), global, changeLog); + } else if (property.containsKey("file")) { + loadChangeLogParametersFromFile(changeLogParameters, resourceAccessor, changeLog, property, + context, labels, global); + } + */ + Matcher propertyPatternMatcher = propertyPattern.matcher(line); + if (propertyPatternMatcher.matches()) { + changeLogParameters.set("test", "value"); + continue; + } Matcher changeLogPatterMatcher = changeLogPattern.matcher (line); if (changeLogPatterMatcher.matches ()) { Matcher logicalFilePathMatcher = logicalFilePathPattern.matcher (line); From b39c5980f90c022d603cacfc8c679ac2fc697f7c Mon Sep 17 00:00:00 2001 From: Wesley Willard Date: Tue, 4 Jan 2022 15:38:32 -0600 Subject: [PATCH 13/19] Refactored test framework code DAT-8752 --- .../testing/command/CommandTests.groovy | 9 +- ...fore.groovy => SetupCleanResources.groovy} | 46 ++++++++--- .../setup/SetupCleanResourcesAfter.groovy | 82 ------------------- 3 files changed, 40 insertions(+), 97 deletions(-) rename liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/{SetupCleanResourcesBefore.groovy => SetupCleanResources.groovy} (57%) delete mode 100644 liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesAfter.groovy diff --git a/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/command/CommandTests.groovy b/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/command/CommandTests.groovy index e1f9c57b298..a010e118777 100644 --- a/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/command/CommandTests.groovy +++ b/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/command/CommandTests.groovy @@ -900,18 +900,19 @@ Long Description: ${commandDefinition.getLongDescription() ?: "NOT SET"} * */ void cleanResources(String... filesToDelete) { - this.setups.add(new SetupCleanResourcesBefore(filesToDelete)) + this.setups.add(new SetupCleanResources(filesToDelete)) } /** * * Delete the specified resources after the test using a FilenameFilter * - * @param fileToDeletes + * @param filter + * @param resourceDirectory * */ - void cleanResourcesAfter(FilenameFilter filter, String... filesToDelete) { - this.setups.add(new SetupCleanResourcesAfter(filter, filesToDelete)) + void cleanResourcesAfter(FilenameFilter filter, File resourceDirectory) { + this.setups.add(new SetupCleanResources(CleanupMode.CLEAN_ON_CLEANUP, filter, resourceDirectory)) } /** diff --git a/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesBefore.groovy b/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResources.groovy similarity index 57% rename from liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesBefore.groovy rename to liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResources.groovy index 3f4fdf992bc..7274d932d26 100644 --- a/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesBefore.groovy +++ b/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResources.groovy @@ -7,11 +7,13 @@ import java.nio.file.FileSystems import java.nio.file.Files import java.nio.file.Path -class SetupCleanResourcesBefore extends TestSetup { +class SetupCleanResources extends TestSetup { private final List resourcesToDelete = new ArrayList<>() public enum CleanupMode { CLEAN_ON_SETUP, CLEAN_ON_CLEANUP, CLEAN_ON_BOTH} private CleanupMode cleanupMode + private FilenameFilter filter + private File resourceDirectory SetupCleanResources(String[] resourcesToDelete) { this(CleanupMode.CLEAN_ON_CLEANUP, resourcesToDelete) @@ -22,6 +24,12 @@ class SetupCleanResourcesBefore extends TestSetup { this.resourcesToDelete.addAll(resourcesToDelete as Set) } + SetupCleanResources(CleanupMode cleanupMode, FilenameFilter filter, File resourceDirectory) { + this.cleanupMode = cleanupMode + this.filter = filter + this.resourceDirectory = resourceDirectory + } + @Override void setup(TestDatabaseConnections.ConnectionStatus connectionStatus) throws Exception { if (cleanupMode == CleanupMode.CLEAN_ON_CLEANUP) { @@ -39,6 +47,14 @@ class SetupCleanResourcesBefore extends TestSetup { } private void deleteFiles(List resourcesToDelete) { + // + // Delete resources in the specified directories that match the filter + // + if (filter != null) { + deleteResourcesThatMatch() + return + } + for (String fileToDelete : resourcesToDelete) { File f = null URL url = Thread.currentThread().getContextClassLoader().getResource(fileToDelete) @@ -56,19 +72,27 @@ class SetupCleanResourcesBefore extends TestSetup { } else { f.deleteDir() } + } + } - // - // This will handle files and directories - // - /* + void deleteResourcesThatMatch() { + if (! resourceDirectory.isAbsolute()) { + URL url = Thread.currentThread().getContextClassLoader().getResource(resourceDirectory.getName()) + if (url == null) { + return; + } + resourceDirectory = new File(url.toURI()) + } + assert resourceDirectory.isDirectory(): "The resource '$resourceName' is not a directory" + String[] listOfFiles = resourceDirectory.list(filter) + for (String s : listOfFiles) { + File f = new File(resourceDirectory, s) if (f.exists()) { - Path path = FileSystems.getDefault().getPath(f.getAbsolutePath()); - Files.walk(path) - .sorted(Comparator.reverseOrder()) - .map({ p -> p.toFile() }) - .forEach({ file -> file.delete() }) + boolean b = f.delete() + if (b) { + assert !f.exists(): "The file '$f' was not deleted" + } } - */ } } } diff --git a/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesAfter.groovy b/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesAfter.groovy deleted file mode 100644 index d3b93a2729e..00000000000 --- a/liquibase-extension-testing/src/main/groovy/liquibase/extension/testing/setup/SetupCleanResourcesAfter.groovy +++ /dev/null @@ -1,82 +0,0 @@ -package liquibase.extension.testing.setup - - -import liquibase.extension.testing.TestDatabaseConnections - -class SetupCleanResourcesAfter extends TestSetup { - - private final List resourcesToDelete = new ArrayList<>() - private FilenameFilter filter - - /** - * - * Delete resources using a filter - * The list of resources to delete is a list of directories - * - * @param filter - * @param resourcesToDelete - */ - SetupCleanResourcesAfter(FilenameFilter filter, String[] resourcesToDelete) { - this.filter = filter - this.resourcesToDelete.addAll(resourcesToDelete as Set) - } - - @Override - void setup(TestDatabaseConnections.ConnectionStatus connectionStatus) throws Exception { - // - // Empty implementation because only the cleanup method is used - // - } - - @Override - void cleanup() throws Exception { - // - // Delete resources in the specified directories that match the filter - // - if (filter != null) { - deleteResourcesThatMatch() - return - } - - // - // Delete the list of resources - // - for (String fileToDelete : resourcesToDelete) { - URL url = Thread.currentThread().getContextClassLoader().getResource(fileToDelete) - if (url == null) { - return - } - File f = new File(url.toURI()) - if (f.exists()) { - boolean b = f.delete() - if (b) { - assert !f.exists(): "The file '$f' was not deleted" - } - } - } - } - - void deleteResourcesThatMatch() { - for (String resourceName : resourcesToDelete) { - File directory = new File(resourceName) - if (! directory.isAbsolute()) { - URL url = Thread.currentThread().getContextClassLoader().getResource(resourceName) - if (url == null) { - continue - } - directory = new File(url.toURI()) - } - assert directory.isDirectory(): "The resource '$resourceName' is not a directory" - String[] listOfFiles = directory.list(filter) - for (String s : listOfFiles) { - File f = new File(directory, s) - if (f.exists()) { - boolean b = f.delete() - if (b) { - assert !f.exists(): "The file '$f' was not deleted" - } - } - } - } - } -} From 55cbf3fdd93ed8c8aa9c89db7d7216b23ce5cb0e Mon Sep 17 00:00:00 2001 From: Wesley Willard Date: Wed, 5 Jan 2022 14:55:55 -0600 Subject: [PATCH 14/19] Enabled property parsing in the FormattedSqlChangeParser DAT-4793 --- .../FormattedSqlChangeLogParser.java | 87 ++++++++++++------- .../FormattedSqlChangeLogParserTest.groovy | 20 ++++- 2 files changed, 75 insertions(+), 32 deletions(-) diff --git a/liquibase-core/src/main/java/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParser.java b/liquibase-core/src/main/java/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParser.java index 4c332ff1d5c..1d276a6ac53 100644 --- a/liquibase-core/src/main/java/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParser.java +++ b/liquibase-core/src/main/java/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParser.java @@ -1,6 +1,5 @@ package liquibase.parser.core.formattedsql; -import liquibase.ContextExpression; import liquibase.Labels; import liquibase.Scope; import liquibase.change.core.EmptyChange; @@ -21,7 +20,6 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -96,7 +94,7 @@ public DatabaseChangeLog parse(String physicalChangeLogLocation, ChangeLogParame Pattern commentPattern = Pattern.compile("\\-\\-[\\s]*comment:? (.*)", Pattern.CASE_INSENSITIVE); Pattern validCheckSumPattern = Pattern.compile("\\-\\-[\\s]*validCheckSum:? (.*)", Pattern.CASE_INSENSITIVE); Pattern ignoreLinesPattern = Pattern.compile("\\-\\-[\\s]*ignoreLines:(\\w+)", Pattern.CASE_INSENSITIVE); - Pattern runWithPattern = Pattern.compile(".*runWith:(\\w+).*", Pattern.CASE_INSENSITIVE); + Pattern runWithPattern = Pattern.compile(".*runWith:([\\w\\$\\{\\}]+).*", Pattern.CASE_INSENSITIVE); Pattern runOnChangePattern = Pattern.compile(".*runOnChange:(\\w+).*", Pattern.CASE_INSENSITIVE); Pattern runAlwaysPattern = Pattern.compile(".*runAlways:(\\w+).*", Pattern.CASE_INSENSITIVE); @@ -117,29 +115,9 @@ public DatabaseChangeLog parse(String physicalChangeLogLocation, ChangeLogParame String line; while ((line = reader.readLine()) != null) { - /* - if (((Map) obj).containsKey("property")) { - Map property = (Map) ((Map) obj).get("property"); - ContextExpression context = new ContextExpression((String) property.get("context")); - Labels labels = new Labels((String) property.get("labels")); - - Boolean global = getGlobalParam(property); - - if (property.containsKey("name")) { - Object value = property.get("value"); - if (value != null) { - value = value.toString(); // TODO: not nice... - } - - changeLogParameters.set((String) property.get("name"), (String) value, context, labels, (String) property.get("dbms"), global, changeLog); - } else if (property.containsKey("file")) { - loadChangeLogParametersFromFile(changeLogParameters, resourceAccessor, changeLog, property, - context, labels, global); - } - */ Matcher propertyPatternMatcher = propertyPattern.matcher(line); if (propertyPatternMatcher.matches()) { - changeLogParameters.set("test", "value"); + handleProperty(changeLogParameters, changeLog, propertyPatternMatcher); continue; } Matcher changeLogPatterMatcher = changeLogPattern.matcher (line); @@ -229,21 +207,39 @@ public DatabaseChangeLog parse(String physicalChangeLogLocation, ChangeLogParame boolean failOnError = parseBoolean(failOnErrorPatternMatcher, changeSet, true); String runWith = parseString(runWithMatcher); + if (runWith != null) { + runWith = changeLogParameters.expandExpressions(runWith, changeLog); + } String endDelimiter = parseString(endDelimiterPatternMatcher); rollbackEndDelimiter = parseString(rollbackEndDelimiterPatternMatcher); String context = StringUtil.trimToNull( - StringUtil.trimToEmpty(parseString(contextPatternMatcher)).replaceFirst("^\"", "").replaceFirst("\"$", "") //remove surrounding quotes if they're in there + StringUtil.trimToEmpty(parseString(contextPatternMatcher)).replaceFirst("^\"", "").replaceFirst("\"$", "") //remove surrounding quotes if they're in there ); + if (context != null) { + context = changeLogParameters.expandExpressions(context, changeLog); + } String labels = parseString(labelsPatternMatcher); + if (labels != null) { + labels = changeLogParameters.expandExpressions(labels, changeLog); + } String logicalFilePath = parseString(logicalFilePathMatcher); if ((logicalFilePath == null) || "".equals(logicalFilePath)) { - logicalFilePath = changeLog.getLogicalFilePath (); + logicalFilePath = changeLog.getLogicalFilePath(); + } + if (logicalFilePath != null) { + logicalFilePath = changeLogParameters.expandExpressions(logicalFilePath, changeLog); } String dbms = parseString(dbmsPatternMatcher); + if (dbms != null) { + dbms = changeLogParameters.expandExpressions(dbms, changeLog); + } - + String changeSetId = + changeLogParameters.expandExpressions(StringUtil.stripEnclosingQuotes(changeSetPatternMatcher.group(2)), changeLog); + String changeSetAuthor = + changeLogParameters.expandExpressions(StringUtil.stripEnclosingQuotes(changeSetPatternMatcher.group(1)), changeLog); changeSet = - new ChangeSet(StringUtil.stripEnclosingQuotes(changeSetPatternMatcher.group(2)), StringUtil.stripEnclosingQuotes(changeSetPatternMatcher.group(1)), runAlways, runOnChange, logicalFilePath, context, dbms, runWith, runInTransaction, changeLog.getObjectQuotingStrategy(), changeLog); + new ChangeSet(changeSetId, changeSetAuthor, runAlways, runOnChange, logicalFilePath, context, dbms, runWith, runInTransaction, changeLog.getObjectQuotingStrategy(), changeLog); changeSet.setLabels(new Labels(labels)); changeSet.setFailOnError(failOnError); changeLog.addChangeSet(changeSet); @@ -346,7 +342,40 @@ public DatabaseChangeLog parse(String physicalChangeLogLocation, ChangeLogParame return changeLog; } - + private void handleProperty(ChangeLogParameters changeLogParameters, DatabaseChangeLog changeLog, Matcher propertyPatternMatcher) { + String name = null; + String value = null; + String context = null; + String labels = null; + String dbms = null; + boolean global = false; + for (int i = 1; i <= propertyPatternMatcher.groupCount(); i++) { + String temp = propertyPatternMatcher.group(i); + String[] parts = temp.split(":"); + String key = parts[0].trim(); + switch (key) { + case "name": + name = parts[1].trim(); + break; + case "value": + value = parts[1].trim(); + break; + case "context": + context = parts[1].trim(); + break; + case "labels": + labels = parts[1].trim(); + break; + case "dbms": + dbms = parts[1].trim(); + break; + case "global": + global = Boolean.parseBoolean(parts[1].trim()); + break; + } + } + changeLogParameters.set(name, value, context, labels, dbms, global, changeLog); + } private SqlPrecondition parseSqlCheckCondition(String body) throws ChangeLogParseException{ Pattern[] patterns = new Pattern[] { diff --git a/liquibase-core/src/test/groovy/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParserTest.groovy b/liquibase-core/src/test/groovy/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParserTest.groovy index 9853850f488..9fdc74dfe9f 100644 --- a/liquibase-core/src/test/groovy/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParserTest.groovy +++ b/liquibase-core/src/test/groovy/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParserTest.groovy @@ -23,8 +23,14 @@ public class FormattedSqlChangeLogParserTest extends Specification { private static final String VALID_CHANGELOG = """ --liquibase formatted sql - --changeset nvoxland:1 -select * from table1; +--property name:idProp value:1 +--property name:authorProp value:nvoxland +--property name:tableNameProp value:table1 +--property name:runWith value: sqlplus + + +--changeset \${authorProp}:\${idProp} +select * from \${tableNameProp}; --changeset "n voxland":"change 2" (stripComments:false splitStatements:false endDelimiter:X runOnChange:true runAlways:true context:y dbms:mysql runInTransaction:false failOnError:false) create table table1 ( @@ -78,6 +84,12 @@ create table my_table ( --changeset complexContext:1 context:"a or b" select 1 + +-- changeset wesley:wesley-1 runWith:\${runWith} +create table table2 ( + id int primary key +); + """.trim() @@ -109,7 +121,7 @@ select 1 changeLog.getLogicalFilePath() == "asdf.sql" - changeLog.getChangeSets().size() == 10 + changeLog.getChangeSets().size() == 11 changeLog.getChangeSets().get(0).getAuthor() == "nvoxland" changeLog.getChangeSets().get(0).getId() == "1" @@ -195,6 +207,8 @@ select 1 assert changeLog.getChangeSets().get(7).getContexts().toString().contains("second") assert changeLog.getChangeSets().get(7).getContexts().toString().contains("third") + changeLog.getChangeSets().get(10).getRunWith() == "sqlplus" + ChangeSet cs = changeLog.getChangeSets().get(8) cs.getAuthor() == "bboisvert" From f9c75bcc3cb4171d95651a5facad4ec55911b61d Mon Sep 17 00:00:00 2001 From: Wesley Willard Date: Thu, 6 Jan 2022 08:40:08 -0600 Subject: [PATCH 15/19] Make test property be lowercase to test case-insensitivity DAT-4793 --- .../core/formattedsql/FormattedSqlChangeLogParserTest.groovy | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/liquibase-core/src/test/groovy/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParserTest.groovy b/liquibase-core/src/test/groovy/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParserTest.groovy index 9fdc74dfe9f..66108faf92f 100644 --- a/liquibase-core/src/test/groovy/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParserTest.groovy +++ b/liquibase-core/src/test/groovy/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParserTest.groovy @@ -26,7 +26,7 @@ public class FormattedSqlChangeLogParserTest extends Specification { --property name:idProp value:1 --property name:authorProp value:nvoxland --property name:tableNameProp value:table1 ---property name:runWith value: sqlplus +--property name:runwith value: sqlplus --changeset \${authorProp}:\${idProp} @@ -209,7 +209,6 @@ create table table2 ( changeLog.getChangeSets().get(10).getRunWith() == "sqlplus" - ChangeSet cs = changeLog.getChangeSets().get(8) cs.getAuthor() == "bboisvert" cs.getId() == "with_preconditions" From 857c52b6d91ffe1edc5595e64df9d5409f3749a9 Mon Sep 17 00:00:00 2001 From: Wesley Willard Date: Thu, 6 Jan 2022 09:11:07 -0600 Subject: [PATCH 16/19] Make property 'name' key comparison case insensitive DAT-4793 --- .../parser/core/formattedsql/FormattedSqlChangeLogParser.java | 2 +- .../core/formattedsql/FormattedSqlChangeLogParserTest.groovy | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/liquibase-core/src/main/java/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParser.java b/liquibase-core/src/main/java/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParser.java index 1d276a6ac53..f1128501e1b 100644 --- a/liquibase-core/src/main/java/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParser.java +++ b/liquibase-core/src/main/java/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParser.java @@ -352,7 +352,7 @@ private void handleProperty(ChangeLogParameters changeLogParameters, DatabaseCha for (int i = 1; i <= propertyPatternMatcher.groupCount(); i++) { String temp = propertyPatternMatcher.group(i); String[] parts = temp.split(":"); - String key = parts[0].trim(); + String key = parts[0].trim().toLowerCase(); switch (key) { case "name": name = parts[1].trim(); diff --git a/liquibase-core/src/test/groovy/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParserTest.groovy b/liquibase-core/src/test/groovy/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParserTest.groovy index 66108faf92f..bec892f6fd1 100644 --- a/liquibase-core/src/test/groovy/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParserTest.groovy +++ b/liquibase-core/src/test/groovy/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParserTest.groovy @@ -25,7 +25,7 @@ public class FormattedSqlChangeLogParserTest extends Specification { --property name:idProp value:1 --property name:authorProp value:nvoxland ---property name:tableNameProp value:table1 +--property nAmE:tableNameProp value:table1 --property name:runwith value: sqlplus From 6f3bb08572b2dcec2d8220b10d49ceb64c4d800a Mon Sep 17 00:00:00 2001 From: Steven Massaro Date: Fri, 14 Jan 2022 12:58:40 -0600 Subject: [PATCH 17/19] update docs URL (DAT-8947) (#2348) --- .../integration/commandline/LiquibaseCommandLine.java | 2 +- .../liquibase/maven/plugins/LiquibaseRollbackOneUpdateSQL.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/liquibase-cli/src/main/java/liquibase/integration/commandline/LiquibaseCommandLine.java b/liquibase-cli/src/main/java/liquibase/integration/commandline/LiquibaseCommandLine.java index ae225beddd8..99c3576c1ba 100644 --- a/liquibase-cli/src/main/java/liquibase/integration/commandline/LiquibaseCommandLine.java +++ b/liquibase-cli/src/main/java/liquibase/integration/commandline/LiquibaseCommandLine.java @@ -971,7 +971,7 @@ private void configureHelp(CommandLine.Model.CommandSpec commandSpec, boolean in "- Environment values (env variable listed above)\n" + "- Defaults file (configuration key OR argument name)\n\n" + "Full documentation is available at\n" + - "http://www.liquibase.org"; + "https://docs.liquibase.com"; commandSpec.addOption(CommandLine.Model.OptionSpec.builder("--help", "-h") diff --git a/liquibase-maven-plugin/src/main/java/org/liquibase/maven/plugins/LiquibaseRollbackOneUpdateSQL.java b/liquibase-maven-plugin/src/main/java/org/liquibase/maven/plugins/LiquibaseRollbackOneUpdateSQL.java index 9a979d21d93..a84827a7090 100644 --- a/liquibase-maven-plugin/src/main/java/org/liquibase/maven/plugins/LiquibaseRollbackOneUpdateSQL.java +++ b/liquibase-maven-plugin/src/main/java/org/liquibase/maven/plugins/LiquibaseRollbackOneUpdateSQL.java @@ -67,8 +67,7 @@ protected void performLiquibaseTask(Liquibase liquibase) throws LiquibaseExcepti boolean hasProLicense = MavenUtils.checkProLicense(liquibaseProLicenseKey, commandName, getLog()); if (!hasProLicense) { throw new LiquibaseException( - "The command 'rollbackOneUpdateSQL' requires a Liquibase Pro License, available at http://www.liquibase.org/download or sales@liquibase.com." + - "Add liquibase.pro.licenseKey as a Maven property or add liquibase.pro.licenseKey= into your defaults file."); + "The 'rollbackOneUpdateSQL' command requires a valid Liquibase Pro license. Get a free Pro license key at https://liquibase.com/protrial and add liquibase.pro.licenseKey= into your defaults file or use --pro-license-key= before your command in the CLI."); } Database database = liquibase.getDatabase(); CommandScope liquibaseCommand = new CommandScope("internalRollbackOneUpdateSQL"); From 99f59c5e3471f673e77c981d7872d2eb53046077 Mon Sep 17 00:00:00 2001 From: Nathan Voxland Date: Tue, 18 Jan 2022 10:13:08 -0600 Subject: [PATCH 18/19] Add Sonar scanning to builds (#2365) * Added sonar config to pom and build.yml * Added quality gate badge --- .github/workflows/build.yml | 28 +++++++++++- README.md | 2 +- pom.xml | 89 ++++++++++++++++++++++++++----------- 3 files changed, 92 insertions(+), 27 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 86eeda271a9..6e37641f579 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -150,6 +150,32 @@ jobs: path: | */target/*-0-SNAPSHOT.jar + sonar: + name: Sonar Scan + runs-on: ubuntu-latest + needs: build + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + - name: Set up JDK + uses: actions/setup-java@v2 + with: + java-version: 11 + distribution: 'adopt' + cache: 'maven' + - name: Cache SonarCloud packages + uses: actions/cache@v2 + with: + path: ~/.sonar/cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + - name: Build and analyze + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + run: mvn clean verify sonar:sonar -P sonar -Dsonar.login=$SONAR_TOKEN + integration-test: name: Integration Test runs-on: ubuntu-latest @@ -308,7 +334,7 @@ jobs: finish: name: Finish Build runs-on: ubuntu-latest - needs: [ setup, build, integration-test, package ] + needs: [ setup, build, integration-test, package, sonar ] if: ${{ always() }} steps: - uses: actions/checkout@v2 diff --git a/README.md b/README.md index 625989209d2..ad9e0675ce4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Liquibase [![Build and Test](https://github.com/liquibase/liquibase/actions/workflows/build.yml/badge.svg)](https://github.com/liquibase/liquibase/actions/workflows/build.yml) +# Liquibase [![Build and Test](https://github.com/liquibase/liquibase/actions/workflows/build.yml/badge.svg)](https://github.com/liquibase/liquibase/actions/workflows/build.yml) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=liquibase&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=liquibase)

Liquibase helps millions of teams track, version, and deploy database schema changes. It will help you to: diff --git a/pom.xml b/pom.xml index 08d060d1aab..a3a8159059a 100644 --- a/pom.xml +++ b/pom.xml @@ -64,13 +64,12 @@ UTF-8 UTF-8 5.0.20.RELEASE - org.liquibase:liquibase-parent - liquibase-core - https://sonarcloud.io ${project.artifactId} 2.4.17 1.3-groovy-2.4 4.12 + false + @@ -275,26 +274,6 @@ - - - - - - - - - - - - - - - - - - - - maven-surefire-plugin 2.22.1 @@ -443,9 +422,18 @@ 8 - - --illegal-access=permit + + + + maven-surefire-plugin + + + @{argLine} --illegal-access=permit + + + + liquibase-pro-submodule @@ -458,5 +446,56 @@ ../liquibase-pro + + + sonar + + liquibase + liquibase + Liquibase + Liquibase + https://sonarcloud.io + git + true + + + + + org.sonarsource.scanner.maven + sonar-maven-plugin + 3.7.0.1746 + + + sonar + + sonar + + + + + + + org.jacoco + jacoco-maven-plugin + 0.8.7 + + + prepare-agent + + prepare-agent + + + + report + test + + report + + + + + + + From a9b2c81f60ac43e2bc2c536f232a3f124b71df0a Mon Sep 17 00:00:00 2001 From: Steven Massaro Date: Wed, 19 Jan 2022 07:31:20 -0600 Subject: [PATCH 19/19] point users to init project command if they forget a supported argument in any command (DAT-8641) (#2356) --- .../commandline/CommandRunner.java | 17 +++++++++++++++ .../command/CommandArgumentDefinition.java | 3 ++- .../liquibase/command/CommandBuilder.java | 7 +++++++ .../command/CommonArgumentNames.java | 21 +++++++++++++++++++ .../core/CalculateChecksumCommandStep.java | 8 +++---- .../core/ChangelogSyncCommandStep.java | 8 +++---- .../core/ChangelogSyncSqlCommandStep.java | 8 +++---- .../core/ChangelogSyncToTagCommandStep.java | 8 +++---- .../ChangelogSyncToTagSqlCommandStep.java | 8 +++---- .../core/ClearChecksumsCommandStep.java | 6 +++--- .../command/core/DbDocCommandStep.java | 8 +++---- .../core/DeactivateChangelogCommandStep.java | 2 +- .../core/DiffChangelogCommandStep.java | 8 +++---- .../command/core/DiffCommandStep.java | 6 +++--- .../command/core/DropAllCommandStep.java | 8 +++---- .../command/core/ExecuteSqlCommandStep.java | 6 +++--- .../FutureRollbackCountSqlCommandStep.java | 8 +++---- .../FutureRollbackFromTagSqlCommandStep.java | 8 +++---- .../core/FutureRollbackSqlCommandStep.java | 8 +++---- .../core/GenerateChangelogCommandStep.java | 8 +++---- .../command/core/HistoryCommandStep.java | 8 +++---- .../InternalDiffChangelogCommandStep.java | 2 +- .../core/InternalSyncHubCommandStep.java | 4 ++-- .../command/core/ListLocksCommandStep.java | 8 +++---- .../core/MarkNextChangesetRanCommandStep.java | 8 +++---- .../MarkNextChangesetRanSqlCommandStep.java | 8 +++---- .../core/RegisterChangelogCommandStep.java | 2 +- .../command/core/ReleaseLocksCommandStep.java | 8 +++---- .../command/core/RollbackCommandStep.java | 8 +++---- .../core/RollbackCountCommandStep.java | 8 +++---- .../core/RollbackCountSqlCommandStep.java | 8 +++---- .../command/core/RollbackSqlCommandStep.java | 8 +++---- .../core/RollbackToDateCommandStep.java | 8 +++---- .../core/RollbackToDateSqlCommandStep.java | 8 +++---- .../command/core/SnapshotCommandStep.java | 6 +++--- .../command/core/StatusCommandStep.java | 8 +++---- .../command/core/SyncHubCommandStep.java | 8 +++---- .../command/core/TagCommandStep.java | 6 +++--- .../command/core/TagExistsCommandStep.java | 6 +++--- .../core/UnexpectedChangesetsCommandStep.java | 8 +++---- .../command/core/UpdateCommandStep.java | 8 +++---- .../command/core/UpdateCountCommandStep.java | 8 +++---- .../core/UpdateCountSqlCommandStep.java | 8 +++---- .../command/core/UpdateSqlCommandStep.java | 8 +++---- .../UpdateTestingRollbackCommandStep.java | 8 +++---- .../command/core/UpdateToTagCommandStep.java | 8 +++---- .../core/UpdateToTagSqlCommandStep.java | 8 +++---- .../command/core/ValidateCommandStep.java | 8 +++---- .../exception/CommandValidationException.java | 10 ++++++++- .../MissingRequiredArgumentException.java | 17 +++++++++++++++ .../testing/command/diff.test.groovy | 1 + 51 files changed, 233 insertions(+), 161 deletions(-) create mode 100644 liquibase-core/src/main/java/liquibase/command/CommonArgumentNames.java create mode 100644 liquibase-core/src/main/java/liquibase/exception/MissingRequiredArgumentException.java diff --git a/liquibase-cli/src/main/java/liquibase/integration/commandline/CommandRunner.java b/liquibase-cli/src/main/java/liquibase/integration/commandline/CommandRunner.java index 34c10bbf16a..5bb2d2a62c6 100644 --- a/liquibase-cli/src/main/java/liquibase/integration/commandline/CommandRunner.java +++ b/liquibase-cli/src/main/java/liquibase/integration/commandline/CommandRunner.java @@ -2,6 +2,9 @@ import liquibase.command.CommandResults; import liquibase.command.CommandScope; +import liquibase.command.CommonArgumentNames; +import liquibase.exception.CommandValidationException; +import liquibase.exception.MissingRequiredArgumentException; import liquibase.util.StringUtil; import picocli.CommandLine; @@ -10,7 +13,10 @@ import java.io.OutputStream; import java.util.ArrayList; import java.util.List; +import java.util.Set; import java.util.concurrent.Callable; +import java.util.stream.Collectors; +import java.util.stream.Stream; class CommandRunner implements Callable { @@ -43,6 +49,17 @@ public CommandResults call() throws Exception { } return commandScope.execute(); + } catch (CommandValidationException cve) { + Throwable cause = cve.getCause(); + if (cause instanceof MissingRequiredArgumentException) { + // This is a list of the arguments which the init project command supports. The thinking here is that if the user + // forgets to supply one of these arguments, we're going to remind them about the init project command, which + // can help them figure out what they should be providing here. + final Set initProjectArguments = Stream.of(CommonArgumentNames.CHANGELOG_FILE, CommonArgumentNames.URL, CommonArgumentNames.USERNAME, CommonArgumentNames.PASSWORD).map(CommonArgumentNames::getArgumentName).collect(Collectors.toSet()); + throw new CommandValidationException(cve.getMessage() + (initProjectArguments.contains(((MissingRequiredArgumentException) cause).getArgumentName()) ? ". If you need to configure new liquibase project files and arguments, run the 'liquibase init project' command." : "")); + } else { + throw cve; + } } finally { if (outputStream != null) { outputStream.flush(); diff --git a/liquibase-core/src/main/java/liquibase/command/CommandArgumentDefinition.java b/liquibase-core/src/main/java/liquibase/command/CommandArgumentDefinition.java index 8e3361dc829..5a2ffc9fc5f 100644 --- a/liquibase-core/src/main/java/liquibase/command/CommandArgumentDefinition.java +++ b/liquibase-core/src/main/java/liquibase/command/CommandArgumentDefinition.java @@ -4,6 +4,7 @@ import liquibase.configuration.ConfigurationValueConverter; import liquibase.configuration.ConfigurationValueObfuscator; import liquibase.exception.CommandValidationException; +import liquibase.exception.MissingRequiredArgumentException; import liquibase.integration.commandline.LiquibaseCommandLineConfiguration; import liquibase.util.ObjectUtil; @@ -113,7 +114,7 @@ public ConfigurationValueObfuscator getValueObfuscator() { public void validate(CommandScope commandScope) throws CommandValidationException { final DataType currentValue = commandScope.getArgumentValue(this); if (this.isRequired() && currentValue == null) { - throw new CommandValidationException(LiquibaseCommandLineConfiguration.ARGUMENT_CONVERTER.getCurrentValue().convert(this.getName()), "missing required argument"); + throw new CommandValidationException(LiquibaseCommandLineConfiguration.ARGUMENT_CONVERTER.getCurrentValue().convert(this.getName()), "missing required argument", new MissingRequiredArgumentException(this.getName())); } } diff --git a/liquibase-core/src/main/java/liquibase/command/CommandBuilder.java b/liquibase-core/src/main/java/liquibase/command/CommandBuilder.java index 0ac86793bcf..ccb49fe6d99 100644 --- a/liquibase-core/src/main/java/liquibase/command/CommandBuilder.java +++ b/liquibase-core/src/main/java/liquibase/command/CommandBuilder.java @@ -21,6 +21,13 @@ public CommandArgumentDefinition.Building argument(String n return new CommandArgumentDefinition.Building<>(commandNames, new CommandArgumentDefinition<>(name, type)); } + /** + * Starts the building of a new {@link CommandArgumentDefinition}. + */ + public CommandArgumentDefinition.Building argument(CommonArgumentNames argument, Class type) { + return new CommandArgumentDefinition.Building<>(commandNames, new CommandArgumentDefinition<>(argument.getArgumentName(), type)); + } + /** * Starts the building of a new {@link CommandResultDefinition}. */ diff --git a/liquibase-core/src/main/java/liquibase/command/CommonArgumentNames.java b/liquibase-core/src/main/java/liquibase/command/CommonArgumentNames.java new file mode 100644 index 00000000000..d3b150a5219 --- /dev/null +++ b/liquibase-core/src/main/java/liquibase/command/CommonArgumentNames.java @@ -0,0 +1,21 @@ +package liquibase.command; + +/** + * A common place to store commonly used command argument names. + */ +public enum CommonArgumentNames { + USERNAME("username"), + PASSWORD("password"), + URL("url"), + CHANGELOG_FILE("changelogFile"); + + private final String argumentName; + + CommonArgumentNames(String argumentName) { + this.argumentName = argumentName; + } + + public String getArgumentName() { + return argumentName; + } +} diff --git a/liquibase-core/src/main/java/liquibase/command/core/CalculateChecksumCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/CalculateChecksumCommandStep.java index c1ac3116a20..f65b66e3852 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/CalculateChecksumCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/CalculateChecksumCommandStep.java @@ -20,9 +20,9 @@ public class CalculateChecksumCommandStep extends AbstractCliWrapperCommandStep static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog file").build(); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -32,9 +32,9 @@ public class CalculateChecksumCommandStep extends AbstractCliWrapperCommandStep .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("The database username").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("The database password") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncCommandStep.java index 3749f4c29ae..246ee3db46e 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncCommandStep.java @@ -21,9 +21,9 @@ public class ChangelogSyncCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog file").build(); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -33,9 +33,9 @@ public class ChangelogSyncCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("The database username").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("The database password") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncSqlCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncSqlCommandStep.java index 808e395cc07..4c2d17912d9 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncSqlCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncSqlCommandStep.java @@ -21,9 +21,9 @@ public class ChangelogSyncSqlCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog file").build(); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -33,9 +33,9 @@ public class ChangelogSyncSqlCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("The database username").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .description("The database password").build(); LABELS_ARG = builder.argument("labels", String.class) diff --git a/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncToTagCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncToTagCommandStep.java index 473f8888a8a..5eeece3e3f2 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncToTagCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncToTagCommandStep.java @@ -22,9 +22,9 @@ public class ChangelogSyncToTagCommandStep extends AbstractCliWrapperCommandStep static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog file").build(); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -34,9 +34,9 @@ public class ChangelogSyncToTagCommandStep extends AbstractCliWrapperCommandStep .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("The database username").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .description("The database password").build(); LABELS_ARG = builder.argument("labels", String.class) diff --git a/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncToTagSqlCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncToTagSqlCommandStep.java index 39028c42e72..db3570851da 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncToTagSqlCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/ChangelogSyncToTagSqlCommandStep.java @@ -22,9 +22,9 @@ public class ChangelogSyncToTagSqlCommandStep extends AbstractCliWrapperCommandS static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog file").build(); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -34,9 +34,9 @@ public class ChangelogSyncToTagSqlCommandStep extends AbstractCliWrapperCommandS .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("The database username").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .description("The database password").build(); LABELS_ARG = builder.argument("labels", String.class) diff --git a/liquibase-core/src/main/java/liquibase/command/core/ClearChecksumsCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/ClearChecksumsCommandStep.java index e603869c630..09d79e16750 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/ClearChecksumsCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/ClearChecksumsCommandStep.java @@ -18,7 +18,7 @@ public class ClearChecksumsCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -28,9 +28,9 @@ public class ClearChecksumsCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("The database username").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .description("The database password").build(); } diff --git a/liquibase-core/src/main/java/liquibase/command/core/DbDocCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/DbDocCommandStep.java index 89652d6d313..3ac52b11cd3 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/DbDocCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/DbDocCommandStep.java @@ -20,9 +20,9 @@ public class DbDocCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class) + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class) .description("The root changelog").required().build(); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -32,9 +32,9 @@ public class DbDocCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("The database username").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("The database password") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/DeactivateChangelogCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/DeactivateChangelogCommandStep.java index 8b98aa8eeb5..1bbc809fc6e 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/DeactivateChangelogCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/DeactivateChangelogCommandStep.java @@ -25,7 +25,7 @@ public class DeactivateChangelogCommandStep extends AbstractCommandStep { static { final CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); } diff --git a/liquibase-core/src/main/java/liquibase/command/core/DiffChangelogCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/DiffChangelogCommandStep.java index ba967ff3086..dd389ad5844 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/DiffChangelogCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/DiffChangelogCommandStep.java @@ -42,7 +42,7 @@ public class DiffChangelogCommandStep extends AbstractCliWrapperCommandStep { .description("The reference default schema name to use for the database connection").build(); REFERENCE_DEFAULT_CATALOG_NAME_ARG = builder.argument("referenceDefaultCatalogName", String.class) .description("The reference default catalog name to use for the database connection").build(); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC target database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -52,13 +52,13 @@ public class DiffChangelogCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("The target database username").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("The target database password") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("Changelog file to write results").build(); EXCLUDE_OBJECTS_ARG = builder.argument("excludeObjects", String.class) .description("Objects to exclude from diff").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/DiffCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/DiffCommandStep.java index 01eedd47c46..3819c9b3afd 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/DiffCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/DiffCommandStep.java @@ -33,11 +33,11 @@ public class DiffCommandStep extends AbstractCliWrapperCommandStep { .description("The reference database password") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC target database connection URL").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("The target database username").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("The target database password") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/DropAllCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/DropAllCommandStep.java index 7a355f6fe3a..3e9a8ebb48f 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/DropAllCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/DropAllCommandStep.java @@ -24,9 +24,9 @@ public class DropAllCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); SCHEMAS_ARG = builder.argument("schemas", String.class) .description("Schemas to include in drop").build(); @@ -38,11 +38,11 @@ public class DropAllCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class) + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class) .description("The root changelog").build(); HUB_CONNECTION_ID_ARG = builder.argument("hubConnectionId", UUID.class) .description("Used to identify the specific Connection in which to record or extract data at Liquibase Hub. Available in your Liquibase Hub Project at https://hub.liquibase.com.").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/ExecuteSqlCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/ExecuteSqlCommandStep.java index 052217518b9..52454659ae5 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/ExecuteSqlCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/ExecuteSqlCommandStep.java @@ -23,7 +23,7 @@ public class ExecuteSqlCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -33,9 +33,9 @@ public class ExecuteSqlCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/FutureRollbackCountSqlCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/FutureRollbackCountSqlCommandStep.java index 442c9696f9b..cbe623329d4 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/FutureRollbackCountSqlCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/FutureRollbackCountSqlCommandStep.java @@ -22,9 +22,9 @@ public class FutureRollbackCountSqlCommandStep extends AbstractCliWrapperCommand static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -34,9 +34,9 @@ public class FutureRollbackCountSqlCommandStep extends AbstractCliWrapperCommand .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("The database username").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("The database password") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/FutureRollbackFromTagSqlCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/FutureRollbackFromTagSqlCommandStep.java index 444d15fb925..7867cff43f8 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/FutureRollbackFromTagSqlCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/FutureRollbackFromTagSqlCommandStep.java @@ -22,9 +22,9 @@ public class FutureRollbackFromTagSqlCommandStep extends AbstractCliWrapperComma static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -34,9 +34,9 @@ public class FutureRollbackFromTagSqlCommandStep extends AbstractCliWrapperComma .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/FutureRollbackSqlCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/FutureRollbackSqlCommandStep.java index 881d42e4ad1..23554867ca2 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/FutureRollbackSqlCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/FutureRollbackSqlCommandStep.java @@ -21,9 +21,9 @@ public class FutureRollbackSqlCommandStep extends AbstractCliWrapperCommandStep static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC Database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -33,9 +33,9 @@ public class FutureRollbackSqlCommandStep extends AbstractCliWrapperCommandStep .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/GenerateChangelogCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/GenerateChangelogCommandStep.java index 41f119137d7..358bb34a982 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/GenerateChangelogCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/GenerateChangelogCommandStep.java @@ -28,11 +28,11 @@ public class GenerateChangelogCommandStep extends AbstractCliWrapperCommandStep static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); @@ -40,7 +40,7 @@ public class GenerateChangelogCommandStep extends AbstractCliWrapperCommandStep .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("File to write changelog to").build(); DATA_OUTPUT_DIRECTORY = builder.argument("dataOutputDirectory", String.class) .description("Directory to write table data to").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/HistoryCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/HistoryCommandStep.java index 42331438752..5889bd67d3c 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/HistoryCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/HistoryCommandStep.java @@ -19,7 +19,7 @@ public class HistoryCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -29,13 +29,13 @@ public class HistoryCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class) + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class) .description("The root changelog").build(); } diff --git a/liquibase-core/src/main/java/liquibase/command/core/InternalDiffChangelogCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/InternalDiffChangelogCommandStep.java index ea37b0c5c08..c1486587f67 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/InternalDiffChangelogCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/InternalDiffChangelogCommandStep.java @@ -21,7 +21,7 @@ public class InternalDiffChangelogCommandStep extends InternalDiffCommandStep { static { final CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required().build(); + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required().build(); DIFF_OUTPUT_CONTROL_ARG = builder.argument("diffOutputControl", DiffOutputControl.class).required().build(); } diff --git a/liquibase-core/src/main/java/liquibase/command/core/InternalSyncHubCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/InternalSyncHubCommandStep.java index b80fe1c8e78..8bc545a50c2 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/InternalSyncHubCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/InternalSyncHubCommandStep.java @@ -33,8 +33,8 @@ public class InternalSyncHubCommandStep extends AbstractCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).build(); + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).build(); + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).build(); HUB_CONNECTION_ID_ARG = builder.argument("hubConnectionId", UUID.class).build(); HUB_PROJECT_ID_ARG = builder.argument("hubProjectId", UUID.class).build(); CONTINUE_IF_CONNECTION_AND_PROJECT_ID_BOTH_SET_ARG = builder.argument("continueIfConnectionAndProjectIdBothSet", Boolean.class) diff --git a/liquibase-core/src/main/java/liquibase/command/core/ListLocksCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/ListLocksCommandStep.java index 0f7ab3b0ee1..f89d52fedc6 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/ListLocksCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/ListLocksCommandStep.java @@ -19,7 +19,7 @@ public class ListLocksCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -29,13 +29,13 @@ public class ListLocksCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class) + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class) .description("The root changelog").build(); } diff --git a/liquibase-core/src/main/java/liquibase/command/core/MarkNextChangesetRanCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/MarkNextChangesetRanCommandStep.java index ffe8bfe339a..2d87f5bad7b 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/MarkNextChangesetRanCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/MarkNextChangesetRanCommandStep.java @@ -19,7 +19,7 @@ public class MarkNextChangesetRanCommandStep extends AbstractCliWrapperCommandSt static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -29,13 +29,13 @@ public class MarkNextChangesetRanCommandStep extends AbstractCliWrapperCommandSt .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); } diff --git a/liquibase-core/src/main/java/liquibase/command/core/MarkNextChangesetRanSqlCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/MarkNextChangesetRanSqlCommandStep.java index a25347b65f5..23b8f9c7018 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/MarkNextChangesetRanSqlCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/MarkNextChangesetRanSqlCommandStep.java @@ -19,7 +19,7 @@ public class MarkNextChangesetRanSqlCommandStep extends AbstractCliWrapperComman static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -29,13 +29,13 @@ public class MarkNextChangesetRanSqlCommandStep extends AbstractCliWrapperComman .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); } diff --git a/liquibase-core/src/main/java/liquibase/command/core/RegisterChangelogCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/RegisterChangelogCommandStep.java index b36a47ccf13..2e41ea8a89b 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/RegisterChangelogCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/RegisterChangelogCommandStep.java @@ -35,7 +35,7 @@ public class RegisterChangelogCommandStep extends AbstractCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); HUB_PROJECT_ID_ARG = builder.argument("hubProjectId", UUID.class).optional() .description("Used to identify the specific Project in which to record or extract data at Liquibase Hub. Available in your Liquibase Hub account at https://hub.liquibase.com.").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/ReleaseLocksCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/ReleaseLocksCommandStep.java index 11c4ae3e453..c422f69dff4 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/ReleaseLocksCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/ReleaseLocksCommandStep.java @@ -19,7 +19,7 @@ public class ReleaseLocksCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -29,13 +29,13 @@ public class ReleaseLocksCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class) + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class) .description("The root changelog").build(); } diff --git a/liquibase-core/src/main/java/liquibase/command/core/RollbackCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/RollbackCommandStep.java index 328cf7394eb..64ccbe3fe22 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/RollbackCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/RollbackCommandStep.java @@ -25,7 +25,7 @@ public class RollbackCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -35,13 +35,13 @@ public class RollbackCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); LABELS_ARG = builder.argument("labels", String.class) .description("Changeset labels to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/RollbackCountCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/RollbackCountCommandStep.java index 9a713c13b17..e28b123b85e 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/RollbackCountCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/RollbackCountCommandStep.java @@ -25,7 +25,7 @@ public class RollbackCountCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -35,13 +35,13 @@ public class RollbackCountCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); LABELS_ARG = builder.argument("labels", String.class) .description("Changeset labels to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/RollbackCountSqlCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/RollbackCountSqlCommandStep.java index 8a9f554c654..ccd1a5f23fb 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/RollbackCountSqlCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/RollbackCountSqlCommandStep.java @@ -25,7 +25,7 @@ public class RollbackCountSqlCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -35,13 +35,13 @@ public class RollbackCountSqlCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); LABELS_ARG = builder.argument("labels", String.class) .description("Changeset labels to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/RollbackSqlCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/RollbackSqlCommandStep.java index 399fae72c61..aa6533d82d3 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/RollbackSqlCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/RollbackSqlCommandStep.java @@ -25,7 +25,7 @@ public class RollbackSqlCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -35,13 +35,13 @@ public class RollbackSqlCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("File to write changelog to").build(); LABELS_ARG = builder.argument("labels", String.class) .description("Changeset labels to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/RollbackToDateCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/RollbackToDateCommandStep.java index 38d06759881..d210a28b48c 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/RollbackToDateCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/RollbackToDateCommandStep.java @@ -27,7 +27,7 @@ public class RollbackToDateCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -37,13 +37,13 @@ public class RollbackToDateCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("File to write changelog to").build(); LABELS_ARG = builder.argument("labels", String.class) .description("Changeset labels to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/RollbackToDateSqlCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/RollbackToDateSqlCommandStep.java index 73ba0a7f032..0f284633366 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/RollbackToDateSqlCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/RollbackToDateSqlCommandStep.java @@ -27,7 +27,7 @@ public class RollbackToDateSqlCommandStep extends AbstractCliWrapperCommandStep static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -37,13 +37,13 @@ public class RollbackToDateSqlCommandStep extends AbstractCliWrapperCommandStep .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); LABELS_ARG = builder.argument("labels", String.class) .description("Changeset labels to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/SnapshotCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/SnapshotCommandStep.java index 4fdcd246b3e..42ce354caba 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/SnapshotCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/SnapshotCommandStep.java @@ -21,7 +21,7 @@ public class SnapshotCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -31,9 +31,9 @@ public class SnapshotCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/StatusCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/StatusCommandStep.java index 325667a7406..4c8952fc9ff 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/StatusCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/StatusCommandStep.java @@ -24,7 +24,7 @@ public class StatusCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -34,13 +34,13 @@ public class StatusCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); CONTEXTS_ARG = builder.argument("contexts", String.class) .description("Changeset contexts to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/SyncHubCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/SyncHubCommandStep.java index 87ab074d299..557135a81bd 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/SyncHubCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/SyncHubCommandStep.java @@ -23,15 +23,15 @@ public class SyncHubCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); DEFAULT_CATALOG_NAME_ARG = builder.argument("defaultCatalogName", String.class) .description("The default catalog name to use for the database connection").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); @@ -39,7 +39,7 @@ public class SyncHubCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class) + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class) .description("The root changelog").build(); HUB_CONNECTION_ID_ARG = builder.argument("hubConnectionId", UUID.class) .description("Used to identify the specific Connection in which to record or extract data at Liquibase Hub. Available in your Liquibase Hub Project at https://hub.liquibase.com.").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/TagCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/TagCommandStep.java index 5cd17c96955..620bbd5252a 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/TagCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/TagCommandStep.java @@ -19,7 +19,7 @@ public class TagCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -29,9 +29,9 @@ public class TagCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/TagExistsCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/TagExistsCommandStep.java index 61e9ce4f46c..392368f88da 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/TagExistsCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/TagExistsCommandStep.java @@ -19,7 +19,7 @@ public class TagExistsCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -29,9 +29,9 @@ public class TagExistsCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/UnexpectedChangesetsCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/UnexpectedChangesetsCommandStep.java index 3a62027c0bd..4ba72f9171c 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/UnexpectedChangesetsCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/UnexpectedChangesetsCommandStep.java @@ -21,7 +21,7 @@ public class UnexpectedChangesetsCommandStep extends AbstractCliWrapperCommandSt static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -31,13 +31,13 @@ public class UnexpectedChangesetsCommandStep extends AbstractCliWrapperCommandSt .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); CONTEXTS_ARG = builder.argument("contexts", String.class) .description("Changeset contexts to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/UpdateCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/UpdateCommandStep.java index 9c74e496517..bc0c1dcaae4 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/UpdateCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/UpdateCommandStep.java @@ -25,7 +25,7 @@ public class UpdateCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME, LEGACY_COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -35,13 +35,13 @@ public class UpdateCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); LABELS_ARG = builder.argument("labels", String.class) .description("Changeset labels to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/UpdateCountCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/UpdateCountCommandStep.java index b302274b6c3..4944e4013f7 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/UpdateCountCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/UpdateCountCommandStep.java @@ -24,7 +24,7 @@ public class UpdateCountCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -34,13 +34,13 @@ public class UpdateCountCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); LABELS_ARG = builder.argument("labels", String.class) .description("Changeset labels to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/UpdateCountSqlCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/UpdateCountSqlCommandStep.java index 3f93a93b196..686dab2fc92 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/UpdateCountSqlCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/UpdateCountSqlCommandStep.java @@ -24,7 +24,7 @@ public class UpdateCountSqlCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -34,13 +34,13 @@ public class UpdateCountSqlCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); LABELS_ARG = builder.argument("labels", String.class) .description("Changeset labels to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/UpdateSqlCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/UpdateSqlCommandStep.java index 7f3a9d05b1f..f8ecb361ace 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/UpdateSqlCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/UpdateSqlCommandStep.java @@ -24,7 +24,7 @@ public class UpdateSqlCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME, LEGACY_COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -34,13 +34,13 @@ public class UpdateSqlCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); LABELS_ARG = builder.argument("labels", String.class) .description("Changeset labels to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/UpdateTestingRollbackCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/UpdateTestingRollbackCommandStep.java index f631d414958..aa2d5b9052a 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/UpdateTestingRollbackCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/UpdateTestingRollbackCommandStep.java @@ -24,7 +24,7 @@ public class UpdateTestingRollbackCommandStep extends AbstractCliWrapperCommandS static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -34,13 +34,13 @@ public class UpdateTestingRollbackCommandStep extends AbstractCliWrapperCommandS .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); LABELS_ARG = builder.argument("labels", String.class) .description("Changeset labels to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/UpdateToTagCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/UpdateToTagCommandStep.java index 3d1a8cb3856..5ea2aaf61fe 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/UpdateToTagCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/UpdateToTagCommandStep.java @@ -24,7 +24,7 @@ public class UpdateToTagCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -34,13 +34,13 @@ public class UpdateToTagCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); LABELS_ARG = builder.argument("labels", String.class) .description("Changeset labels to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/UpdateToTagSqlCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/UpdateToTagSqlCommandStep.java index fe2ff4e4e97..ec0cffe18cb 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/UpdateToTagSqlCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/UpdateToTagSqlCommandStep.java @@ -24,7 +24,7 @@ public class UpdateToTagSqlCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -34,13 +34,13 @@ public class UpdateToTagSqlCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); LABELS_ARG = builder.argument("labels", String.class) .description("Changeset labels to match").build(); diff --git a/liquibase-core/src/main/java/liquibase/command/core/ValidateCommandStep.java b/liquibase-core/src/main/java/liquibase/command/core/ValidateCommandStep.java index 6e774e57dc6..b5856b0c7c1 100644 --- a/liquibase-core/src/main/java/liquibase/command/core/ValidateCommandStep.java +++ b/liquibase-core/src/main/java/liquibase/command/core/ValidateCommandStep.java @@ -19,7 +19,7 @@ public class ValidateCommandStep extends AbstractCliWrapperCommandStep { static { CommandBuilder builder = new CommandBuilder(COMMAND_NAME); - URL_ARG = builder.argument("url", String.class).required() + URL_ARG = builder.argument(CommonArgumentNames.URL, String.class).required() .description("The JDBC database connection URL").build(); DEFAULT_SCHEMA_NAME_ARG = builder.argument("defaultSchemaName", String.class) .description("The default schema name to use for the database connection").build(); @@ -29,13 +29,13 @@ public class ValidateCommandStep extends AbstractCliWrapperCommandStep { .description("The JDBC driver class").build(); DRIVER_PROPERTIES_FILE_ARG = builder.argument("driverPropertiesFile", String.class) .description("The JDBC driver properties file").build(); - USERNAME_ARG = builder.argument("username", String.class) + USERNAME_ARG = builder.argument(CommonArgumentNames.USERNAME, String.class) .description("Username to use to connect to the database").build(); - PASSWORD_ARG = builder.argument("password", String.class) + PASSWORD_ARG = builder.argument(CommonArgumentNames.PASSWORD, String.class) .description("Password to use to connect to the database") .setValueObfuscator(ConfigurationValueObfuscator.STANDARD) .build(); - CHANGELOG_FILE_ARG = builder.argument("changelogFile", String.class).required() + CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required() .description("The root changelog").build(); } diff --git a/liquibase-core/src/main/java/liquibase/exception/CommandValidationException.java b/liquibase-core/src/main/java/liquibase/exception/CommandValidationException.java index 8e003bbec64..cd78ced0d04 100644 --- a/liquibase-core/src/main/java/liquibase/exception/CommandValidationException.java +++ b/liquibase-core/src/main/java/liquibase/exception/CommandValidationException.java @@ -6,10 +6,18 @@ public class CommandValidationException extends CommandExecutionException { public CommandValidationException(String argument, String message) { - super("Invalid argument '" + argument + "': " + message); + super(buildMessage(argument, message)); } public CommandValidationException(String message) { super(message); } + + public CommandValidationException(String argument, String message, Throwable cause) { + super(buildMessage(argument, message), cause); + } + + private static String buildMessage(String argument, String message) { + return "Invalid argument '" + argument + "': " + message; + } } diff --git a/liquibase-core/src/main/java/liquibase/exception/MissingRequiredArgumentException.java b/liquibase-core/src/main/java/liquibase/exception/MissingRequiredArgumentException.java new file mode 100644 index 00000000000..a49db8160c4 --- /dev/null +++ b/liquibase-core/src/main/java/liquibase/exception/MissingRequiredArgumentException.java @@ -0,0 +1,17 @@ +package liquibase.exception; + +/** + * Exception indicating that the required argument is missing. + */ +public class MissingRequiredArgumentException extends Exception { + + private final String argumentName; + + public MissingRequiredArgumentException(String argumentName) { + this.argumentName = argumentName; + } + + public String getArgumentName() { + return argumentName; + } +} diff --git a/liquibase-integration-tests/src/test/resources/liquibase/extension/testing/command/diff.test.groovy b/liquibase-integration-tests/src/test/resources/liquibase/extension/testing/command/diff.test.groovy index 99138ae019a..ac8e686c29d 100644 --- a/liquibase-integration-tests/src/test/resources/liquibase/extension/testing/command/diff.test.groovy +++ b/liquibase-integration-tests/src/test/resources/liquibase/extension/testing/command/diff.test.groovy @@ -386,6 +386,7 @@ Changed Column(s): NONE } expectedException = CommandValidationException.class + expectedExceptionMessage = "Invalid argument 'referenceUrl': missing required argument" } run "Run without any arguments throws an exception", {