This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch past-M2
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit ddefab0610641fa3b9b293984e83f567b6ddc68a
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sun Jun 14 16:59:24 2026 -0400

    Pkgenerator methods should not throw checked exceptions
---
 .../java/org/apache/cayenne/dba/JdbcPkGenerator.java   | 18 ++++++++++--------
 .../main/java/org/apache/cayenne/dba/PkGenerator.java  |  8 ++++----
 .../cayenne/dba/frontbase/FrontBasePkGenerator.java    |  6 +++---
 .../org/apache/cayenne/dba/mysql/MySQLPkGenerator.java |  5 +++--
 .../apache/cayenne/dba/oracle/OraclePkGenerator.java   | 12 ++++++++----
 .../cayenne/dba/sqlserver/SQLServerPkGenerator.java    |  6 ++++--
 .../apache/cayenne/dba/sybase/SybasePkGenerator.java   |  9 ++++++---
 7 files changed, 38 insertions(+), 26 deletions(-)

diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/JdbcPkGenerator.java 
b/cayenne/src/main/java/org/apache/cayenne/dba/JdbcPkGenerator.java
index 9e15df372..39779ebcd 100644
--- a/cayenne/src/main/java/org/apache/cayenne/dba/JdbcPkGenerator.java
+++ b/cayenne/src/main/java/org/apache/cayenne/dba/JdbcPkGenerator.java
@@ -75,7 +75,7 @@ public class JdbcPkGenerator implements PkGenerator {
         return this.adapter;
     }
 
