private DataAwareEntryEvent createDataAwareEntryEvent( EntryEventData entryEventData, Member member) { return new DataAwareEntryEvent( member, entryEventData.getEventType(), entryEventData.getMapName(), entryEventData.getDataKey(), entryEventData.getDataNewValue(), entryEventData.getDataOldValue(), entryEventData.getDataMergingValue(), nodeEngine.getSerializationService()); }
@Override public void dispatchEvent(Object event, Object listener) { if ((event instanceof EntryEventData)) { EntryEventData entryEventData = (EntryEventData) event; Member member = getMember(entryEventData); EntryEvent entryEvent = createDataAwareEntryEvent(entryEventData, member); EntryListener entryListener = (EntryListener) listener; switch (entryEvent.getEventType()) { case ADDED: entryListener.entryAdded(entryEvent); break; case EVICTED: entryListener.entryEvicted(entryEvent); break; case UPDATED: entryListener.entryUpdated(entryEvent); break; case REMOVED: entryListener.entryRemoved(entryEvent); break; default: throw new IllegalArgumentException( "event type " + entryEvent.getEventType() + " not supported"); } String mapName = ((EntryEventData) event).getMapName(); Boolean statisticsEnabled = statisticsMap.get(mapName); if (statisticsEnabled == null) { ReplicatedMapConfig mapConfig = config.findReplicatedMapConfig(mapName); statisticsEnabled = mapConfig.isStatisticsEnabled(); statisticsMap.put(mapName, statisticsEnabled); } if (statisticsEnabled) { int partitionId = nodeEngine.getPartitionService().getPartitionId(entryEventData.getDataKey()); ReplicatedRecordStore recordStore = replicatedMapService.getPartitionContainer(partitionId).getRecordStore(mapName); if (recordStore instanceof AbstractReplicatedRecordStore) { LocalReplicatedMapStatsImpl stats = ((AbstractReplicatedRecordStore) recordStore).getStats(); stats.incrementReceivedEvents(); } } } else if (event instanceof MapEventData) { MapEventData mapEventData = (MapEventData) event; Member member = getMember(mapEventData); MapEvent mapEvent = new MapEvent( mapEventData.getMapName(), member, mapEventData.getEventType(), mapEventData.getNumberOfEntries()); EntryListener entryListener = (EntryListener) listener; EntryEventType type = EntryEventType.getByType(mapEventData.getEventType()); switch (type) { case CLEAR_ALL: entryListener.mapCleared(mapEvent); break; default: throw new IllegalArgumentException("event type " + type + " not supported"); } } }