From ce4fecd9d313d61d9468954c675e735d468a4a5e Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Mon, 3 Sep 2007 17:13:02 +0000 Subject: Calling Storable.update when there are no dirty properties actually does an update instead of being "smart" and ignoring the update request. The old behavior was non-intuitive and interfered with expected trigger behavior. --- .../amazon/carbonado/gen/StorableGenerator.java | 46 ---------------------- 1 file changed, 46 deletions(-) (limited to 'src/main/java/com/amazon/carbonado/gen') diff --git a/src/main/java/com/amazon/carbonado/gen/StorableGenerator.java b/src/main/java/com/amazon/carbonado/gen/StorableGenerator.java index ea61306..6a66528 100644 --- a/src/main/java/com/amazon/carbonado/gen/StorableGenerator.java +++ b/src/main/java/com/amazon/carbonado/gen/StorableGenerator.java @@ -1314,52 +1314,6 @@ public final class StorableGenerator { Label tryStart = addGetTriggerAndEnterTxn (b, UPDATE_OP, forTryVar, false, triggerVar, txnVar, stateVar); - // If no properties are dirty, then don't update. - Label doUpdate = b.createLabel(); - branchIfDirty(b, true, doUpdate); - - // Even though there was no update, still need tryLoad side-effect. - { - // if (txn != null) { - // txn.exit(); - // } - b.loadLocal(txnVar); - Label noTxn = b.createLabel(); - b.ifNullBranch(noTxn, true); - b.loadLocal(txnVar); - b.invokeInterface(transactionType, EXIT_METHOD_NAME, null, null); - noTxn.setLocation(); - - Label tryStart2 = b.createLabel().setLocation(); - b.loadThis(); - b.invokeVirtual(DO_TRY_LOAD_METHOD_NAME, TypeDesc.BOOLEAN, null); - - Label notUpdated = b.createLabel(); - b.ifZeroComparisonBranch(notUpdated, "=="); - - // Only mark properties clean if doTryLoad returned true. - b.loadThis(); - b.invokeVirtual(MARK_ALL_PROPERTIES_CLEAN, null, null); - b.loadConstant(true); - b.returnValue(TypeDesc.BOOLEAN); - - notUpdated.setLocation(); - - // Mark properties dirty, to be consistent with a delete side-effect. - b.loadThis(); - b.invokeVirtual(MARK_PROPERTIES_DIRTY, null, null); - b.loadConstant(false); - b.returnValue(TypeDesc.BOOLEAN); - - Label tryEnd = b.createLabel().setLocation(); - b.exceptionHandler(tryStart2, tryEnd, FetchException.class.getName()); - b.invokeVirtual(FetchException.class.getName(), "toPersistException", - TypeDesc.forClass(PersistException.class), null); - b.throwObject(); - } - - doUpdate.setLocation(); - // Call doTryUpdate. b.loadThis(); b.invokeVirtual(DO_TRY_UPDATE_METHOD_NAME, TypeDesc.BOOLEAN, null); -- cgit v1.2.3