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/06/06 01:13:37 UTC

svn commit: r1490071 - in /jena/Experimental/jena-jdbc: jena-jdbc-core/src/main/java/org/apache/jena/jdbc/connections/ jena-jdbc-core/src/test/java/org/apache/jena/jdbc/connections/ jena-jdbc-driver-remote/src/main/java/org/apache/jena/jdbc/remote/conn...

Author: rvesse
Date: Wed Jun  5 23:13:36 2013
New Revision: 1490071

URL: http://svn.apache.org/r1490071
Log:
More connection tests and some minor bug fixes

Modified:
    jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/connections/DatasetConnection.java
    jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/connections/AbstractJenaConnectionTests.java
    jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/main/java/org/apache/jena/jdbc/remote/connections/RemoteEndpointConnection.java

Modified: jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/connections/DatasetConnection.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/connections/DatasetConnection.java?rev=1490071&r1=1490070&r2=1490071&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/connections/DatasetConnection.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/connections/DatasetConnection.java Wed Jun  5 23:13:36 2013
@@ -20,6 +20,8 @@ package org.apache.jena.jdbc.connections
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+
 import org.apache.jena.jdbc.JdbcCompatibility;
 import org.apache.jena.jdbc.statements.DatasetPreparedStatement;
 import org.apache.jena.jdbc.statements.DatasetStatement;
@@ -89,9 +91,9 @@ public abstract class DatasetConnection 
     protected JenaStatement createStatementInternal(int resultSetType, int resultSetConcurrency, int resultSetHoldability)
             throws SQLException {
         if (resultSetType == ResultSet.TYPE_SCROLL_SENSITIVE)
-            throw new SQLException("Dataset backed connections do not support scroll sensitive result sets");
+            throw new SQLFeatureNotSupportedException("Dataset backed connections do not support scroll sensitive result sets");
         if (resultSetConcurrency != ResultSet.CONCUR_READ_ONLY)
-            throw new SQLException("Dataset backed connections only supports read-only result sets");
+            throw new SQLFeatureNotSupportedException("Dataset backed connections only supports read-only result sets");
         return new DatasetStatement(this, resultSetType, ResultSet.FETCH_FORWARD, 0, resultSetHoldability, this.getAutoCommit(),
                 this.getTransactionIsolation());
     }
@@ -100,9 +102,9 @@ public abstract class DatasetConnection 
     protected JenaPreparedStatement createPreparedStatementInternal(String sparql, int resultSetType, int resultSetConcurrency,
             int resultSetHoldability) throws SQLException {
         if (resultSetType == ResultSet.TYPE_SCROLL_SENSITIVE)
-            throw new SQLException("Dataset backed connections do not support scroll sensitive result sets");
+            throw new SQLFeatureNotSupportedException("Dataset backed connections do not support scroll sensitive result sets");
         if (resultSetConcurrency != ResultSet.CONCUR_READ_ONLY)
-            throw new SQLException("Dataset backed connections only supports read-only result sets");
+            throw new SQLFeatureNotSupportedException("Dataset backed connections only supports read-only result sets");
         return new DatasetPreparedStatement(sparql, this, resultSetType, ResultSet.FETCH_FORWARD, 0, resultSetHoldability,
                 this.getAutoCommit(), this.getTransactionIsolation());
     }

Modified: jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/connections/AbstractJenaConnectionTests.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/connections/AbstractJenaConnectionTests.java?rev=1490071&r1=1490070&r2=1490071&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/connections/AbstractJenaConnectionTests.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/connections/AbstractJenaConnectionTests.java Wed Jun  5 23:13:36 2013
@@ -1353,7 +1353,8 @@ public abstract class AbstractJenaConnec
 
     /**
      * Tests error cases for transactions
-     * @throws SQLException 
+     * 
+     * @throws SQLException
      */
     @Test(expected = SQLException.class)
     public void connection_transaction_bad_01() throws SQLException {
@@ -1364,10 +1365,11 @@ public abstract class AbstractJenaConnec
         // error
         conn.commit();
     }
