@Test public void remoteUpdateWithInvalidateWithOnlyExistingSucceeds() throws Exception { when(internalRegion.isAllEvents()).thenReturn(true); when(internalRegion.isInitialized()).thenReturn(true); Object oldValue = new Object(); RegionEntry existingEntry = mock(RegionEntry.class); when(existingEntry.getValueInVM(any())).thenReturn(oldValue); when(focusedRegionMap.getEntry(eq(event))).thenReturn(existingEntry); when(event.getRawNewValueAsHeapObject()).thenReturn(null); when(existingEntry.prepareValueForCache(any(), eq(Token.INVALID), eq(event), eq(true))) .thenReturn(Token.INVALID); createInstance(Operation.UPDATE, false, txRmtEvent, null); RegionEntry result = instance.put(); assertThat(result).isSameAs(existingEntry); verify(existingEntry, times(1)).setValue(eq(internalRegion), eq(Token.INVALID)); }
@Test public void remoteUpdateWithOnlyExistingSucceeds() throws Exception { when(internalRegion.isAllEvents()).thenReturn(true); when(internalRegion.isInitialized()).thenReturn(true); Object oldValue = new Object(); RegionEntry existingEntry = mock(RegionEntry.class); when(existingEntry.getValueInVM(any())).thenReturn(oldValue); when(focusedRegionMap.getEntry(eq(event))).thenReturn(existingEntry); when(existingEntry.prepareValueForCache(any(), eq(newValue), eq(event), eq(true))) .thenReturn(newValue); createInstance(Operation.UPDATE, false, txRmtEvent, null); RegionEntry result = instance.put(); assertThat(result).isSameAs(existingEntry); verify(existingEntry, times(1)).setValue(eq(internalRegion), eq(newValue)); }
@Test public void remoteUpdateWithOnlyExistingCallsAddPut() throws Exception { when(internalRegion.isAllEvents()).thenReturn(true); when(internalRegion.isInitialized()).thenReturn(true); Object oldValue = new Object(); RegionEntry existingEntry = mock(RegionEntry.class); when(existingEntry.getValueInVM(any())).thenReturn(oldValue); when(focusedRegionMap.getEntry(eq(event))).thenReturn(existingEntry); when(existingEntry.prepareValueForCache(any(), eq(newValue), eq(event), eq(true))) .thenReturn(newValue); final Object callbackArgument = "callbackArgument"; when(event.getCallbackArgument()).thenReturn(callbackArgument); createInstance(Operation.UPDATE, false, txRmtEvent, null); RegionEntry result = instance.put(); assertThat(result).isSameAs(existingEntry); verify(txRmtEvent, times(1)).addPut(eq(Operation.UPDATE), eq(internalRegion), eq(existingEntry), eq(key), eq(newValue), eq(callbackArgument)); }
@Test public void remoteUpdateWithLocalInvalidateWithOnlyExistingSucceeds() throws Exception { when(internalRegion.isAllEvents()).thenReturn(true); when(internalRegion.isInitialized()).thenReturn(true); Object oldValue = new Object(); RegionEntry existingEntry = mock(RegionEntry.class); when(existingEntry.getValueInVM(any())).thenReturn(oldValue); when(focusedRegionMap.getEntry(eq(event))).thenReturn(existingEntry); when(event.getRawNewValueAsHeapObject()).thenReturn(null); when(event.isLocalInvalid()).thenReturn(true); when(existingEntry.prepareValueForCache(any(), eq(Token.LOCAL_INVALID), eq(event), eq(true))) .thenReturn(Token.LOCAL_INVALID); createInstance(Operation.UPDATE, false, txRmtEvent, null); RegionEntry result = instance.put(); assertThat(result).isSameAs(existingEntry); verify(existingEntry, times(1)).setValue(eq(internalRegion), eq(Token.LOCAL_INVALID)); }
private void setNewValueOnRegionEntry(final Object newValue) throws RegionClearedException { final RegionEntry regionEntry = getRegionEntry(); final InternalRegion owner = getOwner(); final boolean wasTombstone = regionEntry.isTombstone(); final Object preparedValue = regionEntry.prepareValueForCache(owner, newValue, getEvent(), !isPutOpCreate()); regionEntry.setValue(owner, preparedValue); if (wasTombstone) { owner.unscheduleTombstone(regionEntry); } }
boolean clearOccured = false; try { oldRe.setValue(owner, oldRe.prepareValueForCache(owner, newValue, true)); EntryLogger.logTXInvalidate(_getOwnerObject(), key); owner.updateSizeOnPut(key, oldSize, 0); try { processAndGenerateTXVersionTag(callbackEvent, newRe, txEntryState); newRe.setValue(owner, newRe.prepareValueForCache(owner, newValue, true)); EntryLogger.logTXInvalidate(_getOwnerObject(), key); owner.updateSizeOnCreate(newRe.getKey(), 0);// we are putting in a new invalidated boolean clearOccured = false; try { re.setValue(owner, re.prepareValueForCache(owner, newValue, true)); EntryLogger.logTXInvalidate(_getOwnerObject(), key); owner.updateSizeOnPut(key, oldSize, 0);
Object preparedV = reentry.prepareValueForCache(getRegion(), v, this, false); if (preparedV != v) { v = preparedV;