-    public void createAutoPk(DataNode node, List<DbEntity> dbEntities) throws 
Exception {
+    public void createAutoPk(DataNode node, List<DbEntity> dbEntities) {
         // check if a table exists
 
         // create AUTO_PK_SUPPORT table
@@ -110,7 +110,7 @@ public class JdbcPkGenerator implements PkGenerator {
     /**
      * Drops table named "AUTO_PK_SUPPORT" if it exists in the database.
      */
-    public void dropAutoPk(DataNode node, List<DbEntity> dbEntities) throws 
Exception {
+    public void dropAutoPk(DataNode node, List<DbEntity> dbEntities) {
         if (autoPkTableExists(node)) {
             runUpdate(node, dropAutoPkString());
         }
@@ -161,34 +161,36 @@ public class JdbcPkGenerator implements PkGenerator {
     /**
      * Checks if AUTO_PK_TABLE already exists in the database.
      */
-    protected boolean autoPkTableExists(DataNode node) throws SQLException {
+    protected boolean autoPkTableExists(DataNode node) {
 
         try (Connection con = node.getDataSource().getConnection()) {
             DatabaseMetaData md = con.getMetaData();
             try (ResultSet tables = md.getTables(null, null, 
"AUTO_PK_SUPPORT", null)) {
                 return tables.next();
             }
+        } catch (SQLException e) {
+            throw new CayenneRuntimeException("Error checking for 
AUTO_PK_SUPPORT table", e);
         }
     }
 
     /**
      * Runs JDBC update over a Connection obtained from DataNode. Returns a
      * number of objects returned from update.
-     *
-     * @throws SQLException in case of query failure.
      */
-    public int runUpdate(DataNode node, String sql) throws SQLException {
+    public int runUpdate(DataNode node, String sql) {
         adapter.getJdbcEventLogger().log(sql);
 
         try (Connection con = node.getDataSource().getConnection()) {
             try (Statement upd = con.createStatement()) {
                 return upd.executeUpdate(sql);
             }
+        } catch (SQLException e) {
+            throw new CayenneRuntimeException("Error executing PK update: %s", 
e, sql);
         }
     }
 
     @Override
-    public Object generatePk(DataNode node, DbAttribute pk, Class<?> javaType) 
throws Exception {
+    public Object generatePk(DataNode node, DbAttribute pk, Class<?> javaType) 
{
 
         DbEntity entity = pk.getEntity();
 
@@ -268,7 +270,7 @@ public class JdbcPkGenerator implements PkGenerator {
      *
      * @since 3.0
      */
-    protected long longPkFromDatabase(DataNode node, DbEntity entity) throws 
Exception {
+    protected long longPkFromDatabase(DataNode node, DbEntity entity) {
         String select = "SELECT #result('NEXT_ID' 'long' 'NEXT_ID') FROM 
AUTO_PK_SUPPORT "
                 + "WHERE TABLE_NAME = '" + entity.getName() + '\'';
 
diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/PkGenerator.java 
b/cayenne/src/main/java/org/apache/cayenne/dba/PkGenerator.java
index a7a79222f..761435f05 100644
--- a/cayenne/src/main/java/org/apache/cayenne/dba/PkGenerator.java
+++ b/cayenne/src/main/java/org/apache/cayenne/dba/PkGenerator.java
@@ -38,7 +38,7 @@ public interface PkGenerator {
      * @param dbEntities a list of entities that require primary key 
auto-generation
      *                   support
      */
-    void createAutoPk(DataNode node, List<DbEntity> dbEntities) throws 
Exception;
+    void createAutoPk(DataNode node, List<DbEntity> dbEntities);
 
     /**
      * Returns a list of SQL strings needed to generates database objects to 
provide
@@ -55,7 +55,7 @@ public interface PkGenerator {
      * @param dbEntities a list of entities whose primary key auto-generation 
support
      *                   should be dropped.
      */
-    void dropAutoPk(DataNode node, List<DbEntity> dbEntities) throws Exception;
+    void dropAutoPk(DataNode node, List<DbEntity> dbEntities);
 
     /**
      * Returns SQL string needed to drop database objects associated with 
automatic
@@ -69,7 +69,7 @@ public interface PkGenerator {
      * @deprecated unused by the framework that relies on {@link 
#generatePk(DataNode, DbAttribute, Class)}
      */
     @Deprecated(since = "5.0", forRemoval = true)
-    default Object generatePk(DataNode dataNode, DbAttribute pk) throws 
Exception {
+    default Object generatePk(DataNode dataNode, DbAttribute pk) {
         return generatePk(dataNode, pk, null);
     }
 
@@ -78,7 +78,7 @@ public interface PkGenerator {
      *
      * @since 5.0
      */
-    Object generatePk(DataNode dataNode, DbAttribute pk, Class<?> javaType) 
throws Exception;
+    Object generatePk(DataNode dataNode, DbAttribute pk, Class<?> javaType);
 
     /**
      * Install the adapter associated with current PkGenerator
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/dba/frontbase/FrontBasePkGenerator.java
 
b/cayenne/src/main/java/org/apache/cayenne/dba/frontbase/FrontBasePkGenerator.java
index 6494935d1..4686f3b83 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/dba/frontbase/FrontBasePkGenerator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/dba/frontbase/FrontBasePkGenerator.java
@@ -61,7 +61,7 @@ public class FrontBasePkGenerator extends JdbcPkGenerator {
     }
 
     @Override
-    public void createAutoPk(DataNode node, List<DbEntity> dbEntities) throws 
Exception {
+    public void createAutoPk(DataNode node, List<DbEntity> dbEntities) {
         // For each entity (re)set the unique counter
         for (DbEntity entity : dbEntities) {
             runUpdate(node, pkCreateString(entity.getName()));
@@ -78,7 +78,7 @@ public class FrontBasePkGenerator extends JdbcPkGenerator {
     }
 
     @Override
-    public void dropAutoPk(DataNode node, List<DbEntity> dbEntities) throws 
Exception {
+    public void dropAutoPk(DataNode node, List<DbEntity> dbEntities) {
     }
 
     @Override
@@ -119,7 +119,7 @@ public class FrontBasePkGenerator extends JdbcPkGenerator {
      * @since 3.0
      */
     @Override
-    protected long longPkFromDatabase(DataNode node, DbEntity entity) throws 
Exception {
+    protected long longPkFromDatabase(DataNode node, DbEntity entity) {
 
         String template = "SELECT #result('UNIQUE' 'long') FROM " + 
entity.getName();
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/dba/mysql/MySQLPkGenerator.java 
b/cayenne/src/main/java/org/apache/cayenne/dba/mysql/MySQLPkGenerator.java
index c8a965360..c49ee9d84 100644
--- a/cayenne/src/main/java/org/apache/cayenne/dba/mysql/MySQLPkGenerator.java
+++ b/cayenne/src/main/java/org/apache/cayenne/dba/mysql/MySQLPkGenerator.java
@@ -25,6 +25,7 @@ import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.Collections;
 
+import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.dba.JdbcAdapter;
 import org.apache.cayenne.dba.JdbcPkGenerator;
@@ -59,7 +60,7 @@ public class MySQLPkGenerator extends JdbcPkGenerator {
      * @since 3.0
      */
     @Override
-    protected long longPkFromDatabase(DataNode node, DbEntity entity) throws 
Exception {
+    protected long longPkFromDatabase(DataNode node, DbEntity entity) {
 
         // must work directly with JDBC connection, since we
         // must unlock the AUTO_PK_SUPPORT table in case of
@@ -115,7 +116,7 @@ public class MySQLPkGenerator extends JdbcPkGenerator {
 
         // check errors
         if (exception != null) {
-            throw exception;
+            throw new CayenneRuntimeException("Error generating pk for 
DbEntity %s", exception, entity.getName());
         }
 
         return pk;
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/dba/oracle/OraclePkGenerator.java 
b/cayenne/src/main/java/org/apache/cayenne/dba/oracle/OraclePkGenerator.java
index 798985e1c..58b9ee789 100644
--- a/cayenne/src/main/java/org/apache/cayenne/dba/oracle/OraclePkGenerator.java
+++ b/cayenne/src/main/java/org/apache/cayenne/dba/oracle/OraclePkGenerator.java
@@ -67,7 +67,7 @@ public class OraclePkGenerator extends JdbcPkGenerator {
     private static final String _SEQUENCE_PREFIX = "pk_";
 
     @Override
-    public void createAutoPk(DataNode node, List<DbEntity> dbEntities) throws 
Exception {
+    public void createAutoPk(DataNode node, List<DbEntity> dbEntities) {
         List<String> sequences = getExistingSequences(node);
         // create needed sequences
         for (DbEntity dbEntity : dbEntities) {
@@ -94,7 +94,7 @@ public class OraclePkGenerator extends JdbcPkGenerator {
      * Drops PK sequences for all specified DbEntities.
      */
     @Override
-    public void dropAutoPk(DataNode node, List<DbEntity> dbEntities) throws 
Exception {
+    public void dropAutoPk(DataNode node, List<DbEntity> dbEntities) {
         List<String> sequences = getExistingSequences(node);
 
         // drop obsolete sequences
@@ -160,7 +160,7 @@ public class OraclePkGenerator extends JdbcPkGenerator {
      * @since 3.0
      */
     @Override
-    protected long longPkFromDatabase(DataNode node, DbEntity entity) throws 
Exception {
+    protected long longPkFromDatabase(DataNode node, DbEntity entity) {
 
         DbKeyGenerator pkGenerator = entity.getPrimaryKeyGenerator();
         String pkGeneratingSequenceName;
@@ -183,6 +183,8 @@ public class OraclePkGenerator extends JdbcPkGenerator {
                     return rs.getLong(1);
                 }
             }
+        } catch (SQLException e) {
+            throw new CayenneRuntimeException("Error generating pk for 
DbEntity %s", e, entity.getName());
         }
     }
 
@@ -229,7 +231,7 @@ public class OraclePkGenerator extends JdbcPkGenerator {
      * Fetches a list of existing sequences that might match Cayenne generated
      * ones.
      */
-    protected List<String> getExistingSequences(DataNode node) throws 
SQLException {
+    protected List<String> getExistingSequences(DataNode node) {
 
         // check existing sequences
         try (Connection con = node.getDataSource().getConnection()) {
@@ -248,6 +250,8 @@ public class OraclePkGenerator extends JdbcPkGenerator {
                     return sequenceList;
                 }
             }
+        } catch (SQLException e) {
+            throw new CayenneRuntimeException("Error fetching existing 
sequences", e);
         }
     }
 }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerPkGenerator.java
 
b/cayenne/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerPkGenerator.java
index 5dd23a2e4..3982d4d47 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerPkGenerator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerPkGenerator.java
@@ -105,7 +105,7 @@ public class SQLServerPkGenerator extends OraclePkGenerator 
{
     }
 
     @Override
-    public Object generatePk(DataNode node, DbAttribute pk, Class<?> javaType) 
throws Exception {
+    public Object generatePk(DataNode node, DbAttribute pk, Class<?> javaType) 
{
         DbEntity entity = pk.getEntity();
 
         //check key on UNIQUEIDENTIFIER; UNIQUEIDENTIFIER is a character with 
a length of 36
@@ -139,7 +139,7 @@ public class SQLServerPkGenerator extends OraclePkGenerator 
{
         }
     }
 
-    protected String guidPkFromDatabase(DataNode node, DbEntity entity) throws 
SQLException {
+    protected String guidPkFromDatabase(DataNode node, DbEntity entity) {
         try (Connection con = node.getDataSource().getConnection()) {
             try (Statement st = con.createStatement()) {
                 adapter.getJdbcEventLogger().log(SELECT_NEW_GUID);
@@ -150,6 +150,8 @@ public class SQLServerPkGenerator extends OraclePkGenerator 
{
                     return rs.getString(1);
                 }
             }
+        } catch (SQLException e) {
+            throw new CayenneRuntimeException("Error generating pk for 
DbEntity %s", e, entity.getName());
         }
     }
 }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/dba/sybase/SybasePkGenerator.java 
b/cayenne/src/main/java/org/apache/cayenne/dba/sybase/SybasePkGenerator.java
index 91c7ed0e9..a099d53f5 100644
--- a/cayenne/src/main/java/org/apache/cayenne/dba/sybase/SybasePkGenerator.java
+++ b/cayenne/src/main/java/org/apache/cayenne/dba/sybase/SybasePkGenerator.java
@@ -30,6 +30,7 @@ import org.apache.cayenne.tx.Transaction;
 import java.sql.CallableStatement;
 import java.sql.Connection;
 import java.sql.ResultSet;
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -98,7 +99,7 @@ public class SybasePkGenerator extends JdbcPkGenerator {
         *            node that provides access to a DataSource.
         */
        @Override
-       public void createAutoPk(DataNode node, List<DbEntity> dbEntities) 
throws Exception {
+       public void createAutoPk(DataNode node, List<DbEntity> dbEntities) {
                super.createAutoPk(node, dbEntities);
                runUpdate(node, safePkProcDrop());
                runUpdate(node, unsafePkProcCreate());
@@ -138,7 +139,7 @@ public class SybasePkGenerator extends JdbcPkGenerator {
         *            node that provides access to a DataSource.
         */
        @Override
-       public void dropAutoPk(DataNode node, List<DbEntity> dbEntities) throws 
Exception {
+       public void dropAutoPk(DataNode node, List<DbEntity> dbEntities) {
                runUpdate(node, safePkProcDrop());
                runUpdate(node, safePkTableDrop());
        }
@@ -155,7 +156,7 @@ public class SybasePkGenerator extends JdbcPkGenerator {
         * @since 3.0
         */
        @Override
-       protected long longPkFromDatabase(DataNode node, DbEntity entity) 
throws Exception {
+       protected long longPkFromDatabase(DataNode node, DbEntity entity) {
                // handle CAY-588 - get connection that is separate from the 
connection
                // in the current transaction.
 
@@ -187,6 +188,8 @@ public class SybasePkGenerator extends JdbcPkGenerator {
                                                        + ", no result set from 
stored procedure.", entity.getName());
                                }
                        }
+               } catch (SQLException e) {
+                       throw new CayenneRuntimeException("Error generating pk 
for DbEntity %s", e, entity.getName());
                } finally {
                        BaseTransaction.bindThreadTransaction(transaction);
                }

Reply via email to