On 27.2.13 13:14, Jukka Zitting wrote:
Hi,

On Wed, Feb 27, 2013 at 3:00 PM, Michael Dürig <[email protected]> wrote:
I am though. Such in flight refreshes render internal invariants to break.

Fair enough.

The other alternative, as discussed, would be to utilize better
control over the Impl/Delegate barrier. You're right in that this
would be troublesome to enforce manually given the size of the JCR
API. Perhaps we could use static analysis for that.

Just some anecdotal evidence: a single call to Node.addNode() results in a call to Node.getPrimaryNodeType() which in turn ends up calling Property.getValue() and which eventually results in a call to Property.isMultiple(). So there will be quite a bit of stuff to untangle. Not sure how to go about this in order to catch them all.

OTOH as your main concern initially was to reduce boilerplate, we could also try the other approach I proposed earlier: enrich SessionOperation with preconditions to be checked before the core of the call is actually executed. This will at the same time address the issue I brought up at our last meeting that implementing JCR method in terms of each others will result in the preconditions being checked multiple times instead of just once. Furthermore such an approach would also close the race we currently have between the calls to the check methods and the actually operation being performed. Currently there is still the chance, that the conditions become invalid right after the check methods returned but before the operation is actually performed.

Michael


BR,

Jukka Zitting

Reply via email to