@Override public void delete(Object entity, RequestScope requestScope) { getTransaction(entity).delete(entity, requestScope); dirtyObjects.add(this.multiplexManager.getSubManager(entity.getClass()), entity); }
/** * Attempt to reverse changes of last commit since not all transactions successfully committed. * @param restoreList List of database managers to reverse the last commit * @param cause cause to add any suppressed exceptions */ private void reverseTransactions(ArrayList<DataStore> restoreList, Throwable cause, RequestScope requestScope) { for (DataStore dataStore : restoreList) { try (DataStoreTransaction transaction = dataStore.beginTransaction()) { List<Object> list = dirtyObjects.get(dataStore); for (Object dirtyObject : list == null ? Collections.emptyList() : list) { Object cloned = clonedObjects.get(dirtyObject); if (cloned == NEWLY_CREATED_OBJECT) { transaction.delete(dirtyObject, requestScope); } else { transaction.save(cloned, requestScope); } } transaction.commit(requestScope); } catch (RuntimeException | IOException e) { cause.addSuppressed(e); } } }
transaction.delete(getObject(), requestScope); auditClass(Audit.Action.DELETE, new ChangeSpec(this, null, getObject(), null)); requestScope.publishLifecycleEvent(this, CRUDEvent.CRUDAction.DELETE);
transaction.delete(getObject(), requestScope); auditClass(Audit.Action.DELETE, new ChangeSpec(this, null, getObject(), null)); requestScope.publishLifecycleEvent(this, CRUDEvent.CRUDAction.DELETE);