From 638a52ff2a3a51ad01332f2a524c15602ef50882 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Wed, 20 Sep 2006 00:34:50 +0000 Subject: [PATCH] (Hackily) handle duplicate key exceptions. --- .../com/samskivert/jdbc/depot/DepotRepository.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/java/com/samskivert/jdbc/depot/DepotRepository.java b/src/java/com/samskivert/jdbc/depot/DepotRepository.java index 2fbbe22..39eb6cf 100644 --- a/src/java/com/samskivert/jdbc/depot/DepotRepository.java +++ b/src/java/com/samskivert/jdbc/depot/DepotRepository.java @@ -29,6 +29,7 @@ import java.util.HashMap; import com.samskivert.io.PersistenceException; import com.samskivert.jdbc.ConnectionProvider; +import com.samskivert.jdbc.DuplicateKeyException; /** * Provides a base for classes that provide access to persistent objects. Also @@ -442,7 +443,14 @@ public class DepotRepository return modifier.invoke(conn); } catch (SQLException sqe) { - throw new PersistenceException("Modifier failure " + modifier, sqe); + // convert this exception to a DuplicateKeyException if appropriate + String msg = sqe.getMessage(); + if (msg != null && msg.indexOf("Duplicate entry") != -1) { + throw new DuplicateKeyException(msg); + } else { + throw new PersistenceException( + "Modifier failure " + modifier, sqe); + } } finally { _conprov.releaseConnection(getIdent(), false, conn);