-    
+
     /**
      * Tests error cases for transactions
-     * @throws SQLException 
+     * 
+     * @throws SQLException
      */
     @Test(expected = SQLException.class)
     public void connection_transaction_bad_02() throws SQLException {
@@ -1426,7 +1428,7 @@ public abstract class AbstractJenaConnec
      * 
      * @throws SQLException
      */
-    @Test(expected = SQLException.class)
+    @Test(expected = SQLFeatureNotSupportedException.class)
     public void connection_statement_bad_creation_04() throws SQLException {
         JenaConnection conn = this.getConnection();
 
@@ -1443,7 +1445,7 @@ public abstract class AbstractJenaConnec
      * 
      * @throws SQLException
      */
-    @Test(expected = SQLException.class)
+    @Test(expected = SQLFeatureNotSupportedException.class)
     public void connection_statement_bad_creation_05() throws SQLException {
         JenaConnection conn = this.getConnection();
 
@@ -1541,6 +1543,40 @@ public abstract class AbstractJenaConnec
     }
 
     /**
+     * Test error cases for creating prepared statements
+     * 
+     * @throws SQLException
+     */
+    @Test(expected = SQLFeatureNotSupportedException.class)
+    public void connection_prepared_statement_bad_creation_07() throws SQLException {
+        JenaConnection conn = this.getConnection();
+
+        try {
+            // Creating a statement with SCROLL_SENSITIVE is not supported
+            conn.prepareStatement("SELECT * WHERE { ?s ?p ?o }", ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
+        } finally {
+            conn.close();
+        }
+    }
+
+    /**
+     * Test error cases for creating prepared statements
+     * 
+     * @throws SQLException
+     */
+    @Test(expected = SQLFeatureNotSupportedException.class)
+    public void connection_prepared_statement_bad_creation_08() throws SQLException {
+        JenaConnection conn = this.getConnection();
+
+        try {
+            // Creating a statement with CONCUR_UPDATABLE is not supported
+            conn.prepareStatement("SELECT * WHERE { ?s ?p ?o }", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
+        } finally {
+            conn.close();
+        }
+    }
+
+    /**
      * Runs a batch of operations and checks the results results
      * 
      * @throws SQLException
@@ -2033,7 +2069,7 @@ public abstract class AbstractJenaConnec
             conn.close();
         }
     }
-    
+
     /**
      * Tests error cases around type maps which are unsupported
      * 
@@ -2113,27 +2149,28 @@ public abstract class AbstractJenaConnec
             conn.close();
         }
     }
-    
+
     /**
      * Tests usage of client info
+     * 
      * @throws SQLException
      */
     @Test
     public void connection_client_info_01() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         // Check initially empty
         Properties ps = conn.getClientInfo();
         Assert.assertNotNull(ps);
         Assert.assertEquals(0, ps.size());
-        
+
         // Add a value and check it
         conn.setClientInfo("key", "value");
         ps = conn.getClientInfo();
         Assert.assertNotNull(ps);
         Assert.assertEquals(1, ps.size());
         Assert.assertEquals("value", conn.getClientInfo("key"));
-        
+
         // Replace values with a new set and check
         Properties props = new Properties();
         props.put("a", 1);
@@ -2142,179 +2179,190 @@ public abstract class AbstractJenaConnec
         ps = conn.getClientInfo();
         Assert.assertNotNull(ps);
         Assert.assertEquals(2, ps.size());
-        
+
         conn.close();
     }
-    
+
     /**
      * Tests usage of client info
+     * 
      * @throws SQLException
      */
     @Test
     public void connection_client_info_02() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         // Add and retrieve a key
         conn.setClientInfo("key", "value");
         String value = conn.getClientInfo("key");
         Assert.assertEquals("value", value);
-        
+
         // Non-existent key should give null
         Assert.assertNull(conn.getClientInfo("test"));
-     
+
         conn.close();
     }
-    
+
     /**
      * Check catalog retrieval
+     * 
      * @throws SQLException
      */
     @Test
     public void connection_catalog_01() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         Assert.assertNotNull(conn.getCatalog());
-        
+
         conn.close();
     }
-    
+
     /**
      * Check warnings usage
+     * 
      * @throws SQLException
      */
     @Test
     public void connection_warnings_01() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         Assert.assertNull(conn.getWarnings());
-        
+
         conn.close();
     }
