use of org.jaffa.persistence.exceptions.DeleteFailedException in project jaffa-framework by jaffa-projects.
the class UOW method commit.
/**
* Objects that have been added, objects that have been deleted,
* and objects that have been updated, will all be persisted via
* an invocation of this method.
* Note: After a successful commit, this object will free up its connection to the database,
* and will no longer be available.
*
* @throws AddFailedException if any error occurs during the addition of objects to the persistent store.
* @throws UpdateFailedException if any error occurs while updating the objects of the persistent store.
* @throws DeleteFailedException if any error occurs while deleting the objects of the persistent store.
* @throws CommitFailedException if any error occurs during the commit.
*/
public void commit() throws AddFailedException, UpdateFailedException, DeleteFailedException, CommitFailedException {
ensureActiveState();
Collection deletes = m_engine.getDeletes();
if (deletes != null) {
if (m_messagingEngine == null) {
try {
m_messagingEngine = MessagingEngineFactory.newInstance(this);
} catch (FrameworkException e) {
// failed creating the messaging engine, do not fail the overall commit
} catch (ApplicationExceptions applicationExceptions) {
// failed creating the messaging engine, do not fail the overall commit
}
}
if (m_messagingEngine != null) {
m_messagingEngine.prepareDeletesForCommit(deletes);
}
}
// commit the persistence engine
m_engine.commit();
// commit the messaging engine
if (m_messagingEngine != null) {
try {
m_messagingEngine.commit();
} catch (Exception e) {
log.fatal("The database transaction has been committed. Exception raised while sending Message(s) to the JMS system", e);
throw new CommitFailedException(null, e);
}
}
close();
}
use of org.jaffa.persistence.exceptions.DeleteFailedException in project jaffa-framework by jaffa-projects.
the class DeleteInterceptor method invoke.
/**
*Performs the logic associated with deleting Persistent objects from the database.
* This will delete each object in the PersistentTransaction's DELETE collection from the database, utilising the JdbcBridge.
* It will then pass on the control to the next Interceptor in the chain.
* @param pt The PersistentTransaction object, on which the Interceptor is to be executed.
* @throws UOWException if any error occurs.
* @return the output from the next Interceptor in the chain.
*/
public Object invoke(PersistentTransaction pt) throws UOWException {
Collection objects = pt.getDeletes();
if (objects != null) {
// deletes the objects from the database
for (Iterator i = objects.iterator(); i.hasNext(); ) {
IPersistent object = (IPersistent) i.next();
try {
if (log.isDebugEnabled())
log.debug("Invoking JdbcBridge.executeDelete() for the object " + object);
JdbcBridge.executeDelete(object, pt.getDataSource());
pt.getDataSource().clearObjectCache();
} catch (Exception e) {
String str = "Error while deleting the Persistent object from the database: " + object;
log.error(str, e);
throw new DeleteFailedException(null, e);
}
i.remove();
}
}
// pass control to the next interceptor in the chain
if (getNextInterceptor() != null) {
if (log.isDebugEnabled())
log.debug("Invoking the next Interceptor in the chain " + getNextInterceptor().getClass().getName());
return getNextInterceptor().invoke(pt);
} else {
if (log.isDebugEnabled())
log.debug("This is the end of the Interceptor chain");
return null;
}
}
Aggregations