@Override void dispatchListenerEvent(EnumListenerEvent op, InternalCacheEvent event) { // don't dispatch the event if the interest policy forbids it if (hasListener()) { if (event.getOperation().isEntry()) { EntryEventImpl ev = (EntryEventImpl)event; if (!ev.getInvokePRCallbacks()) { if (this.getSubscriptionAttributes().getInterestPolicy() == InterestPolicy.CACHE_CONTENT) { if (logger.isDebugEnabled()) { logger.trace(LogMarker.DM_BRIDGE_SERVER, "not dispatching PR event in this member as there is no interest in it"); } return; } } } super.dispatchListenerEvent(op, event); } }
public void invokeTXCallbacks(final EnumListenerEvent eventType, final EntryEventImpl event , final boolean callDispatchListenerEvent) { // The spec for ConcurrentMap support requires that operations be mapped // to non-CM counterparts Operation op = event.getOperation(); if (logger.isDebugEnabled()) { logger.debug("invokeTXCallbacks for event {}", event); } if (op == Operation.REMOVE) { event.setOperation(Operation.DESTROY); } else if (op == Operation.PUT_IF_ABSENT) { event.setOperation(Operation.CREATE); } else if (op == Operation.REPLACE) { event.setOperation(Operation.UPDATE); } event.setEventType(eventType); notifyBridgeClients(event); notifyGatewaySender(eventType, event); if (callDispatchListenerEvent){ if (event.getInvokePRCallbacks() || (!(event.getRegion() instanceof PartitionedRegion) && !(event.getRegion().isUsedForPartitionedRegionBucket()))) { dispatchListenerEvent(eventType, event); } } }
EntryEventImpl createEventForPR(EntryEventImpl sourceEvent) { EntryEventImpl e2 = new EntryEventImpl(sourceEvent); boolean returned = false; try { e2.setRegion(this.partitionedRegion); if (FORCE_LOCAL_LISTENERS_INVOCATION) { e2.setInvokePRCallbacks(true); } else { e2.setInvokePRCallbacks(sourceEvent.getInvokePRCallbacks()); } DistributedMember dm = this.getDistributionManager().getDistributionManagerId(); e2.setOriginRemote(!e2.getDistributedMember().equals(dm)); returned = true; return e2; } finally { if (!returned) { e2.release(); } } }
EntryEventImpl createEventForPR(EntryEventImpl sourceEvent) { EntryEventImpl e2 = new EntryEventImpl(sourceEvent); boolean returned = false; try { e2.setRegion(this.partitionedRegion); if (FORCE_LOCAL_LISTENERS_INVOCATION) { e2.setInvokePRCallbacks(true); } else { e2.setInvokePRCallbacks(sourceEvent.getInvokePRCallbacks()); } DistributedMember dm = this.getDistributionManager().getDistributionManagerId(); e2.setOriginRemote(!e2.getDistributedMember().equals(dm)); returned = true; return e2; } finally { if (!returned) { e2.release(); } } }
public void afterCreate(EntryEvent event) { getLogWriter().info("Invoking afterCreate on listener; event=" + event); callbackAssertEquals("Wrong callback argument", event.getCallbackArgument(), event.getDistributedMember()); callbackAssertEquals("Operation not create", Operation.CREATE, event.getOperation()); if ( !((com.gemstone.gemfire.internal.cache.EntryEventImpl)event).getInvokePRCallbacks() ) { callbackAssertEquals("Old value should be NOT_AVAILABLE", null, event.getOldValue()); assertEquals("Old value should be NOT_AVAILABLE", false, event.isOldValueAvailable()); } else { callbackAssertNull("the oldValue should be null", event.getOldValue()); } getBlackboard().incNumInvocations1(); callbackAssertEquals("newValue is wrong", new Integer(0), event.getNewValue()); //assertNull("oldValue not null", event.getOldValue()); }
if (event.getOperation().isEntry()) { EntryEventImpl ev = (EntryEventImpl)event; if (!ev.getInvokePRCallbacks()) { if (this.getSubscriptionAttributes().getInterestPolicy() == InterestPolicy.CACHE_CONTENT) {
/** * Constructor to use when preparing to send putall data out */ public RemoveAllEntryData(EntryEventImpl event) { this.key = event.getKey(); Object oldValue = event.getRawOldValue(); if (oldValue == Token.NOT_AVAILABLE || Token.isRemoved(oldValue)) { this.oldValue = null; } else { this.oldValue = oldValue; } this.op = event.getOperation(); this.eventID = event.getEventId(); this.tailKey = event.getTailKey(); this.versionTag = event.getVersionTag(); setNotifyOnly(!event.getInvokePRCallbacks()); setCallbacksInvoked(event.callbacksInvoked()); setPossibleDuplicate(event.isPossibleDuplicate()); setInhibitDistribution(event.getInhibitDistribution()); }
/** * Constructor to use when preparing to send putall data out */ public PutAllEntryData(EntryEventImpl event) { this.key = event.getKey(); this.value = event.getRawNewValueAsHeapObject(); Object oldValue = event.getRawOldValueAsHeapObject(); if (oldValue == Token.NOT_AVAILABLE || Token.isRemoved(oldValue)) { this.oldValue = null; } else { this.oldValue = oldValue; } this.op = event.getOperation(); this.eventID = event.getEventId(); this.tailKey = event.getTailKey(); this.versionTag = event.getVersionTag(); setNotifyOnly(!event.getInvokePRCallbacks()); setCallbacksInvoked(event.callbacksInvoked()); setPossibleDuplicate(event.isPossibleDuplicate()); setInhibitDistribution(event.getInhibitDistribution()); }
/** * Constructor to use when preparing to send putall data out */ public PutAllEntryData(EntryEventImpl event, Object callbackArg) { this.key = event.getKey(); this.value = event.getRawNewValueAsHeapObject(); Object oldValue = event.getRawOldValueAsHeapObject(); if (oldValue == Token.NOT_AVAILABLE || Token.isRemoved(oldValue)) { this.oldValue = null; } else { this.oldValue = oldValue; } this.op = event.getOperation(); this.eventID = event.getEventId(); this.callbackArg = callbackArg; this.tailKey = event.getTailKey(); this.versionTag = event.getVersionTag(); setNotifyOnly(!event.getInvokePRCallbacks()); setCallbacksInvoked(event.callbacksInvoked()); setPossibleDuplicate(event.isPossibleDuplicate()); setInhibitDistribution(event.getInhibitDistribution()); }
if (event.getInvokePRCallbacks() || (!(event.getRegion() instanceof PartitionedRegion) && !(event.getRegion().isUsedForPartitionedRegionBucket()))) { dispatchListenerEvent(eventType, event);
public void afterUpdate(EntryEvent event) { getLogWriter().info("Invoking afterUpdate on listener; name=" + event.getKey()); callbackAssertEquals("Callback argument incorrect", event.getCallbackArgument(), event.getDistributedMember()); callbackAssertEquals("Operation not update", Operation.UPDATE, event.getOperation()); if ( ((com.gemstone.gemfire.internal.cache.EntryEventImpl)event).getInvokePRCallbacks() ) { callbackAssertTrue("Old value should not be null", event.getOldValue() != null); } newValue = event.getNewValue(); oldValue = event.getOldValue(); getBlackboard().incNumInvocations2(); getLogWriter().info("update event new value is: " + newValue ); getLogWriter().info("update event old value is: " + oldValue ); } };