diff --git a/liquibase-core/src/main/java/liquibase/database/AbstractJdbcDatabase.java b/liquibase-core/src/main/java/liquibase/database/AbstractJdbcDatabase.java
index 1487dbfaed8..263cd3d3f9e 100644
--- a/liquibase-core/src/main/java/liquibase/database/AbstractJdbcDatabase.java
+++ b/liquibase-core/src/main/java/liquibase/database/AbstractJdbcDatabase.java
@@ -1,6 +1,24 @@
package liquibase.database;
+import static liquibase.util.StringUtil.join;
+import java.io.IOException;
+import java.io.Writer;
+import java.math.BigInteger;
+import java.sql.SQLException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Pattern;
import liquibase.CatalogAndSchema;
+import liquibase.GlobalConfiguration;
import liquibase.Scope;
import liquibase.change.Change;
import liquibase.change.core.DropTableChange;
@@ -9,7 +27,6 @@
import liquibase.changelog.DatabaseChangeLog;
import liquibase.changelog.RanChangeSet;
import liquibase.changelog.StandardChangeLogHistoryService;
-import liquibase.GlobalConfiguration;
import liquibase.configuration.ConfiguredValue;
import liquibase.database.core.OracleDatabase;
import liquibase.database.core.PostgresDatabase;
@@ -60,25 +77,6 @@
import liquibase.util.StreamUtil;
import liquibase.util.StringUtil;
-import java.io.IOException;
-import java.io.Writer;
-import java.math.BigInteger;
-import java.sql.SQLException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-import static liquibase.util.StringUtil.join;
-
/**
* AbstractJdbcDatabase is extended by all supported databases as a facade to the underlying database.
@@ -1221,20 +1219,15 @@ public int hashCode() {
@Override
public void close() throws DatabaseException {
- Scope.getCurrentScope().getSingleton(ExecutorService.class).clearExecutor("jdbc", this);
- DatabaseConnection connection = getConnection();
- if (connection != null) {
- if (previousAutoCommit != null) {
- try {
- connection.setAutoCommit(previousAutoCommit);
- } catch (DatabaseException e) {
- Scope.getCurrentScope().getLog(getClass()).warning("Failed to restore the auto commit to " + previousAutoCommit);
-
- throw e;
- }
- }
- connection.close();
- }
+ Scope.getCurrentScope().getSingleton(ExecutorService.class).clearExecutor("jdbc", this);
+ try (final DatabaseConnection connection = getConnection();) {
+ if (connection != null && previousAutoCommit != null) {
+ connection.setAutoCommit(previousAutoCommit);
+ }
+ } catch (final DatabaseException e) {
+ Scope.getCurrentScope().getLog(getClass()).warning("Failed to restore the auto commit to " + previousAutoCommit);
+ throw e;
+ }
}
@Override
diff --git a/liquibase-core/src/main/java/liquibase/database/Database.java b/liquibase-core/src/main/java/liquibase/database/Database.java
index d59b811184b..1411b306919 100644
--- a/liquibase-core/src/main/java/liquibase/database/Database.java
+++ b/liquibase-core/src/main/java/liquibase/database/Database.java
@@ -1,25 +1,28 @@
package liquibase.database;
+import java.io.IOException;
+import java.io.Writer;
+import java.math.BigInteger;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
import liquibase.CatalogAndSchema;
import liquibase.change.Change;
import liquibase.changelog.ChangeSet;
import liquibase.changelog.DatabaseChangeLog;
import liquibase.changelog.RanChangeSet;
-import liquibase.exception.*;
+import liquibase.exception.DatabaseException;
+import liquibase.exception.DatabaseHistoryException;
+import liquibase.exception.DateParseException;
+import liquibase.exception.LiquibaseException;
+import liquibase.exception.ValidationErrors;
import liquibase.servicelocator.PrioritizedService;
import liquibase.sql.visitor.SqlVisitor;
import liquibase.statement.DatabaseFunction;
import liquibase.statement.SqlStatement;
import liquibase.structure.DatabaseObject;
-import java.io.IOException;
-import java.io.Writer;
-import java.math.BigInteger;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
/**
* Interface that every DBMS supported by this software must implement. Most methods belong into ont of these
* categories:
@@ -29,7 +32,7 @@
*
creating strings for use in SQL statements, e.g. literals for dates, time, numerals, etc.
*
*/
-public interface Database extends PrioritizedService {
+public interface Database extends PrioritizedService, AutoCloseable {
String databaseChangeLogTableName = "DatabaseChangeLog".toUpperCase(Locale.US);
String databaseChangeLogLockTableName = "DatabaseChangeLogLock".toUpperCase(Locale.US);
@@ -290,6 +293,7 @@ public interface Database extends PrioritizedService {
String escapeStringForDatabase(String string);
+ @Override
void close() throws DatabaseException;
boolean supportsRestrictForeignKeys();
diff --git a/liquibase-core/src/main/java/liquibase/database/DatabaseConnection.java b/liquibase-core/src/main/java/liquibase/database/DatabaseConnection.java
index b1da23fc667..98ce7098267 100644
--- a/liquibase-core/src/main/java/liquibase/database/DatabaseConnection.java
+++ b/liquibase-core/src/main/java/liquibase/database/DatabaseConnection.java
@@ -1,10 +1,9 @@
package liquibase.database;
-import liquibase.exception.DatabaseException;
-import liquibase.servicelocator.PrioritizedService;
-
import java.sql.Driver;
import java.util.Properties;
+import liquibase.exception.DatabaseException;
+import liquibase.servicelocator.PrioritizedService;
/**
* A liquibase abstraction over the normal Connection that is available in
@@ -12,7 +11,7 @@
* connection.
*
*/
-public interface DatabaseConnection extends PrioritizedService {
+public interface DatabaseConnection extends PrioritizedService, AutoCloseable {
void open(String url, Driver driverObject, Properties driverProperties)
throws DatabaseException;
@@ -29,6 +28,7 @@ default boolean supports(String url) {
return true;
}
+ @Override
void close() throws DatabaseException;
void commit() throws DatabaseException;
diff --git a/liquibase-core/src/main/java/liquibase/database/OfflineConnection.java b/liquibase-core/src/main/java/liquibase/database/OfflineConnection.java
index eb498390d64..442b473b3af 100644
--- a/liquibase-core/src/main/java/liquibase/database/OfflineConnection.java
+++ b/liquibase-core/src/main/java/liquibase/database/OfflineConnection.java
@@ -11,7 +11,6 @@
import liquibase.parser.SnapshotParserFactory;
import liquibase.resource.ResourceAccessor;
import liquibase.servicelocator.LiquibaseService;
-import liquibase.servicelocator.PrioritizedService;
import liquibase.snapshot.DatabaseSnapshot;
import liquibase.snapshot.EmptyDatabaseSnapshot;
import liquibase.snapshot.InvalidExampleException;
diff --git a/liquibase-core/src/main/java/liquibase/database/core/DerbyDatabase.java b/liquibase-core/src/main/java/liquibase/database/core/DerbyDatabase.java
index a731d5587fd..0cd79a5f946 100644
--- a/liquibase-core/src/main/java/liquibase/database/core/DerbyDatabase.java
+++ b/liquibase-core/src/main/java/liquibase/database/core/DerbyDatabase.java
@@ -59,7 +59,7 @@ public String getDefaultDriver(String url) {
} catch (ClassNotFoundException classNotFoundException) {
// Return class for newer versions anyway
return derbyNewDriverClassName;
- }
+ }
}
} else if (url.startsWith("jdbc:derby") || url.startsWith("java:derby")) {
//Use EmbeddedDriver if using a derby URL but without the `://` in it
@@ -153,12 +153,15 @@ public String getViewDefinition(CatalogAndSchema schema, String name) throws Dat
@Override
public void close() throws DatabaseException {
+ // FIXME Seems not to be a good way to handle the possibility of getting `getConnection() == null`
+ if (getConnection() != null) {
String url = getConnection().getURL();
String driverName = getDefaultDriver(url);
super.close();
- if (getShutdownEmbeddedDerby() && (driverName != null) && driverName.toLowerCase().contains("embedded")) {
+ if (shutdownEmbeddedDerby && (driverName != null) && driverName.toLowerCase().contains("embedded")) {
shutdownDerby(url, driverName);
}
+ }
}
protected void shutdownDerby(String url, String driverName) throws DatabaseException {
@@ -194,7 +197,6 @@ protected void shutdownDerby(String url, String driverName) throws DatabaseExcep
/**
* Determine Apache Derby driver major/minor version.
*/
- @SuppressWarnings({"static-access", "unchecked"})
protected void determineDriverVersion() {
try {
// Locate the Derby sysinfo class and query its version info
diff --git a/liquibase-core/src/test/java/liquibase/database/AbstractJdbcDatabaseTest.java b/liquibase-core/src/test/java/liquibase/database/AbstractJdbcDatabaseTest.java
index da4f96d13b7..bb9c5e1fb6e 100644
--- a/liquibase-core/src/test/java/liquibase/database/AbstractJdbcDatabaseTest.java
+++ b/liquibase-core/src/test/java/liquibase/database/AbstractJdbcDatabaseTest.java
@@ -1,7 +1,14 @@
package liquibase.database;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Test;
import liquibase.Scope;
import liquibase.change.core.CreateTableChange;
+import liquibase.exception.DatabaseException;
import liquibase.executor.ExecutorService;
import liquibase.sdk.executor.MockExecutor;
import liquibase.sql.visitor.AppendSqlVisitor;
@@ -9,14 +16,6 @@
import liquibase.statement.SqlStatement;
import liquibase.statement.core.DropTableStatement;
import liquibase.structure.core.Table;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertFalse;
/**
* Base test class for database-specific tests
@@ -88,14 +87,14 @@ public void defaultsWorkWithoutAConnection() {
// }
@Test
- public void escapeTableName_noSchema() {
- Database database = getDatabase();
+ public void escapeTableName_noSchema() throws DatabaseException {
+ final Database database = getDatabase();
assertEquals("tableName", database.escapeTableName(null, null, "tableName"));
}
@Test
- public void escapeTableName_withSchema() {
- Database database = getDatabase();
+ public void escapeTableName_withSchema() throws DatabaseException {
+ final Database database = getDatabase();
if (database.supportsCatalogInObjectName(Table.class)) {
assertEquals("catalogName.schemaName.tableName", database.escapeTableName("catalogName", "schemaName", "tableName"));
} else {
@@ -283,7 +282,7 @@ public void test_escapeObjectName() {
assertTrue(tableName.matches("[\\[\\\"`]?My Table [\\]\\\"`]?"));
tableName = database.escapeObjectName("MyTable", Table.class);
- assertTrue(tableName.equals("MyTable"));
+ assertEquals("MyTable", tableName);
tableName = database.escapeObjectName("My Table", Table.class);
assertTrue(tableName.matches("[\\[\\\"`]?My Table[\\]\\\"`]?"));
diff --git a/liquibase-core/src/test/java/liquibase/database/ConnectionServiceFactoryTest.java b/liquibase-core/src/test/java/liquibase/database/ConnectionServiceFactoryTest.java
index efe63fa3167..0d5ac9e2490 100644
--- a/liquibase-core/src/test/java/liquibase/database/ConnectionServiceFactoryTest.java
+++ b/liquibase-core/src/test/java/liquibase/database/ConnectionServiceFactoryTest.java
@@ -1,13 +1,9 @@
package liquibase.database;
-import liquibase.database.jvm.JdbcConnection;
+import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Before;
import org.junit.Test;
-
-import java.sql.Driver;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
+import liquibase.database.jvm.JdbcConnection;
public class ConnectionServiceFactoryTest {
diff --git a/liquibase-core/src/test/java/liquibase/database/core/AbstractDb2DatabaseTest.java b/liquibase-core/src/test/java/liquibase/database/core/AbstractDb2DatabaseTest.java
index db99a27a6c8..7690ebb352f 100644
--- a/liquibase-core/src/test/java/liquibase/database/core/AbstractDb2DatabaseTest.java
+++ b/liquibase-core/src/test/java/liquibase/database/core/AbstractDb2DatabaseTest.java
@@ -1,15 +1,19 @@
package liquibase.database.core;
import junit.framework.TestCase;
-import liquibase.database.Database;
+import liquibase.exception.DatabaseException;
public class AbstractDb2DatabaseTest extends TestCase {
- public void testGetDateLiteral() {
- AbstractDb2Database database = new DB2Database();
- assertEquals("DATE('2018-12-31')", database.getDateLiteral("2018-12-31"));
- assertEquals("TIME('23:58:59')", database.getDateLiteral("23:58:59"));
- assertEquals("TIMESTAMP('2018-12-31 23:58:59')", database.getDateLiteral("2018-12-31 23:58:59"));
- assertEquals("UNSUPPORTED:foo", database.getDateLiteral("foo"));
+ public void testGetDateLiteral() throws DatabaseException {
+ try (AbstractDb2Database database = new DB2Database()) {
+ assertEquals("DATE('2018-12-31')", database.getDateLiteral("2018-12-31"));
+ assertEquals("TIME('23:58:59')", database.getDateLiteral("23:58:59"));
+ assertEquals("TIMESTAMP('2018-12-31 23:58:59')", database.getDateLiteral("2018-12-31 23:58:59"));
+ assertEquals("UNSUPPORTED:foo", database.getDateLiteral("foo"));
+ } catch (final DatabaseException e) {
+ throw e;
+ }
}
+
}
diff --git a/liquibase-core/src/test/java/liquibase/database/core/DB2DatabaseTest.java b/liquibase-core/src/test/java/liquibase/database/core/DB2DatabaseTest.java
index 33a017efd7c..9546275e1a4 100644
--- a/liquibase-core/src/test/java/liquibase/database/core/DB2DatabaseTest.java
+++ b/liquibase-core/src/test/java/liquibase/database/core/DB2DatabaseTest.java
@@ -2,15 +2,18 @@
import junit.framework.TestCase;
import liquibase.database.Database;
+import liquibase.exception.DatabaseException;
public class DB2DatabaseTest extends TestCase {
- public void testGetDefaultDriver() {
- Database database = new DB2Database();
- assertEquals("com.ibm.db2.jcc.DB2Driver", database.getDefaultDriver("jdbc:db2://localhost:50000/liquibas"));
+ public void testGetDefaultDriver() throws DatabaseException {
+ try (Database database = new DB2Database()) {
+ assertEquals("com.ibm.db2.jcc.DB2Driver", database.getDefaultDriver("jdbc:db2://localhost:50000/liquibas"));
- assertNull(database.getDefaultDriver("jdbc:oracle://localhost;databaseName=liquibase"));
+ assertNull(database.getDefaultDriver("jdbc:oracle://localhost;databaseName=liquibase"));
+ } catch (final DatabaseException e) {
+ throw e;
+ }
}
-
}
diff --git a/liquibase-core/src/test/java/liquibase/database/core/DB2zDatabaseTest.java b/liquibase-core/src/test/java/liquibase/database/core/DB2zDatabaseTest.java
index 95750b66846..9b3533f538d 100644
--- a/liquibase-core/src/test/java/liquibase/database/core/DB2zDatabaseTest.java
+++ b/liquibase-core/src/test/java/liquibase/database/core/DB2zDatabaseTest.java
@@ -2,15 +2,18 @@
import junit.framework.TestCase;
import liquibase.database.Database;
+import liquibase.exception.DatabaseException;
public class DB2zDatabaseTest extends TestCase {
- public void testGetDefaultDriver() {
- Database database = new Db2zDatabase();
- assertEquals("com.ibm.db2.jcc.DB2Driver", database.getDefaultDriver("jdbc:db2://localhost:50000/liquibas"));
+ public void testGetDefaultDriver() throws DatabaseException {
+ try (Database database = new Db2zDatabase()) {
+ assertEquals("com.ibm.db2.jcc.DB2Driver", database.getDefaultDriver("jdbc:db2://localhost:50000/liquibas"));
- assertNull(database.getDefaultDriver("jdbc:oracle://localhost;databaseName=liquibase"));
+ assertNull(database.getDefaultDriver("jdbc:oracle://localhost;databaseName=liquibase"));
+ } catch (final DatabaseException e) {
+ throw e;
+ }
}
-
}
diff --git a/liquibase-core/src/test/java/liquibase/database/core/DerbyDatabaseTest.java b/liquibase-core/src/test/java/liquibase/database/core/DerbyDatabaseTest.java
index 5b2032eec16..68eb67178d5 100644
--- a/liquibase-core/src/test/java/liquibase/database/core/DerbyDatabaseTest.java
+++ b/liquibase-core/src/test/java/liquibase/database/core/DerbyDatabaseTest.java
@@ -1,7 +1,7 @@
package liquibase.database.core;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.RETURNS_SMART_NULLS;
-import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
@@ -19,12 +19,15 @@
import liquibase.exception.DatabaseException;
public class DerbyDatabaseTest extends TestCase {
- public void testGetDefaultDriver() {
- Database database = new DerbyDatabase();
- assertEquals("org.apache.derby.jdbc.EmbeddedDriver", database.getDefaultDriver("java:derby:liquibase;create=true"));
+ public void testGetDefaultDriver() throws DatabaseException {
+ try (Database database = new DerbyDatabase()) {
+ assertEquals("org.apache.derby.jdbc.EmbeddedDriver", database.getDefaultDriver("java:derby:liquibase;create=true"));
- assertNull(database.getDefaultDriver("jdbc:oracle://localhost;databaseName=liquibase"));
+ assertNull(database.getDefaultDriver("jdbc:oracle://localhost;databaseName=liquibase"));
+ } catch (final DatabaseException e) {
+ throw e;
+ }
}
public void testGetDateLiteral() {
diff --git a/liquibase-core/src/test/java/liquibase/database/core/MSSQLDatabaseTest.java b/liquibase-core/src/test/java/liquibase/database/core/MSSQLDatabaseTest.java
index fd965be4d15..fffb58f4121 100644
--- a/liquibase-core/src/test/java/liquibase/database/core/MSSQLDatabaseTest.java
+++ b/liquibase-core/src/test/java/liquibase/database/core/MSSQLDatabaseTest.java
@@ -1,10 +1,15 @@
package liquibase.database.core;
-import liquibase.database.*;
-import liquibase.test.JUnitResourceAccessor;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.*;
+import org.junit.Test;
+import liquibase.database.AbstractJdbcDatabaseTest;
+import liquibase.database.Database;
+import liquibase.database.DatabaseFactory;
+import liquibase.exception.DatabaseException;
/**
* Tests for {@link MSSQLDatabase}
@@ -20,7 +25,6 @@ protected String getProductNameString() {
return "Microsoft SQL Server";
}
-
@Override
@Test
public void supportsInitiallyDeferrableColumns() {
@@ -34,31 +38,38 @@ public void getCurrentDateTimeFunction() {
}
@Test
- public void getDefaultDriver() {
- Database database = new MSSQLDatabase();
-
- assertEquals("com.microsoft.sqlserver.jdbc.SQLServerDriver", database.getDefaultDriver("jdbc:sqlserver://localhost;databaseName=liquibase"));
-
- assertNull(database.getDefaultDriver("jdbc:oracle:thin://localhost;databaseName=liquibase"));
+ public void getDefaultDriver() throws DatabaseException {
+ try (Database database = new MSSQLDatabase()) {
+ assertEquals("com.microsoft.sqlserver.jdbc.SQLServerDriver", database.getDefaultDriver("jdbc:sqlserver://localhost;databaseName=liquibase"));
+
+ assertNull(database.getDefaultDriver("jdbc:oracle:thin://localhost;databaseName=liquibase"));
+ } catch (final DatabaseException e) {
+ throw e;
+ }
}
@Override
@Test
- public void escapeTableName_noSchema() {
- Database database = new MSSQLDatabase();
- assertEquals("tableName", database.escapeTableName(null, null, "tableName"));
- assertEquals("[tableName€]", database.escapeTableName(null, null, "tableName€"));
+ public void escapeTableName_noSchema() throws DatabaseException {
+ try (Database database = new MSSQLDatabase()) {
+ assertEquals("tableName", database.escapeTableName(null, null, "tableName"));
+ assertEquals("[tableName€]", database.escapeTableName(null, null, "tableName€"));
+ } catch (final DatabaseException e) {
+ throw e;
+ }
}
@Override
@Test
- public void escapeTableName_withSchema() {
- Database database = new MSSQLDatabase();
- assertEquals("catalogName.schemaName.tableName", database.escapeTableName("catalogName", "schemaName",
- "tableName"));
- assertEquals("[catalogName€].[schemaName€].[tableName€]", database.escapeTableName("catalogName€",
- "schemaName€", "tableName€"));
+ public void escapeTableName_withSchema() throws DatabaseException {
+ try (Database database = new MSSQLDatabase()) {
+ assertEquals("catalogName.schemaName.tableName", database.escapeTableName("catalogName", "schemaName", "tableName"));
+ assertEquals("[catalogName€].[schemaName€].[tableName€]", database.escapeTableName("catalogName€", "schemaName€", "tableName€"));
+ } catch (final DatabaseException e) {
+ throw e;
+ }
}
+
private Database createOfflineDatabase(String url) throws Exception {
return DatabaseFactory.getInstance().openDatabase(url, null, null, null, null);
}
@@ -68,15 +79,15 @@ public void setDefaultSchemaName() throws Exception {
//
// No exception should be thrown by call to setDefaultSchemaName
//
- Database database = createOfflineDatabase("offline:mssql");
+ final Database database = createOfflineDatabase("offline:mssql");
database.setDefaultSchemaName("MySchema");
}
@Test
public void isUnmodifiable() throws Exception {
- Database database = createOfflineDatabase("offline:mssql");
+ final Database database = createOfflineDatabase("offline:mssql");
assertTrue(database instanceof MSSQLDatabase);
- MSSQLDatabase mssqlDatabase = (MSSQLDatabase)database;
+ final MSSQLDatabase mssqlDatabase = (MSSQLDatabase) database;
assertTrue(mssqlDatabase.dataTypeIsNotModifiable("datetime"));
}
diff --git a/liquibase-core/src/test/java/liquibase/database/core/MySQLDatabaseTest.java b/liquibase-core/src/test/java/liquibase/database/core/MySQLDatabaseTest.java
index dc0f0c411d4..6b0aa06595a 100644
--- a/liquibase-core/src/test/java/liquibase/database/core/MySQLDatabaseTest.java
+++ b/liquibase-core/src/test/java/liquibase/database/core/MySQLDatabaseTest.java
@@ -1,13 +1,15 @@
package liquibase.database.core;
-import liquibase.database.AbstractJdbcDatabase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Assert;
+import org.junit.Test;
import liquibase.database.AbstractJdbcDatabaseTest;
import liquibase.database.Database;
+import liquibase.exception.DatabaseException;
import liquibase.statement.DatabaseFunction;
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
/**
* Tests for {@link MySQLDatabase}
@@ -20,7 +22,7 @@ public MySQLDatabaseTest() throws Exception {
@Override
protected String getProductNameString() {
- return "MySQL";
+ return "MySQL";
}
@Override
@@ -29,8 +31,6 @@ public void supportsInitiallyDeferrableColumns() {
assertFalse(getDatabase().supportsInitiallyDeferrableColumns());
}
-
-
@Override
@Test
public void getCurrentDateTimeFunction() {
@@ -39,7 +39,7 @@ public void getCurrentDateTimeFunction() {
@Test
public void getCurrentDateTimeFunctionWithPrecision() {
- MySQLDatabase mySQLDatabase = (MySQLDatabase) getDatabase();
+ final MySQLDatabase mySQLDatabase = (MySQLDatabase) getDatabase();
Assert.assertEquals("NOW(1)", mySQLDatabase.getCurrentDateTimeFunction(1));
Assert.assertEquals("NOW(2)", mySQLDatabase.getCurrentDateTimeFunction(2));
Assert.assertEquals("NOW(5)", mySQLDatabase.getCurrentDateTimeFunction(5));
@@ -47,43 +47,45 @@ public void getCurrentDateTimeFunctionWithPrecision() {
@Test
public void generateDatabaseFunctionValue() {
- MySQLDatabase mySQLDatabase = (MySQLDatabase) getDatabase();
+ final MySQLDatabase mySQLDatabase = (MySQLDatabase) getDatabase();
assertEquals("NOW()", mySQLDatabase.generateDatabaseFunctionValue(new DatabaseFunction("CURRENT_TIMESTAMP()")));
assertNull(mySQLDatabase.generateDatabaseFunctionValue(new DatabaseFunction(null)));
}
@Test
public void generateDatabaseFunctionValueWithPrecision() {
- MySQLDatabase mySQLDatabase = (MySQLDatabase) getDatabase();
+ final MySQLDatabase mySQLDatabase = (MySQLDatabase) getDatabase();
assertEquals("NOW(2)", mySQLDatabase.generateDatabaseFunctionValue(new DatabaseFunction("CURRENT_TIMESTAMP(2)")));
assertEquals("NOW(3)", mySQLDatabase.generateDatabaseFunctionValue(new DatabaseFunction("CURRENT_TIMESTAMP(3)")));
}
@Test
public void generateDatabaseFunctionValueWithIncorrectPrecision() {
- MySQLDatabase mySQLDatabase = (MySQLDatabase) getDatabase();
+ final MySQLDatabase mySQLDatabase = (MySQLDatabase) getDatabase();
assertEquals("NOW()", mySQLDatabase.generateDatabaseFunctionValue(new DatabaseFunction("CURRENT_TIMESTAMP(string)")));
}
- public void testGetDefaultDriver() {
- Database database = new MySQLDatabase();
-
- assertEquals("com.mysql.cj.jdbc.Driver", database.getDefaultDriver("jdbc:mysql://localhost/liquibase"));
+ public void testGetDefaultDriver() throws DatabaseException {
+ try (Database database = new MySQLDatabase()) {
+ assertEquals("com.mysql.cj.jdbc.Driver", database.getDefaultDriver("jdbc:mysql://localhost/liquibase"));
- assertNull(database.getDefaultDriver("jdbc:db2://localhost;databaseName=liquibase"));
+ assertNull(database.getDefaultDriver("jdbc:db2://localhost;databaseName=liquibase"));
+ } catch (final DatabaseException e) {
+ throw e;
+ }
}
@Override
@Test
public void escapeTableName_noSchema() {
- Database database = getDatabase();
+ final Database database = getDatabase();
assertEquals("tableName", database.escapeTableName(null, null, "tableName"));
}
@Override
@Test
public void escapeTableName_withSchema() {
- Database database = getDatabase();
+ final Database database = getDatabase();
assertEquals("catalogName.tableName", database.escapeTableName("catalogName", "schemaName", "tableName"));
}
diff --git a/liquibase-core/src/test/java/liquibase/database/core/OracleDatabaseTest.java b/liquibase-core/src/test/java/liquibase/database/core/OracleDatabaseTest.java
index f75d10efb5d..a86dff84874 100644
--- a/liquibase-core/src/test/java/liquibase/database/core/OracleDatabaseTest.java
+++ b/liquibase-core/src/test/java/liquibase/database/core/OracleDatabaseTest.java
@@ -1,5 +1,17 @@
package liquibase.database.core;
+import static java.util.ResourceBundle.getBundle;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.ResourceBundle;
+
+import org.hamcrest.CoreMatchers;
+import org.junit.Assert;
+import org.junit.Test;
import liquibase.Scope;
import liquibase.database.AbstractJdbcDatabaseTest;
import liquibase.database.Database;
@@ -7,6 +19,7 @@
import liquibase.database.OfflineConnection;
import liquibase.datatype.DatabaseDataType;
import liquibase.datatype.core.TimestampType;
+import liquibase.exception.DatabaseException;
import liquibase.exception.LiquibaseException;
import liquibase.executor.ExecutorService;
import liquibase.resource.ResourceAccessor;
@@ -16,18 +29,6 @@
import liquibase.statement.SqlStatement;
import liquibase.statement.core.UpdateStatement;
import liquibase.test.JUnitResourceAccessor;
-import org.hamcrest.CoreMatchers;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.ResourceBundle;
-
-import static java.util.ResourceBundle.getBundle;
-import static org.junit.Assert.*;
-
-import org.hamcrest.CoreMatchers;
-import org.junit.Test;
/**
* Tests for {@link liquibase.database.core.OracleDatabase}.
@@ -48,72 +49,67 @@ protected String getProductNameString() {
@Override
@Test
public void escapeTableName_noSchema() {
- Database database = getDatabase();
- assertEquals("table name without schema is correctly escaped as simply tableName",
- "tableName", database.escapeTableName(null, null, "tableName"));
+ final Database database = getDatabase();
+ assertEquals("table name without schema is correctly escaped as simply tableName", "tableName", database.escapeTableName(null, null, "tableName"));
}
@Test
public void saveNlsEnvironment() throws Exception {
- Database database = getDatabase();
- ResourceAccessor junitResourceAccessor = new JUnitResourceAccessor();
- OfflineConnection offlineConnection = new OfflineConnection("offline:oracle", junitResourceAccessor);
+ final Database database = getDatabase();
+ final ResourceAccessor junitResourceAccessor = new JUnitResourceAccessor();
+ final OfflineConnection offlineConnection = new OfflineConnection("offline:oracle", junitResourceAccessor);
database.setConnection(offlineConnection);
}
@Override
@Test
public void escapeTableName_withSchema() {
- Database database = getDatabase();
- assertEquals("table name without schema but with catalog is correctly escaped as catalogName.tableName",
- "catalogName.tableName", database.escapeTableName("catalogName", "schemaName", "tableName"));
+ final Database database = getDatabase();
+ assertEquals("table name without schema but with catalog is correctly escaped as catalogName.tableName", "catalogName.tableName", database.escapeTableName("catalogName", "schemaName", "tableName"));
}
@Override
@Test
public void supportsInitiallyDeferrableColumns() {
- assertTrue("Oracle Database is correctly reported as being able to do INITIALLY DEFERRED column constraints.",
- getDatabase().supportsInitiallyDeferrableColumns());
+ assertTrue("Oracle Database is correctly reported as being able to do INITIALLY DEFERRED column constraints.", getDatabase().supportsInitiallyDeferrableColumns());
}
-
@Override
@Test
public void getCurrentDateTimeFunction() {
- Assert.assertEquals("Oracle Database's 'give me the current timestamp' function is correctly reported.",
- "SYSTIMESTAMP", getDatabase().getCurrentDateTimeFunction());
+ Assert.assertEquals("Oracle Database's 'give me the current timestamp' function is correctly reported.", "SYSTIMESTAMP", getDatabase().getCurrentDateTimeFunction());
}
@Test
public void verifyTimestampDataTypeWhenWithoutClauseIsPresent() {
- TimestampType ts = new TimestampType();
+ final TimestampType ts = new TimestampType();
ts.setAdditionalInformation("WITHOUT TIME ZONE");
- DatabaseDataType oracleDataType = ts.toDatabaseDataType(getDatabase());
+ final DatabaseDataType oracleDataType = ts.toDatabaseDataType(getDatabase());
assertThat(oracleDataType.getType(), CoreMatchers.is("TIMESTAMP"));
}
- public void testGetDefaultDriver() {
- Database database = new OracleDatabase();
-
- assertEquals("The correct JDBC driver class name is reported if the URL is a Oracle JDBC URL",
- "oracle.jdbc.OracleDriver", database.getDefaultDriver("jdbc:oracle:thin:@localhost/XE"));
+ public void testGetDefaultDriver() throws DatabaseException {
+ try (Database database = new OracleDatabase()) {
+ assertEquals("The correct JDBC driver class name is reported if the URL is a Oracle JDBC URL", "oracle.jdbc.OracleDriver", database.getDefaultDriver("jdbc:oracle:thin:@localhost/XE"));
- assertNull("No JDBC driver class is returned if the URL is NOT an Oracle Database JDBC URL.",
- database.getDefaultDriver("jdbc:db2://localhost;databaseName=liquibase"));
+ assertNull("No JDBC driver class is returned if the URL is NOT an Oracle Database JDBC URL.", database.getDefaultDriver("jdbc:db2://localhost;databaseName=liquibase"));
+ } catch (final DatabaseException e) {
+ throw e;
+ }
}
@Test
public void validateCore2953WrongSqlOnValueSequenceNext() throws LiquibaseException {
- Database database = getDatabase();
+ final Database database = getDatabase();
database.setObjectQuotingStrategy(ObjectQuotingStrategy.QUOTE_ALL_OBJECTS);
database.setDefaultSchemaName("sampleschema");
- MockExecutor mockExecutor = new MockExecutor();
+ final MockExecutor mockExecutor = new MockExecutor();
mockExecutor.setDatabase(database);
Scope.getCurrentScope().getSingleton(ExecutorService.class).setExecutor("jdbc", database, mockExecutor);
- UpdateStatement updateStatement = new UpdateStatement(null, null, "test_table");
+ final UpdateStatement updateStatement = new UpdateStatement(null, null, "test_table");
updateStatement.addNewColumnValue("id", new SequenceNextValueFunction("test_table_id_seq"));
database.execute(new SqlStatement[]{updateStatement}, new ArrayList());
diff --git a/liquibase-core/src/test/java/liquibase/database/core/PostgresDatabaseTest.java b/liquibase-core/src/test/java/liquibase/database/core/PostgresDatabaseTest.java
index 87bf907ddc8..7ed5ed54439 100644
--- a/liquibase-core/src/test/java/liquibase/database/core/PostgresDatabaseTest.java
+++ b/liquibase-core/src/test/java/liquibase/database/core/PostgresDatabaseTest.java
@@ -1,16 +1,19 @@
package liquibase.database.core;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Assert;
+import org.junit.Test;
import liquibase.GlobalConfiguration;
import liquibase.changelog.column.LiquibaseColumn;
import liquibase.database.AbstractJdbcDatabaseTest;
import liquibase.database.Database;
import liquibase.database.ObjectQuotingStrategy;
+import liquibase.exception.DatabaseException;
import liquibase.structure.core.Table;
import liquibase.util.StringUtil;
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
/**
* Tests for {@link PostgresDatabase}
@@ -49,12 +52,14 @@ public void testCheckDatabaseChangeLogTable() throws Exception {
; //TODO: test has troubles, fix later
}
- public void testGetDefaultDriver() {
- Database database = new PostgresDatabase();
-
- assertEquals("org.postgresql.Driver", database.getDefaultDriver("jdbc:postgresql://localhost/liquibase"));
+ public void testGetDefaultDriver() throws DatabaseException {
+ try (Database database = new PostgresDatabase()) {
+ assertEquals("org.postgresql.Driver", database.getDefaultDriver("jdbc:postgresql://localhost/liquibase"));
- assertNull(database.getDefaultDriver("jdbc:db2://localhost;databaseName=liquibase"));
+ assertNull(database.getDefaultDriver("jdbc:db2://localhost;databaseName=liquibase"));
+ } catch (final DatabaseException e) {
+ throw e;
+ }
}
diff --git a/liquibase-core/src/test/java/liquibase/database/core/UnsupportedDatabaseTest.java b/liquibase-core/src/test/java/liquibase/database/core/UnsupportedDatabaseTest.java
index a1c23c9e4f3..eb0bb10ae39 100644
--- a/liquibase-core/src/test/java/liquibase/database/core/UnsupportedDatabaseTest.java
+++ b/liquibase-core/src/test/java/liquibase/database/core/UnsupportedDatabaseTest.java
@@ -2,17 +2,21 @@
import junit.framework.TestCase;
import liquibase.database.Database;
+import liquibase.exception.DatabaseException;
public class UnsupportedDatabaseTest extends TestCase {
- public void testGetDefaultDriver() {
- Database database = new UnsupportedDatabase();
- assertNull(database.getDefaultDriver("jdbc:oracle://localhost;databaseName=liquibase"));
- assertNull(database.getDefaultDriver("jdbc:db2://localhost;databaseName=liquibase"));
- assertNull(database.getDefaultDriver("jdbc:hsqldb://localhost;databaseName=liquibase"));
- assertNull(database.getDefaultDriver("jdbc:derby://localhost;databaseName=liquibase"));
- assertNull(database.getDefaultDriver("jdbc:sqlserver://localhost;databaseName=liquibase"));
- assertNull(database.getDefaultDriver("jdbc:postgresql://localhost;databaseName=liquibase"));
+ public void testGetDefaultDriver() throws DatabaseException {
+ try (Database database = new UnsupportedDatabase()) {
+ assertNull(database.getDefaultDriver("jdbc:oracle://localhost;databaseName=liquibase"));
+ assertNull(database.getDefaultDriver("jdbc:db2://localhost;databaseName=liquibase"));
+ assertNull(database.getDefaultDriver("jdbc:hsqldb://localhost;databaseName=liquibase"));
+ assertNull(database.getDefaultDriver("jdbc:derby://localhost;databaseName=liquibase"));
+ assertNull(database.getDefaultDriver("jdbc:sqlserver://localhost;databaseName=liquibase"));
+ assertNull(database.getDefaultDriver("jdbc:postgresql://localhost;databaseName=liquibase"));
+ } catch (final DatabaseException e) {
+ throw e;
+ }
}
}