-    
+
     /**
      * Check warnings usage
+     * 
      * @throws SQLException
      */
     @Test
     public void connection_warnings_02() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         Assert.assertNull(conn.getWarnings());
         conn.setWarning("Test");
         Assert.assertNotNull(conn.getWarnings());
         conn.clearWarnings();
         Assert.assertNull(conn.getWarnings());
-        
+
         conn.close();
     }
-    
+
     /**
      * Check warnings usage
+     * 
      * @throws SQLException
      */
     @Test
     public void connection_warnings_03() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         Assert.assertNull(conn.getWarnings());
         conn.setWarning("Test", new Exception());
         Assert.assertNotNull(conn.getWarnings());
         conn.clearWarnings();
         Assert.assertNull(conn.getWarnings());
-        
+
         conn.close();
     }
-    
+
     /**
      * Check warnings usage
+     * 
      * @throws SQLException
      */
     @Test
     public void connection_warnings_04() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         Assert.assertNull(conn.getWarnings());
         conn.setWarning(new SQLWarning());
         Assert.assertNotNull(conn.getWarnings());
         conn.clearWarnings();
         Assert.assertNull(conn.getWarnings());
-        
+
         conn.close();
     }
-    
+
     /**
      * Check warnings usage
+     * 
      * @throws SQLException
      */
     @Test
     public void connection_warnings_05() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         Assert.assertNull(conn.getWarnings());
         conn.setWarning("A");
         Assert.assertNotNull(conn.getWarnings());
         conn.setWarning("B");
         Assert.assertNotNull(conn.getWarnings());
-        Assert.assertNotNull(conn.getWarnings().getCause());
+        Assert.assertNotNull(conn.getWarnings().getNextWarning());
         conn.clearWarnings();
         Assert.assertNull(conn.getWarnings());
-        
+
         conn.close();
     }
-    
+
     /**
      * Tests error cases for unsupported wrapper features
+     * 
      * @throws SQLException
      */
-    @Test(expected=SQLFeatureNotSupportedException.class)
+    @Test(expected = SQLFeatureNotSupportedException.class)
     public void connection_bad_wrapper_01() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         try {
             conn.isWrapperFor(JenaConnection.class);
         } finally {
             conn.close();
         }
     }
-    
+
     /**
      * Tests error cases for unsupported wrapper features
+     * 
      * @throws SQLException
      */
-    @Test(expected=SQLFeatureNotSupportedException.class)
+    @Test(expected = SQLFeatureNotSupportedException.class)
     public void connection_bad_wrapper_02() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         try {
             conn.unwrap(JenaConnection.class);
         } finally {
             conn.close();
         }
     }
-    
+
     /**
      * Tests error cases for unsupported create operations
+     * 
      * @throws SQLException
      */
     @Test(expected = SQLFeatureNotSupportedException.class)
     public void connection_bad_create_01() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         try {
             conn.createArrayOf("test", new Object[0]);
         } finally {
             conn.close();
         }
     }
-    
+
     /**
      * Tests error cases for unsupported create operations
+     * 
      * @throws SQLException
      */
     @Test(expected = SQLFeatureNotSupportedException.class)
     public void connection_bad_create_02() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         try {
             conn.createBlob();
         } finally {
@@ -2324,61 +2372,108 @@ public abstract class AbstractJenaConnec
 
     /**
      * Tests error cases for unsupported create operations
+     * 
      * @throws SQLException
      */
     @Test(expected = SQLFeatureNotSupportedException.class)
     public void connection_bad_create_03() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         try {
             conn.createClob();
         } finally {
             conn.close();
         }
     }
-    
+
     /**
      * Tests error cases for unsupported create operations
+     * 
      * @throws SQLException
      */
     @Test(expected = SQLFeatureNotSupportedException.class)
     public void connection_bad_create_04() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         try {
             conn.createNClob();
         } finally {
             conn.close();
         }
     }
