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