/**
* @see DataServiceRequest#processRequest()
*/
@Override
public OMElement processRequest() throws DataServiceFault {
DataService dataService = this.getDataService();
boolean inTx = false;
/* not inside a nested transaction, i.e. boxcarring/batch-requests */
if (!dataService.isInTransaction()) {
/* an active transaction has already started by the transaction manager,
* e.g. external JMS transaction */
if (dataService.isEnableXA() && !dataService.getDSSTxManager().hasNoActiveTransaction()) {
/* signal we are inside a transaction */
dataService.beginTransaction();
inTx = true;
}
}
OMElement result = processSingleRequest();
if (inTx) {
/* signal the end of transaction, this wont necessarily commit the
* transaction, it will be done by the external transaction creator */
dataService.endTransaction();
}
return result;
}