You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2004/01/04 00:27:28 UTC
cvs commit: db-ojb/src/java/org/apache/ojb/broker/accesslayer JdbcAccessImpl.java
arminw 2004/01/03 15:27:28
Modified: src/java/org/apache/ojb/broker/accesslayer
JdbcAccessImpl.java
Log:
generate a more detailed message when insert failed
Revision Changes Path
1.18 +26 -10 db-ojb/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
Index: JdbcAccessImpl.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- JdbcAccessImpl.java 13 Dec 2003 18:57:18 -0000 1.17
+++ JdbcAccessImpl.java 3 Jan 2004 23:27:28 -0000 1.18
@@ -130,7 +130,7 @@
broker.serviceStatementManager().bindDelete(stmt, cld, obj);
if (logger.isDebugEnabled())
logger.debug("executeDelete: " + stmt);
-
+
// @todo: clearify semantics
// thma: the following check is not secure. The object could be deleted *or* changed.
// if it was deleted it makes no sense to throw an OL exception.
@@ -247,22 +247,38 @@
}
catch (SQLException e)
{
- logger.error(
- "SQLException during the execution of the insert (for a "
- + cld.getClassOfObject().getName()
- + "): "
- + e.getMessage(),
- e);
+ // Build a detailed error message
+ StringBuffer msg = new StringBuffer("SQL failure while insert object data for class ");
+ try
+ {
+ msg.append(cld.getClassNameOfObject())
+ .append(", PK of the given object is [");
+ FieldDescriptor[] fields = cld.getPkFields();
+ for (int i = 0; i < fields.length; i++)
+ {
+ msg.append(" ")
+ .append(fields[i].getPersistentField().getName())
+ .append("=")
+ .append(fields[i].getPersistentField().get(obj));
+ }
+ msg.append("], object was " + obj);
+ msg.append(", exception message is [" + e.getMessage() + "]");
+ }
+ catch (Exception ignore)
+ {
+ msg.append("- Sorry, can't generate a more detailed message");
+ }
+
/**
* throw a specific type of runtime exception for a key constraint.
*/
if (SQL_STATE_KEY_VIOLATED.equals(e.getSQLState()))
{
- throw new KeyConstraintViolatedException(e);
+ throw new KeyConstraintViolatedException(msg.toString(), e);
}
else
{
- throw new PersistenceBrokerSQLException(e);
+ throw new PersistenceBrokerSQLException(msg.toString(), e);
}
}
finally
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org