-    
+
     /**
      * Tests error cases for unsupported create operations
+     * 
      * @throws SQLException
      */
     @Test(expected = SQLFeatureNotSupportedException.class)
     public void connection_bad_create_05() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         try {
             conn.createSQLXML();
         } finally {
             conn.close();
         }
     }
-    
+
     /**
      * Tests error cases for unsupported create operations
+     * 
      * @throws SQLException
      */
     @Test(expected = SQLFeatureNotSupportedException.class)
     public void connection_bad_create_06() throws SQLException {
         JenaConnection conn = this.getConnection();
-        
+
         try {
             conn.createStruct("test", new Object[0]);
         } finally {
             conn.close();
         }
     }
+
+    /**
+     * Tests connection validity
+     * 
+     * @throws SQLException
+     */
+    @Test
+    public void connection_validity_01() throws SQLException {
+        JenaConnection conn = this.getConnection();
+
+        Assert.assertTrue(conn.isValid(0));
+        conn.close();
+        Assert.assertFalse(conn.isValid(0));
+    }
+
+    /**
+     * Tests read only settings
+     * 
+     * @throws SQLException
+     */
+    @Test
+    public void connection_read_only_01() throws SQLException {
+        JenaConnection conn = this.getConnection();
+
+        Assert.assertFalse(conn.isReadOnly());
+        conn.setReadOnly(true);
+        Assert.assertTrue(conn.isReadOnly());
+        conn.close();
+    }
+
+    /**
+     * Tests read only settings
+     * 
+     * @throws SQLException
+     */
+    @Test(expected = SQLException.class)
+    public void connection_read_only_02() throws SQLException {
+        JenaConnection conn = this.getConnection();
+        conn.close();
+
+        // Error to set on a closed connection
+        conn.setReadOnly(true);
+    }
 }

Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/main/java/org/apache/jena/jdbc/remote/connections/RemoteEndpointConnection.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/main/java/org/apache/jena/jdbc/remote/connections/RemoteEndpointConnection.java?rev=1490071&r1=1490070&r2=1490071&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/main/java/org/apache/jena/jdbc/remote/connections/RemoteEndpointConnection.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/main/java/org/apache/jena/jdbc/remote/connections/RemoteEndpointConnection.java Wed Jun  5 23:13:36 2013
@@ -210,9 +210,9 @@ public class RemoteEndpointConnection ex
         if (this.isClosed())
             throw new SQLException("Cannot create a statement after the connection was closed");
         if (resultSetType == ResultSet.TYPE_SCROLL_SENSITIVE)
-            throw new SQLException("Remote endpoint backed connection do not support scroll sensitive result sets");
+            throw new SQLFeatureNotSupportedException("Remote endpoint backed connection do not support scroll sensitive result sets");
         if (resultSetConcurrency != ResultSet.CONCUR_READ_ONLY)
-            throw new SQLException("Remote endpoint backed connections only support read-only result sets");
+            throw new SQLFeatureNotSupportedException("Remote endpoint backed connections only support read-only result sets");
         return new RemoteEndpointStatement(this, this.username, this.password, resultSetType, ResultSet.FETCH_FORWARD, 0,
                 resultSetHoldability);
     }
@@ -223,9 +223,9 @@ public class RemoteEndpointConnection ex
         if (this.isClosed())
             throw new SQLException("Cannot create a statement after the connection was closed");
         if (resultSetType == ResultSet.TYPE_SCROLL_SENSITIVE)
-            throw new SQLException("Remote endpoint backed connection do not support scroll sensitive result sets");
+            throw new SQLFeatureNotSupportedException("Remote endpoint backed connection do not support scroll sensitive result sets");
         if (resultSetConcurrency != ResultSet.CONCUR_READ_ONLY)
-            throw new SQLException("Remote endpoint backed connections only support read-only result sets");
+            throw new SQLFeatureNotSupportedException("Remote endpoint backed connections only support read-only result sets");
         return new RemoteEndpointPreparedStatement(sparql, this, this.username, this.password, resultSetType,
                 ResultSet.FETCH_FORWARD, 0, resultSetHoldability);
     }