Repository: jena Updated Branches: refs/heads/master 2472f6ae8 -> 6ac577192
Fix up try-resource usage Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/6ac57719 Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/6ac57719 Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/6ac57719 Branch: refs/heads/master Commit: 6ac5771924a04e725d47f1d04b6eb55100601eb6 Parents: 2472f6a Author: Andy Seaborne <[email protected]> Authored: Tue Sep 23 15:57:55 2014 +0100 Committer: Andy Seaborne <[email protected]> Committed: Tue Sep 23 15:57:55 2014 +0100 ---------------------------------------------------------------------- .../com/hp/hpl/jena/sdb/sql/SDBConnection.java | 7 +- .../java/com/hp/hpl/jena/sdb/sql/TableDump.java | 242 +++++++++---------- .../com/hp/hpl/jena/sdb/sql/TableUtils.java | 38 +-- .../com/hp/hpl/jena/sdb/util/StoreUtils.java | 17 +- jena-sdb/src/main/java/sdb/sdbquery.java | 17 +- .../hpl/jena/sdb/test/junit/QueryTestSDB.java | 6 +- .../hp/hpl/jena/sdb/test/junit/StoreList.java | 5 +- jena-sdb/src/test/java/sdb/test/TestDB.java | 8 +- .../src/test/java/sdb/test/TestStringBase.java | 81 +++---- 9 files changed, 201 insertions(+), 220 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/6ac57719/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/SDBConnection.java ---------------------------------------------------------------------- diff --git a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/SDBConnection.java b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/SDBConnection.java index a6240cb..25ebe2d 100644 --- a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/SDBConnection.java +++ b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/SDBConnection.java @@ -158,11 +158,8 @@ public class SDBConnection writeLog("execUpdate", sqlString) ; Connection conn = getSqlConnection() ; - try { - Statement s = conn.createStatement() ; - int rc = s.executeUpdate(sqlString) ; - s.close() ; - return rc ; + try ( Statement s = conn.createStatement() ) { + return s.executeUpdate(sqlString) ; } catch (SQLException ex) { exception("execUpdate", ex, sqlString) ; http://git-wip-us.apache.org/repos/asf/jena/blob/6ac57719/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/TableDump.java ---------------------------------------------------------------------- diff --git a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/TableDump.java b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/TableDump.java index 0402b30..e09d3c5 100644 --- a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/TableDump.java +++ b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/TableDump.java @@ -69,139 +69,139 @@ public class TableDump result.append("Database: " + dbMetaData.getDatabaseProductName() + " (" + dbMetaData.getDatabaseProductVersion() + ")\n"); result.append("Driver name: " + dbMetaData.getDriverName() + " (" + dbMetaData.getDriverVersion() + ")\n"); - ResultSet rs = dbMetaData.getTables(catalog, schema, tables, null); - if (! rs.next()) { - System.err.println("Unable to find any tables matching: catalog="+catalog+" schema="+schema+" tables="+tables); - rs.close(); - } else { - // Right, we have some tables, so we can go to work. - // the details we have are - // TABLE_CAT String => table catalog (may be null) - // TABLE_SCHEM String => table schema (may be null) - // TABLE_NAME String => table name - // TABLE_TYPE String => table type. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM". - // REMARKS String => explanatory comment on the table - // TYPE_CAT String => the types catalog (may be null) - // TYPE_SCHEM String => the types schema (may be null) - // TYPE_NAME String => type name (may be null) - // SELF_REFERENCING_COL_NAME String => name of the designated "identifier" column of a typed table (may be null) - // REF_GENERATION String => specifies how values in SELF_REFERENCING_COL_NAME are created. Values are "SYSTEM", "USER", "DERIVED". (may be null) - // We will ignore the schema and stuff, because people might want to import it somewhere else - // We will also ignore any tables that aren't of type TABLE for now. - // We use a do-while because we've already caled rs.next to see if there are any rows - do { - String tableName = rs.getString("TABLE_NAME"); - String tableType = rs.getString("TABLE_TYPE"); - if ("TABLE".equalsIgnoreCase(tableType)) { - result.append("\n-- "+tableName); - result.append("\nCREATE TABLE "+tableName+" (\n"); - ResultSet tableMetaData = dbMetaData.getColumns(null, null, tableName, "%"); - boolean firstLine = true; - while (tableMetaData.next()) { - if (firstLine) { - firstLine = false; - } else { - // If we're not the first line, then finish the previous line with a comma - result.append(",\n"); - } - String columnName = tableMetaData.getString("COLUMN_NAME"); - String columnType = tableMetaData.getString("TYPE_NAME"); - // WARNING: this may give daft answers for some types on some databases (eg JDBC-ODBC link) - int columnSize = tableMetaData.getInt("COLUMN_SIZE"); - String nullable = tableMetaData.getString("IS_NULLABLE"); - String nullString = "NULL"; - if ("NO".equalsIgnoreCase(nullable)) { - nullString = "NOT NULL"; + try( ResultSet rs = dbMetaData.getTables(catalog, schema, tables, null) ) { + if (! rs.next()) + System.err.println("Unable to find any tables matching: catalog="+catalog+" schema="+schema+" tables="+tables); + else { + // Right, we have some tables, so we can go to work. + // the details we have are + // TABLE_CAT String => table catalog (may be null) + // TABLE_SCHEM String => table schema (may be null) + // TABLE_NAME String => table name + // TABLE_TYPE String => table type. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM". + // REMARKS String => explanatory comment on the table + // TYPE_CAT String => the types catalog (may be null) + // TYPE_SCHEM String => the types schema (may be null) + // TYPE_NAME String => type name (may be null) + // SELF_REFERENCING_COL_NAME String => name of the designated "identifier" column of a typed table (may be null) + // REF_GENERATION String => specifies how values in SELF_REFERENCING_COL_NAME are created. Values are "SYSTEM", "USER", "DERIVED". (may be null) + // We will ignore the schema and stuff, because people might want to import it somewhere else + // We will also ignore any tables that aren't of type TABLE for now. + // We use a do-while because we've already caled rs.next to see if there are any rows + do { + String tableName = rs.getString("TABLE_NAME"); + String tableType = rs.getString("TABLE_TYPE"); + if ("TABLE".equalsIgnoreCase(tableType)) { + result.append("\n-- "+tableName); + result.append("\nCREATE TABLE "+tableName+" (\n"); + try ( ResultSet tableMetaData = dbMetaData.getColumns(null, null, tableName, "%") ) { + boolean firstLine = true; + while (tableMetaData.next()) { + if (firstLine) { + firstLine = false; + } else { + // If we're not the first line, then finish the previous line with a comma + result.append(",\n"); + } + String columnName = tableMetaData.getString("COLUMN_NAME"); + String columnType = tableMetaData.getString("TYPE_NAME"); + // WARNING: this may give daft answers for some types on some databases (eg JDBC-ODBC link) + int columnSize = tableMetaData.getInt("COLUMN_SIZE"); + String nullable = tableMetaData.getString("IS_NULLABLE"); + String nullString = "NULL"; + if ("NO".equalsIgnoreCase(nullable)) { + nullString = "NOT NULL"; + } + result.append(" "+columnNameQuote+columnName+columnNameQuote+" "+columnType+" ("+columnSize+")"+" "+nullString); + } } - result.append(" "+columnNameQuote+columnName+columnNameQuote+" "+columnType+" ("+columnSize+")"+" "+nullString); - } - tableMetaData.close(); - - // Now we need to put the primary key constraint - try { - ResultSet primaryKeys = dbMetaData.getPrimaryKeys(catalog, schema, tableName); - // What we might get: - // TABLE_CAT String => table catalog (may be null) - // TABLE_SCHEM String => table schema (may be null) - // TABLE_NAME String => table name - // COLUMN_NAME String => column name - // KEY_SEQ short => sequence number within primary key - // PK_NAME String => primary key name (may be null) - String primaryKeyName = null; - StringBuffer primaryKeyColumns = new StringBuffer(); - while (primaryKeys.next()) { - String thisKeyName = primaryKeys.getString("PK_NAME"); - if ((thisKeyName != null && primaryKeyName == null) + + // Now we need to put the primary key constraint + try { + ResultSet primaryKeys = dbMetaData.getPrimaryKeys(catalog, schema, tableName); + // What we might get: + // TABLE_CAT String => table catalog (may be null) + // TABLE_SCHEM String => table schema (may be null) + // TABLE_NAME String => table name + // COLUMN_NAME String => column name + // KEY_SEQ short => sequence number within primary key + // PK_NAME String => primary key name (may be null) + String primaryKeyName = null; + StringBuffer primaryKeyColumns = new StringBuffer(); + while (primaryKeys.next()) { + String thisKeyName = primaryKeys.getString("PK_NAME"); + if ((thisKeyName != null && primaryKeyName == null) || (thisKeyName == null && primaryKeyName != null) || (thisKeyName != null && ! thisKeyName.equals(primaryKeyName)) || (primaryKeyName != null && ! primaryKeyName.equals(thisKeyName))) { - // the keynames aren't the same, so output all that we have so far (if anything) - // and start a new primary key entry + // the keynames aren't the same, so output all that we have so far (if anything) + // and start a new primary key entry + if (primaryKeyColumns.length() > 0) { + // There's something to output + result.append(",\n PRIMARY KEY "); + if (primaryKeyName != null) { result.append(primaryKeyName); } + result.append("("+primaryKeyColumns.toString()+")"); + } + // Start again with the new name + primaryKeyColumns = new StringBuffer(); + primaryKeyName = thisKeyName; + } + // Now append the column if (primaryKeyColumns.length() > 0) { - // There's something to output - result.append(",\n PRIMARY KEY "); - if (primaryKeyName != null) { result.append(primaryKeyName); } - result.append("("+primaryKeyColumns.toString()+")"); + primaryKeyColumns.append(", "); } - // Start again with the new name - primaryKeyColumns = new StringBuffer(); - primaryKeyName = thisKeyName; + primaryKeyColumns.append(primaryKeys.getString("COLUMN_NAME")); } - // Now append the column if (primaryKeyColumns.length() > 0) { - primaryKeyColumns.append(", "); + // There's something to output + result.append(",\n PRIMARY KEY "); + if (primaryKeyName != null) { result.append(primaryKeyName); } + result.append(" ("+primaryKeyColumns.toString()+")"); } - primaryKeyColumns.append(primaryKeys.getString("COLUMN_NAME")); + } catch (SQLException e) { + // NB you will get this exception with the JDBC-ODBC link because it says + // [Microsoft][ODBC Driver Manager] Driver does not support this function + System.err.println("Unable to get primary keys for table "+tableName+" because "+e); } - if (primaryKeyColumns.length() > 0) { - // There's something to output - result.append(",\n PRIMARY KEY "); - if (primaryKeyName != null) { result.append(primaryKeyName); } - result.append(" ("+primaryKeyColumns.toString()+")"); + + result.append("\n);\n"); + + /** + * Get the indexes for this table + */ + try + { + ResultSet indexes = dbMetaData.getIndexInfo(null, null, tableName, false, false); + Map<String, List<String>> index2col = new HashMap<String,List<String>>(); + Map<String, Boolean> index2unique = new HashMap<String, Boolean>(); + while (indexes.next()) + { + Boolean nonUnique = indexes.getBoolean("NON_UNIQUE"); + String name = indexes.getString("INDEX_NAME"); + String col = indexes.getString("COLUMN_NAME"); + if (!index2col.containsKey(name)) + index2col.put(name, new ArrayList<String>()); + index2col.get(name).add(col); + index2unique.put(name, !nonUnique); + } + for (String index: index2col.keySet()) + { + List<String> cols = index2col.get(index); + result.append("CREATE "); + if (index2unique.get(index)) result.append("UNIQUE "); + result.append("INDEX " + index + " ON " + tableName + " ("); + result.append(strjoin(", ", cols.toArray(new String[]{}))); + result.append(")\n"); + } + } + catch (SQLException e) + { + System.err.println("Unable to get indexes for table "+tableName+" because "+e); } - } catch (SQLException e) { - // NB you will get this exception with the JDBC-ODBC link because it says - // [Microsoft][ODBC Driver Manager] Driver does not support this function - System.err.println("Unable to get primary keys for table "+tableName+" because "+e); - } - - result.append("\n);\n"); - - /** - * Get the indexes for this table - */ - try - { - ResultSet indexes = dbMetaData.getIndexInfo(null, null, tableName, false, false); - Map<String, List<String>> index2col = new HashMap<String,List<String>>(); - Map<String, Boolean> index2unique = new HashMap<String, Boolean>(); - while (indexes.next()) - { - Boolean nonUnique = indexes.getBoolean("NON_UNIQUE"); - String name = indexes.getString("INDEX_NAME"); - String col = indexes.getString("COLUMN_NAME"); - if (!index2col.containsKey(name)) - index2col.put(name, new ArrayList<String>()); - index2col.get(name).add(col); - index2unique.put(name, !nonUnique); - } - for (String index: index2col.keySet()) - { - List<String> cols = index2col.get(index); - result.append("CREATE "); - if (index2unique.get(index)) result.append("UNIQUE "); - result.append("INDEX " + index + " ON " + tableName + " ("); - result.append(strjoin(", ", cols.toArray(new String[]{}))); - result.append(")\n"); - } - } - catch (SQLException e) - { - System.err.println("Unable to get indexes for table "+tableName+" because "+e); } - } - } while (rs.next()); - rs.close(); + } while (rs.next()); + } + } return result.toString(); } catch (SQLException e) { http://git-wip-us.apache.org/repos/asf/jena/blob/6ac57719/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/TableUtils.java ---------------------------------------------------------------------- diff --git a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/TableUtils.java b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/TableUtils.java index 9c3547d..72e9a1e 100644 --- a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/TableUtils.java +++ b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/sql/TableUtils.java @@ -43,9 +43,10 @@ public class TableUtils { try { Statement s = conn.createStatement() ; // Not closed - happens when result set closed - ResultSet tableData = s.executeQuery("SELECT * FROM "+tableName) ; - RS.printResultSet(tableData) ; - tableData.close() ; + try ( ResultSet tableData = s.executeQuery("SELECT * FROM "+tableName) ) { + RS.printResultSet(tableData) ; + tableData.close() ; + } } catch (SQLException ex) { throw new SDBExceptionSQL(ex) ; } } @@ -59,18 +60,19 @@ public class TableUtils if (types.length == 0) types = null; // MySQL bug -- doesn't see temporary tables! // Postgres likes lowercase -- I'll try all options - ResultSet tableData = connection.getMetaData().getTables(null, null, table, types); - boolean hasTable = tableData.next(); - tableData.close(); + boolean hasTable = false ; + try ( ResultSet tableData = connection.getMetaData().getTables(null, null, table, types)) { + hasTable = tableData.next(); + } if (!hasTable) { // Try lowercase - tableData = connection.getMetaData().getTables(null, null, table.toLowerCase(), types); - hasTable = tableData.next(); - tableData.close(); + try ( ResultSet tableData = connection.getMetaData().getTables(null, null, table.toLowerCase(), types) ) { + hasTable = tableData.next(); + } } if (!hasTable) { // Try uppercase - tableData = connection.getMetaData().getTables(null, null, table.toUpperCase(), types); - hasTable = tableData.next(); - tableData.close(); + try ( ResultSet tableData = connection.getMetaData().getTables(null, null, table.toUpperCase(), types) ) { + hasTable = tableData.next(); + } } return hasTable; @@ -108,13 +110,11 @@ public class TableUtils /** Get the size of a table (usually called 'Triples') **/ public static long getTableSize(Connection connection, String table) { - long size = -1; - try { - ResultSet res = connection.createStatement().executeQuery("SELECT COUNT(*) FROM " + table); - if (res.next()) - size = res.getLong(1); - res.close(); - } catch (SQLException e) { throw new SDBExceptionSQL(e) ; } + long size = -1; + try ( ResultSet res = connection.createStatement().executeQuery("SELECT COUNT(*) FROM " + table) ) { + if (res.next()) + size = res.getLong(1); + } catch (SQLException e) { throw new SDBExceptionSQL(e) ; } return size; } http://git-wip-us.apache.org/repos/asf/jena/blob/6ac57719/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/util/StoreUtils.java ---------------------------------------------------------------------- diff --git a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/util/StoreUtils.java b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/util/StoreUtils.java index 3a9fa7d..90f31e5 100644 --- a/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/util/StoreUtils.java +++ b/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/util/StoreUtils.java @@ -124,11 +124,10 @@ public class StoreUtils { String qs = "SELECT * { GRAPH "+FmtUtils.stringForNode(graphNode)+" { ?s ?p ?o }} LIMIT 1" ; Dataset ds = SDBFactory.connectDataset(store) ; - QueryExecution qExec = QueryExecutionFactory.create(qs, ds) ; - ResultSet rs = qExec.execSelect() ; - boolean b = rs.hasNext() ; - qExec.close(); - return b ; + try ( QueryExecution qExec = QueryExecutionFactory.create(qs, ds) ) { + ResultSet rs = qExec.execSelect() ; + return rs.hasNext() ; + } } /** @@ -183,18 +182,12 @@ public class StoreUtils } private static boolean hasColumns(Connection conn, String tableName, Collection<String> colNames) throws SQLException { - java.sql.ResultSet res = null; - try { - res = conn.getMetaData().getColumns(null, null, tableName, null); + try ( java.sql.ResultSet res = conn.getMetaData().getColumns(null, null, tableName, null) ) { while (res.next()) { String colName = res.getString("COLUMN_NAME"); colNames.remove(colName.toLowerCase()); } return colNames.isEmpty(); - } finally { - if (res != null) { - res.close(); - } } } } http://git-wip-us.apache.org/repos/asf/jena/blob/6ac57719/jena-sdb/src/main/java/sdb/sdbquery.java ---------------------------------------------------------------------- diff --git a/jena-sdb/src/main/java/sdb/sdbquery.java b/jena-sdb/src/main/java/sdb/sdbquery.java index 4c0e459..13e488f 100644 --- a/jena-sdb/src/main/java/sdb/sdbquery.java +++ b/jena-sdb/src/main/java/sdb/sdbquery.java @@ -143,15 +143,14 @@ public class sdbquery extends CmdArgsDB // } Query query = modQuery.getQuery() ; - QueryExecution qExec = QueryExecutionFactory.create(query, getModStore().getDataset()) ; - - if ( isVerbose() ) - PrintSDB.print(((QueryExecutionBase)qExec).getPlan().getOp()) ; - - if ( false ) - System.err.println("Execute query for loop "+(i+1)+" "+memStr()) ; - QueryExecUtils.executeQuery(query, qExec, modResults.getResultsFormat()) ; - qExec.close() ; + try ( QueryExecution qExec = QueryExecutionFactory.create(query, getModStore().getDataset()) ) { + if ( isVerbose() ) + PrintSDB.print(((QueryExecutionBase)qExec).getPlan().getOp()) ; + + if ( false ) + System.err.println("Execute query for loop "+(i+1)+" "+memStr()) ; + QueryExecUtils.executeQuery(query, qExec, modResults.getResultsFormat()) ; + } } long queryTime = getModTime().endTimer() ; totalTime = queryTime ; http://git-wip-us.apache.org/repos/asf/jena/blob/6ac57719/jena-sdb/src/test/java/com/hp/hpl/jena/sdb/test/junit/QueryTestSDB.java ---------------------------------------------------------------------- diff --git a/jena-sdb/src/test/java/com/hp/hpl/jena/sdb/test/junit/QueryTestSDB.java b/jena-sdb/src/test/java/com/hp/hpl/jena/sdb/test/junit/QueryTestSDB.java index f1bd4bc..4be421d 100644 --- a/jena-sdb/src/test/java/com/hp/hpl/jena/sdb/test/junit/QueryTestSDB.java +++ b/jena-sdb/src/test/java/com/hp/hpl/jena/sdb/test/junit/QueryTestSDB.java @@ -179,9 +179,9 @@ public class QueryTestSDB extends EarlTestCase else { QueryEngineFactory f = QueryEngineRef.getFactory() ; - QueryExecution qExec1 = new QueryExecutionBase(query, ds, null, f) ; - rs1 = ResultSetFactory.makeRewindable(qExec1.execSelect()) ; - qExec1.close() ; + try ( QueryExecution qExec1 = new QueryExecutionBase(query, ds, null, f) ) { + rs1 = ResultSetFactory.makeRewindable(qExec1.execSelect()) ; + } expectedLabel = "Standard engine" ; } http://git-wip-us.apache.org/repos/asf/jena/blob/6ac57719/jena-sdb/src/test/java/com/hp/hpl/jena/sdb/test/junit/StoreList.java ---------------------------------------------------------------------- diff --git a/jena-sdb/src/test/java/com/hp/hpl/jena/sdb/test/junit/StoreList.java b/jena-sdb/src/test/java/com/hp/hpl/jena/sdb/test/junit/StoreList.java index 551be12..f49db29 100644 --- a/jena-sdb/src/test/java/com/hp/hpl/jena/sdb/test/junit/StoreList.java +++ b/jena-sdb/src/test/java/com/hp/hpl/jena/sdb/test/junit/StoreList.java @@ -122,8 +122,7 @@ public class StoreList Model model = FileManager.get().loadModel(fn) ; List<Pair<String, String>> data = new ArrayList<Pair<String, String>>(); Query query = QueryFactory.create(queryString) ; - QueryExecution qExec = QueryExecutionFactory.create(query, model) ; - try { + try ( QueryExecution qExec = QueryExecutionFactory.create(query, model) ) { ResultSet rs = qExec.execSelect() ; for ( ; rs.hasNext() ; ) @@ -133,7 +132,7 @@ public class StoreList String desc = qs.getResource("desc").getURI() ; data.add(new Pair<String, String>(label, desc)) ; } - } finally { qExec.close() ; } + } return data ; } } http://git-wip-us.apache.org/repos/asf/jena/blob/6ac57719/jena-sdb/src/test/java/sdb/test/TestDB.java ---------------------------------------------------------------------- diff --git a/jena-sdb/src/test/java/sdb/test/TestDB.java b/jena-sdb/src/test/java/sdb/test/TestDB.java index 61f95de..7310d85 100644 --- a/jena-sdb/src/test/java/sdb/test/TestDB.java +++ b/jena-sdb/src/test/java/sdb/test/TestDB.java @@ -52,15 +52,11 @@ public class TestDB protected void exec(String sql, Object... args) throws SQLException { sql = sqlFormat(sql, args) ; - Statement stmt = null ; - try { - stmt = jdbc.createStatement() ; + try ( Statement stmt = jdbc.createStatement() ) { if ( verbose ) System.out.println(sql) ; stmt.execute(sql) ; - } finally { - if ( stmt != null ) stmt.close() ; - } + } } protected ResultSet execQuery(String sql, Object... args) throws SQLException http://git-wip-us.apache.org/repos/asf/jena/blob/6ac57719/jena-sdb/src/test/java/sdb/test/TestStringBase.java ---------------------------------------------------------------------- diff --git a/jena-sdb/src/test/java/sdb/test/TestStringBase.java b/jena-sdb/src/test/java/sdb/test/TestStringBase.java index c49c647..2cb693e 100644 --- a/jena-sdb/src/test/java/sdb/test/TestStringBase.java +++ b/jena-sdb/src/test/java/sdb/test/TestStringBase.java @@ -88,35 +88,32 @@ public class TestStringBase extends TestDB catch (SQLException ex) { throw ex ; } ps.close() ; - - ResultSet rs = execQuery("SELECT %s FROM %s ", colName, tempTableName ) ; - rs.next() ; - // In Oracle an empty string is a NULL. This is not ANSI compliant. - - String s = rs.getString(1) ; - if ( s == null ) - s = "" ; - byte[] b = rs.getBytes(1) ; - -// boolean wasNull = rs.wasNull() ; -// if ( testString != null && wasNull ) -// fail(testLabel+" : Got null back") ; - - rs.close() ; - - if ( ! testString.equals(s) ) // Debug point - { - for ( int i = 0 ; i < s.length() ; i++ ) + try (ResultSet rs = execQuery("SELECT %s FROM %s ", colName, tempTableName )) { + rs.next() ; + // In Oracle an empty string is a NULL. This is not ANSI compliant. + + String s = rs.getString(1) ; + if ( s == null ) + s = "" ; + byte[] b = rs.getBytes(1) ; + + // boolean wasNull = rs.wasNull() ; + // if ( testString != null && wasNull ) + // fail(testLabel+" : Got null back") ; + if ( ! testString.equals(s) ) // Debug point { - System.out.printf("%x:%x ", (int)testString.charAt(i), (int)s.charAt(i)) ; + for ( int i = 0 ; i < s.length() ; i++ ) + { + System.out.printf("%x:%x ", (int)testString.charAt(i), (int)s.charAt(i)) ; + } + System.out.println() ; + String $ = s ; // Pointless } - System.out.println() ; - String $ = s ; // Pointless + + assertEquals(testLabel+" : "+label, testString, s) ; + //System.out.println("Passed: "+label) ; } - - assertEquals(testLabel+" : "+label, testString, s) ; - //System.out.println("Passed: "+label) ; } private void runBytesTest(String label, String testString, String colName, String colType) throws Exception @@ -138,25 +135,25 @@ public class TestStringBase extends TestDB { throw ex ; } ps.close() ; - ResultSet rs = execQuery("SELECT %s FROM %s ", colName, tempTableName ) ; - rs.next() ; - byte[]b = rs.getBytes(1) ; - -// boolean wasNull = rs.wasNull() ; -// if ( testString != null && wasNull ) -// fail(testLabel+": got an SQL null back") ; + try ( ResultSet rs = execQuery("SELECT %s FROM %s ", colName, tempTableName ) ) { + rs.next() ; + byte[]b = rs.getBytes(1) ; + + // boolean wasNull = rs.wasNull() ; + // if ( testString != null && wasNull ) + // fail(testLabel+": got an SQL null back") ; // In Oracle, an empty binary is a NULL. This is not ANSI compliant. - String s = "" ; - if ( b != null ) - s = bytesToString(b) ; - rs.close() ; - if ( ! testString.equals(s) ) // Debug point - { - String $ = s ; // Pointless - } - assertEquals(testLabel+" : "+label, testString, s) ; - //System.out.println("Passed: "+label) ; + String s = "" ; + if ( b != null ) + s = bytesToString(b) ; + if ( ! testString.equals(s) ) // Debug point + { + String $ = s ; // Pointless + } + assertEquals(testLabel+" : "+label, testString, s) ; + //System.out.println("Passed: "+label) ; + } } // String(byte[], Charset) and .getBytes(Charset) are Java6-isms.
