A separation was recently introduced by Andy between Transactional 
(application-side interface) and TransactionalComponent (system-side interface) 
interfaces, which I believe I understand and definitely support. Additionally, 
a TransactionalNotSupportedMixin interface was introduced in order to support 
"un-Transactional" behavior. It extends Transactional and provides default 
implementations for the methods in Transactional that throw 
UnsupportedOperationExceptions.

My question: should TransactionalNotSupportedMixin actually be the "override" 
for Transactional (as it currently is), or for TransactionalComponent, or 
oddly, for both? Would it be more appropriate to introduce a new 
NonTransactionalComponent mixin or the like? I suspect that it would be, 
because we want Transactional and TransactionalComponent to be able to evolve 
with some real independence, but I also suspect that I am missing something 
here. {grin}

(For context, this came up for me looking at JENA-1084 as I try to tease apart 
different kinds of behavior in the TxnInMem dataset impl and amongst them, 
transactionality. That impl uses a design wherein tuple tables, each for a 
particular order of columns, are coupled up into multiplex tables that can 
support all queries. So the question of how to correctly combine transactional 
and non-transactional code is practical. I started using 
TransactionalNotSupportedMixin to mark non-transactional implementation code, 
but now I'm confident that I was wrong and that the "override" for 
TransactionalComponent is what I really want, but it's not there! {grin})



---
A. Soroka
The University of Virginia Library

Reply via email to