docs: public void executeDelete(ClassDescriptor cld, Object obj) throws PersistenceBrokerException
      {
          if (logger.isDebugEnabled())
          {
              logger.debug("executeDelete: " + obj);
          }
  
          final StatementManagerIF sm = broker.serviceStatementManager();
          PreparedStatement stmt = null;
          try
          {
              stmt = sm.getDeleteStatement(cld);
              if (stmt == null)
              {
                  logger.error("getDeleteStatement returned a null statement");
                  throw new PersistenceBrokerException("JdbcAccessImpl: getDeleteStatement returned a null statement");
              }
  
              sm.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.
              // does is make sense to throw an OL exception if the object was changed?
              if (stmt.executeUpdate() == 0 && cld.isLocking()) //BRJ
              {
                  /**
                   * Kuali Foundation modification -- 6/19/2009
                   */
              	String objToString = "";
              	try {
              		objToString = obj.toString();
              	} catch (Exception ex) {}
                  throw new OptimisticLockException("Object has been modified or deleted by someone else: " + objToString, obj);
                  /**
                   * End of Kuali Foundation modification
                   */
              }
  
              // Harvest any return values.
              harvestReturnValues(cld.getDeleteProcedure(), obj, stmt);
          }
          catch (OptimisticLockException e)
          {
              // Don't log as error
              if (logger.isDebugEnabled())
                  logger.debug("OptimisticLockException during the execution of delete: "
                          + e.getMessage(), e);
              throw e;
          }
          catch (PersistenceBrokerException e)
          {
              logger.error("PersistenceBrokerException during the execution of delete: "
                      + e.getMessage(), e);
              throw e;
          }
          catch (SQLException e)
          {
              final String sql = broker.serviceSqlGenerator().getPreparedDeleteStatement(cld).getStatement();
              throw ExceptionHelper.generateException(e, sql, cld, logger, obj);
          }
          finally
          {
              sm.closeResources(stmt, null);
          }
      }