You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by rv...@apache.org on 2013/05/02 01:53:58 UTC

svn commit: r1478236 - in /jena/Experimental/jena-jdbc: jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/ jena-jdbc-core/src/test/java/org/apache/jena/jdbc/results/ jena-jdbc-driver-mem/src/test/java/org/apache/jena/jdbc/mem/results/ jena-jdbc...

Author: rvesse
Date: Wed May  1 23:53:58 2013
New Revision: 1478236

URL: http://svn.apache.org/r1478236
Log:
Start expanding result set manipulation tests, fix a piece of incorrectly reported metadata

Modified:
    jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/StreamedResults.java
    jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/results/AbstractResultSetTests.java
    jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/test/java/org/apache/jena/jdbc/mem/results/AbstractMemResultSetTests.java
    jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResults.java
    jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithGraphUris.java
    jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/AbstractTdbResultSetTests.java

Modified: jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/StreamedResults.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/StreamedResults.java?rev=1478236&r1=1478235&r2=1478236&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/StreamedResults.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/StreamedResults.java Wed May  1 23:53:58 2013
@@ -36,7 +36,6 @@ import com.hp.hpl.jena.query.QueryExecut
 public abstract class StreamedResults<T> extends QueryExecutionResults {
 
     private T currItem;
-    private boolean started = false;
     private boolean finished = false;
     private int currRow = 0;
 
@@ -146,7 +145,7 @@ public abstract class StreamedResults<T>
         if (this.isClosed())
             throw new SQLException("Result Set is closed");
         // If we've started throw an error as we can't move backwards
-        if (started)
+        if (this.currRow > 0)
             throw new SQLException(
                     "Jena JDBC result sets are forward only, can't move to before the start of the result set after navigation through the result set has begun");
         // Otherwise OK
@@ -166,7 +165,7 @@ public abstract class StreamedResults<T>
     public final boolean first() throws SQLException {
         if (this.isClosed())
             throw new SQLException("Result Set is closed");
-        if (this.started && this.currRow == 1)
+        if (this.currRow == 1)
             return true;
         throw new SQLException(
                 "Jena JDBC result sets are forward only, can't move backwards to the first row after the first row has been passed");
@@ -205,7 +204,7 @@ public abstract class StreamedResults<T>
     public final boolean isBeforeFirst() throws SQLException {
         if (this.isClosed())
             throw new SQLException("Result Set is closed");
-        return !this.started;
+        return this.currRow == 0;
     }
 
     @Override

Modified: jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/results/AbstractResultSetTests.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/results/AbstractResultSetTests.java?rev=1478236&r1=1478235&r2=1478236&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/results/AbstractResultSetTests.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/results/AbstractResultSetTests.java Wed May  1 23:53:58 2013
@@ -123,6 +123,8 @@ public abstract class AbstractResultSetT
 
     protected abstract ResultSet createResults(Dataset ds, String query) throws SQLException;
 
+    protected abstract ResultSet createResults(Dataset ds, String query, int resultSetType) throws SQLException;
+
     protected String getIntegerTypeUri() {
         return XSD.xint.toString();
     }
@@ -815,4 +817,88 @@ public abstract class AbstractResultSetT
         rset.close();
         Assert.assertTrue(rset.isClosed());
     }
+
+    /**
+     * Tests movement through SELECT results
+     * 
+     * @throws SQLException
+     */
+    @Test
+    public void test_results_select_movement_01() throws SQLException {
+        ResultSet rset = this.createResults(ds, "SELECT * { ?s ?p ?o . } LIMIT 1", ResultSet.TYPE_FORWARD_ONLY);
+        Assert.assertEquals(ResultSet.TYPE_FORWARD_ONLY, rset.getType());
+        Assert.assertNotNull(rset);
+        Assert.assertFalse(rset.isClosed());
+        Assert.assertTrue(rset.isBeforeFirst());
+        Assert.assertFalse(rset.isLast());
+
+        // Expect exactly one row we can move to
+        Assert.assertTrue(rset.next());
+        Assert.assertFalse(rset.isAfterLast());
+        Assert.assertTrue(rset.isLast());
+        Assert.assertFalse(rset.next());
+
+        Assert.assertTrue(rset.isAfterLast());
+        rset.close();
+        Assert.assertTrue(rset.isClosed());
+    }
+
+    /**
+     * Tests movement through SELECT results
+     * 
+     * @throws SQLException
+     */
+    @Test
+    public void test_results_select_movement_02() throws SQLException {
+        ResultSet rset = this.createResults(ds, "SELECT * { ?s ?p ?o . } LIMIT 1", ResultSet.TYPE_FORWARD_ONLY);
+        Assert.assertEquals(ResultSet.TYPE_FORWARD_ONLY, rset.getType());
+        Assert.assertNotNull(rset);
+        Assert.assertFalse(rset.isClosed());
+        Assert.assertTrue(rset.isBeforeFirst());
+        Assert.assertFalse(rset.isLast());
+        
+        // Expect exactly one row we can move to
+        Assert.assertTrue(rset.next());
+        Assert.assertFalse(rset.isAfterLast());
+        Assert.assertTrue(rset.isLast());
+        Assert.assertFalse(rset.next());
+
+        // Attempting to move backwards in a forwards only result set should result in an error
+        try {
+            rset.beforeFirst();
+            Assert.fail("Should not be permitted to move backwards in a FORWARD_ONLY result set");
+        } catch (SQLException e) {
+            // Expected
+        } finally {
+
+            Assert.assertTrue(rset.isAfterLast());
+            rset.close();
+            Assert.assertTrue(rset.isClosed());
+        }
+    }
+    
+    /**
+     * Tests movement through SELECT results
+     * 
+     * @throws SQLException
+     */
+    @Test
+    public void test_results_select_movement_04() throws SQLException {
+        ResultSet rset = this.createResults(ds, "SELECT * { ?s ?p ?o . } LIMIT 1", ResultSet.TYPE_FORWARD_ONLY);
+        Assert.assertEquals(ResultSet.TYPE_FORWARD_ONLY, rset.getType());
+        Assert.assertNotNull(rset);
+        Assert.assertFalse(rset.isClosed());
+        Assert.assertTrue(rset.isBeforeFirst());
+        Assert.assertFalse(rset.isLast());
+
+        // Can move forwards to last row
+        Assert.assertTrue(rset.last());
+        Assert.assertFalse(rset.isAfterLast());
+        Assert.assertTrue(rset.isLast());
+        Assert.assertFalse(rset.next());
+
+        Assert.assertTrue(rset.isAfterLast());
+        rset.close();
+        Assert.assertTrue(rset.isClosed());
+    }
 }

Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/test/java/org/apache/jena/jdbc/mem/results/AbstractMemResultSetTests.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/test/java/org/apache/jena/jdbc/mem/results/AbstractMemResultSetTests.java?rev=1478236&r1=1478235&r2=1478236&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/test/java/org/apache/jena/jdbc/mem/results/AbstractMemResultSetTests.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/test/java/org/apache/jena/jdbc/mem/results/AbstractMemResultSetTests.java Wed May  1 23:53:58 2013
@@ -67,8 +67,13 @@ public abstract class AbstractMemResultS
     
     @Override
     protected final ResultSet createResults(Dataset ds, String query) throws SQLException {
+        return createResults(ds, query, ResultSet.TYPE_FORWARD_ONLY);
+    }
+    
+    @Override
+    protected final ResultSet createResults(Dataset ds, String query, int resultSetType) throws SQLException {
         connection.setJenaDataset(this.prepareDataset(ds));
-        Statement stmt = connection.createStatement();
+        Statement stmt = connection.createStatement(resultSetType, ResultSet.CONCUR_READ_ONLY);
         return stmt.executeQuery(query);
     }
 }
