diff --git a/pom.xml b/pom.xml index f7e3577..4275fe9 100644 --- a/pom.xml +++ b/pom.xml @@ -1,4 +1,7 @@ - + 4.0.0 com.nordstrom.tools java-utils @@ -38,7 +41,7 @@ 3.2.8 1.7.0 3.1.1 - 10.14.2.0 + 2.7.4 true @@ -52,7 +55,7 @@ ossrh - >https://ossrh-staging-api.central.sonatype.com/content/repositories/snapshots + https://ossrh-staging-api.central.sonatype.com/content/repositories/snapshots ossrh @@ -86,9 +89,10 @@ test - org.apache.derby - derby - ${apache-derby.version} + org.hsqldb + hsqldb + ${hsqldb.version} + jdk8 test @@ -142,11 +146,6 @@ sign - - ${gpg.keyname} - ${gpg.keyname} - ${skipSigning} - diff --git a/src/test/java/com/nordstrom/common/jar/JarUtilsTest.java b/src/test/java/com/nordstrom/common/jar/JarUtilsTest.java index 2bd4e91..3b458a2 100644 --- a/src/test/java/com/nordstrom/common/jar/JarUtilsTest.java +++ b/src/test/java/com/nordstrom/common/jar/JarUtilsTest.java @@ -4,13 +4,18 @@ import static org.testng.Assert.assertTrue; import java.io.File; + import org.testng.annotations.Test; public class JarUtilsTest { - - private static final String[] CONTEXTS = { "org.testng.annotations.Test", "com.beust.jcommander.JCommander", - "org.apache.derby.jdbc.EmbeddedDriver", "org.slf4j.Logger" }; - + + private static final String[] CONTEXTS = { + "org.testng.annotations.Test", + "com.beust.jcommander.JCommander", + "org.hsqldb.jdbc.JDBCDriver", + "org.slf4j.Logger" + }; + @Test public void testClasspath() { String result = JarUtils.getClasspath(CONTEXTS); @@ -21,5 +26,4 @@ public void testClasspath() { assertTrue(file.exists(), "nonexistent path entry: " + thisPath); } } - } diff --git a/src/test/java/com/nordstrom/common/jdbc/DatabaseUtilsTest.java b/src/test/java/com/nordstrom/common/jdbc/DatabaseUtilsTest.java index 49b5ebd..2e6cccd 100644 --- a/src/test/java/com/nordstrom/common/jdbc/DatabaseUtilsTest.java +++ b/src/test/java/com/nordstrom/common/jdbc/DatabaseUtilsTest.java @@ -1,14 +1,17 @@ package com.nordstrom.common.jdbc; import static org.testng.Assert.assertEquals; - import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; +import java.sql.SQLSyntaxErrorException; +import java.sql.Statement; import java.sql.Types; + import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import com.nordstrom.common.jdbc.DatabaseUtils.QueryAPI; @@ -16,53 +19,66 @@ import com.nordstrom.common.jdbc.DatabaseUtils.SProcAPI; public class DatabaseUtilsTest { - - static { - System.setProperty("derby.system.home", "target"); - } - + + private static Connection connection; + @BeforeClass - public static void startDerby() { - Connection conn = null; - try { - conn = DriverManager.getConnection(TestQuery.connection() + ";create=true"); - } catch (SQLException e) { - printSQLException(e); - } finally { - if (conn != null) { - try { - conn.close(); - } catch (SQLException e) { - printSQLException(e); - } - } - } + public static void startDB() throws SQLException { + connection = DriverManager.getConnection("jdbc:hsqldb:mem:testdb", "SA", ""); } - + @AfterClass - public static void stopDerby() { - Connection conn = null; - try { - conn = DriverManager.getConnection(TestQuery.connection() + ";shutdown=true"); - } catch (SQLException e) { - if ( (e.getErrorCode() == 45000) && ("08006".equals(e.getSQLState())) ) { - // we got the expected exception - System.out.println("Derby shut down normally"); - } else { - System.err.println("Derby did not shut down normally"); - printSQLException(e); - } - } finally { - if (conn != null) { - try { - conn.close(); - } catch (SQLException e) { - printSQLException(e); - } - } + public static void stopDB() throws SQLException { + if (connection != null && !connection.isClosed()) { + connection.close(); } } - + +// /** +// * Ensures the required tables and procedures exist before tests run. +// */ +// private static void createObjects() throws SQLException { +// try (Statement stmt = connection.createStatement()) { +// // Table +// stmt.executeUpdate("CREATE TABLE IF NOT EXISTS LOCATION (" + +// "id INT PRIMARY KEY, " + +// "name VARCHAR(255))"); +// +// // Drop procedures if they exist +// stmt.executeUpdate("DROP PROCEDURE IF EXISTS IN_VARARGS"); +// stmt.executeUpdate("DROP PROCEDURE IF EXISTS OUT_VARARGS"); +// stmt.executeUpdate("DROP PROCEDURE IF EXISTS INOUT_VARARGS"); +// +// // Create stored procedures +// stmt.execute( +// "CREATE PROCEDURE IN_VARARGS(IN param1 INT, OUT param2 INT) " + +// "MODIFIES SQL DATA " + +// "BEGIN ATOMIC SET param2 = param1 * 2; END" +// ); +// +// stmt.execute( +// "CREATE PROCEDURE OUT_VARARGS(OUT param1 INT, OUT param2 INT) " + +// "MODIFIES SQL DATA " + +// "BEGIN ATOMIC SET param1 = 1; SET param2 = 2; END" +// ); +// +// stmt.execute( +// "CREATE PROCEDURE INOUT_VARARGS(INOUT param1 INT, INOUT param2 INT) " + +// "MODIFIES SQL DATA " + +// "BEGIN ATOMIC SET param1 = param1 + 1; SET param2 = param2 + 1; END" +// ); +// } +// } + + @BeforeMethod + public void cleanTable() throws SQLException { + try (Statement stmt = connection.createStatement()) { + stmt.executeUpdate("DELETE FROM LOCATION"); + } catch (SQLSyntaxErrorException e) { + printSQLException(e); + } + } + @Test public void createTable() { DatabaseUtils.update(TestQuery.CREATE); @@ -130,7 +146,10 @@ public void dropTable() { public void testInVarargs() { try { DatabaseUtils.update(TestQuery.IN_VARARGS); - } catch (Exception ignored) { + } catch (Exception e) { + if (e instanceof SQLException) { + printSQLException((SQLException) e); + } } String result = DatabaseUtils.getString(TestSProc.IN_VARARGS, "", 5, 4, 3); @@ -183,33 +202,46 @@ public void testInOutVarargs() throws SQLException { } enum TestQuery implements QueryAPI { - CREATE("create table location(num int, addr varchar(40))"), - INSERT("insert into location values (?, ?)", "num", "addr"), - UPDATE("update location set num=?, addr=? where num=?", "num", "addr", "whereNum"), - SHOW_ADDRESSES("create procedure SHOW_ADDRESSES() parameter style java " - + "language java dynamic result sets 1 " - + "external name 'com.nordstrom.common.jdbc.StoredProcedure.showAddresses'"), - DROP_PROC_SHOW("drop procedure SHOW_ADDRESSES"), - GET_NUM("select num from location where addr='Union St.'"), - GET_STR("select addr from location where num=1910"), - GET_RESULT_PACKAGE("select * from location"), - DROP("drop table location"), - IN_VARARGS("create procedure IN_VARARGS(out result varchar( 32672 ), b int ...) " - + "language java parameter style derby no sql deterministic " - + "external name 'com.nordstrom.common.jdbc.StoredProcedure.inVarargs'"), - DROP_PROC_IN("drop procedure IN_VARARGS"), - OUT_VARARGS("create procedure OUT_VARARGS(seed int, out b int ...) " - + "language java parameter style derby no sql deterministic " - + "external name 'com.nordstrom.common.jdbc.StoredProcedure.outVarargs'"), - DROP_PROC_OUT("drop procedure OUT_VARARGS"), - INOUT_VARARGS("create procedure INOUT_VARARGS(seed int, inout b int ...) " - + "language java parameter style derby no sql deterministic " - + "external name 'com.nordstrom.common.jdbc.StoredProcedure.inoutVarargs'"), - DROP_PROC_INOUT("drop procedure INOUT_VARARGS"); - + CREATE("CREATE TABLE location(num INT, addr VARCHAR(40))"), + INSERT("INSERT INTO location VALUES (?, ?)", "num", "addr"), + UPDATE("UPDATE location SET num=?, addr=? WHERE num=?", "num", "addr", "whereNum"), + SHOW_ADDRESSES( + "CREATE PROCEDURE SHOW_ADDRESSES() " + + "READS SQL DATA " + + "DYNAMIC RESULT SETS 1 " + + "EXTERNAL NAME 'CLASSPATH:com.nordstrom.common.jdbc.StoredProcedure.showAddresses' " + + "LANGUAGE JAVA" + ), + DROP_PROC_SHOW("DROP PROCEDURE SHOW_ADDRESSES"), + GET_NUM("SELECT num FROM location WHERE addr='Union St.'"), + GET_STR("SELECT addr FROM location WHERE num=1910"), + GET_RESULT_PACKAGE("SELECT * FROM location"), + DROP("DROP TABLE location"), + IN_VARARGS( + "CREATE PROCEDURE IN_VARARGS(OUT result VARCHAR(32672), IN values INTEGER ARRAY) " + + "READS SQL DATA " + + "EXTERNAL NAME 'CLASSPATH:com.nordstrom.common.jdbc.StoredProcedure.inVarargs' " + + "LANGUAGE JAVA" + ), + DROP_PROC_IN("DROP PROCEDURE IN_VARARGS"), + OUT_VARARGS( + "CREATE PROCEDURE OUT_VARARGS(IN seed INT, OUT b INTEGER ARRAY) " + + "READS SQL DATA " + + "EXTERNAL NAME 'CLASSPATH:com.nordstrom.common.jdbc.StoredProcedure.outVarargs' " + + "LANGUAGE JAVA" + ), + DROP_PROC_OUT("DROP PROCEDURE OUT_VARARGS"), + INOUT_VARARGS( + "CREATE PROCEDURE INOUT_VARARGS(IN seed INT, INOUT b INTEGER ARRAY) " + + "READS SQL DATA " + + "EXTERNAL NAME 'CLASSPATH:com.nordstrom.common.jdbc.StoredProcedure.inoutVarargs' " + + "LANGUAGE JAVA" + ), + DROP_PROC_INOUT("DROP PROCEDURE INOUT_VARARGS"); + private final String query; private final String[] args; - + TestQuery(String query, String... args) { this.query = query; this.args = args; @@ -234,9 +266,9 @@ public String getConnection() { public Enum getEnum() { return this; } - + public static String connection() { - return "jdbc:derby:@TestDB"; + return "jdbc:hsqldb:mem:testdb"; } } diff --git a/src/test/java/com/nordstrom/common/jdbc/StoredProcedure.java b/src/test/java/com/nordstrom/common/jdbc/StoredProcedure.java index 8f7596e..71374d2 100644 --- a/src/test/java/com/nordstrom/common/jdbc/StoredProcedure.java +++ b/src/test/java/com/nordstrom/common/jdbc/StoredProcedure.java @@ -10,28 +10,16 @@ public class StoredProcedure { public static void showAddresses(ResultSet[] rs) throws SQLException { Connection con = DriverManager.getConnection("jdbc:default:connection"); - String query = "select NUM, ADDR from LOCATION"; Statement stmt = con.createStatement(); - rs[0] = stmt.executeQuery(query); + rs[0] = stmt.executeQuery("SELECT NUM, ADDR FROM LOCATION"); } - ////////////////////////// - // - // IN, OUT, IN/OUT PARAMETERS - // - ////////////////////////// - public static void inVarargs(String[] result, int... values) { String retval; - if (values == null) { - retval = null; - } else if (values.length == 0) { + if (values == null || values.length == 0) { retval = null; } else { - StringBuilder buffer = new StringBuilder(); - - buffer.append("RESULT: "); - + StringBuilder buffer = new StringBuilder("RESULT:"); for (int value : values) { buffer.append(" ").append(value); } @@ -42,7 +30,7 @@ public static void inVarargs(String[] result, int... values) { result[0] = retval; } - public static void outVarargs(int seed, int[]... values) throws Exception { + public static void outVarargs(int seed, int[]... values) { if (values != null) { for (int i = 0; i < values.length; i++) { values[i][0] = seed + i; @@ -50,7 +38,7 @@ public static void outVarargs(int seed, int[]... values) throws Exception { } } - public static void inoutVarargs(int seed, int[]... values) throws Exception { + public static void inoutVarargs(int seed, int[]... values) { if (values != null) { for (int i = 0; i < values.length; i++) { values[i][0] += seed; diff --git a/src/test/resources/META-INF/services/java.sql.Driver b/src/test/resources/META-INF/services/java.sql.Driver index 8602f25..1deadde 100644 --- a/src/test/resources/META-INF/services/java.sql.Driver +++ b/src/test/resources/META-INF/services/java.sql.Driver @@ -1 +1 @@ -org.apache.derby.jdbc.EmbeddedDriver +org.hsqldb.jdbc.JDBCDriver