The TransactionPlugin interface states it's possible to alter a transaction before its execution:
/**
* Check/alter the transaction request elements
*/
TransactionType beforeTransaction(TransactionType request)
throws WFSException;
Back in GeoServer 2.1 it was possible to do so by directly modifying the specified TransactionType (the returned one was ignored), but with the introduction of WFS 2.0 the plugin is getting a simple copy of the transaction object, at least for WFS 2.0 transactions, making it impossible to perform a change. The TransactionListener.dataStoreChanged method can apparently modify inserts, but won't work on updates and deletes. Long story short, it seems currently the only way to alter a transaction before it kicks in is to write a DispatcherCallback |