\ No newline at end of file

Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResults.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResults.java?rev=1478236&r1=1478235&r2=1478236&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResults.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResults.java Wed May  1 23:53:58 2013
@@ -75,8 +75,13 @@ public class TestRemoteEndpointResults e
 
     @Override
     protected ResultSet createResults(Dataset ds, String query) throws SQLException {
+        return createResults(ds, query, ResultSet.TYPE_FORWARD_ONLY);
+    }
+    
+    @Override
+    protected ResultSet createResults(Dataset ds, String query, int resultSetType) throws SQLException {
         TestUtils.copyToRemoteDataset(ds, BaseServerTest.serviceREST);
-        Statement stmt = connection.createStatement();
+        Statement stmt = connection.createStatement(resultSetType, ResultSet.CONCUR_READ_ONLY);
         return stmt.executeQuery(query);
     }
 }

Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithGraphUris.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithGraphUris.java?rev=1478236&r1=1478235&r2=1478236&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithGraphUris.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/results/TestRemoteEndpointResultsWithGraphUris.java Wed May  1 23:53:58 2013
@@ -85,9 +85,16 @@ public class TestRemoteEndpointResultsWi
 
     @Override
     protected ResultSet createResults(Dataset ds, String query) throws SQLException {
+        return createResults(ds, query, ResultSet.TYPE_FORWARD_ONLY);
+    }
+    
+    @Override
+    protected ResultSet createResults(Dataset ds, String query, int resultSetType) throws SQLException {
         ds = TestUtils.renameGraph(ds, null, DEFAULT_GRAPH_URI);
         TestUtils.copyToRemoteDataset(ds, BaseServerTest.serviceREST);
-        Statement stmt = connection.createStatement();
+        Statement stmt = connection.createStatement(resultSetType, ResultSet.CONCUR_READ_ONLY);
         return stmt.executeQuery(query);
     }
+    
+
 }

Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/AbstractTdbResultSetTests.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/AbstractTdbResultSetTests.java?rev=1478236&r1=1478235&r2=1478236&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/AbstractTdbResultSetTests.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/AbstractTdbResultSetTests.java Wed May  1 23:53:58 2013
@@ -68,8 +68,13 @@ public abstract class AbstractTdbResultS
     
     @Override
     protected final ResultSet createResults(Dataset ds, String query) throws SQLException {
+        return createResults(ds, query, ResultSet.TYPE_FORWARD_ONLY);
+    }
+    
+    @Override
+    protected final ResultSet createResults(Dataset ds, String query, int resultSetType) throws SQLException {
         connection.setJenaDataset(this.prepareDataset(ds));
-        Statement stmt = connection.createStatement();
+        Statement stmt = connection.createStatement(resultSetType, ResultSet.CONCUR_READ_ONLY);
         return stmt.executeQuery(query);
     }