protected void handleOptimisticLockingException(DbOperation dbOperation) { boolean isHandled = false; if (optimisticLockingListeners != null) { for (OptimisticLockingListener optimisticLockingListener : optimisticLockingListeners) { if (optimisticLockingListener.getEntityType() == null || optimisticLockingListener .getEntityType() .isAssignableFrom(dbOperation.getEntityType())) { optimisticLockingListener.failedOperation(dbOperation); isHandled = true; } } } if (!isHandled) { throw LOG.concurrentUpdateDbEntityException(dbOperation); } }