From 00adea5bc6916b717132c72768ab3fea1b2a1a22 Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Sun, 26 Aug 2007 01:11:29 +0000 Subject: Added support for load and query trigger. --- .../repo/replicated/ReplicationTrigger.java | 38 +++++++++++++--------- 1 file changed, 22 insertions(+), 16 deletions(-) (limited to 'src/main/java/com/amazon/carbonado/repo/replicated') diff --git a/src/main/java/com/amazon/carbonado/repo/replicated/ReplicationTrigger.java b/src/main/java/com/amazon/carbonado/repo/replicated/ReplicationTrigger.java index 7edec6b..7b9804d 100644 --- a/src/main/java/com/amazon/carbonado/repo/replicated/ReplicationTrigger.java +++ b/src/main/java/com/amazon/carbonado/repo/replicated/ReplicationTrigger.java @@ -230,7 +230,7 @@ class ReplicationTrigger extends Trigger { Log log = LogFactory.getLog(ReplicatedRepository.class); - setReplicationDisabled(true); + setReplicationDisabled(); try { Transaction txn = mRepository.enterTransaction(); try { @@ -279,7 +279,7 @@ class ReplicationTrigger extends Trigger { txn.exit(); } } finally { - setReplicationDisabled(false); + setReplicationEnabled(); } } @@ -379,13 +379,13 @@ class ReplicationTrigger extends Trigger { * Deletes the replica entry with replication disabled. */ boolean tryDeleteReplica(Storable replica) throws PersistException { - // Disable replication to prevent trigger from being invoked by - // deleting replica. - setReplicationDisabled(true); + // Prevent trigger from being invoked by deleting replica. + TriggerManager tm = mTriggerManager; + tm.locallyDisableDelete(); try { return replica.tryDelete(); } finally { - setReplicationDisabled(false); + tm.locallyEnableDelete(); } } @@ -393,23 +393,29 @@ class ReplicationTrigger extends Trigger { * Deletes the replica entry with replication disabled. */ void deleteReplica(Storable replica) throws PersistException { - // Disable replication to prevent trigger from being invoked by - // deleting replica. - setReplicationDisabled(true); + // Prevent trigger from being invoked by deleting replica. + TriggerManager tm = mTriggerManager; + tm.locallyDisableDelete(); try { replica.delete(); } finally { - setReplicationDisabled(false); + tm.locallyEnableDelete(); } } - void setReplicationDisabled(boolean disabled) { + void setReplicationDisabled() { // This method disables not only this trigger, but all triggers added // to manager. - if (disabled) { - mTriggerManager.localDisable(); - } else { - mTriggerManager.localEnable(); - } + TriggerManager tm = mTriggerManager; + tm.locallyDisableInsert(); + tm.locallyDisableUpdate(); + tm.locallyDisableDelete(); + } + + void setReplicationEnabled() { + TriggerManager tm = mTriggerManager; + tm.locallyEnableInsert(); + tm.locallyEnableUpdate(); + tm.locallyEnableDelete(); } } -- cgit v1.2.3