blob: 8f95d9758b494c4a0fd10026e2916f12f16469ef [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package org.apache.geode.internal.cache;
import org.apache.geode.annotations.Immutable;
import org.apache.geode.cache.CacheEvent;
import org.apache.geode.cache.CacheListener;
import org.apache.geode.cache.EntryEvent;
import org.apache.geode.cache.RegionEvent;
import org.apache.geode.cache.RegionMembershipListener;
import org.apache.geode.cache.RegionRoleListener;
import org.apache.geode.cache.RoleEvent;
@Immutable
public abstract class EnumListenerEvent {
private final String name;
protected EnumListenerEvent(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
public abstract byte getEventCode();
/**
* Invoke the correct listener method for this event.
*
* @since GemFire 5.0
*/
public abstract void dispatchEvent(CacheEvent event, CacheListener listener);
@Immutable
public static final EnumListenerEvent AFTER_CREATE = new AFTER_CREATE(); // 1
@Immutable
public static final EnumListenerEvent AFTER_UPDATE = new AFTER_UPDATE(); // 2
@Immutable
public static final EnumListenerEvent AFTER_INVALIDATE = new AFTER_INVALIDATE(); // 3
@Immutable
public static final EnumListenerEvent AFTER_DESTROY = new AFTER_DESTROY(); // 4
@Immutable
public static final EnumListenerEvent AFTER_REGION_CREATE = new AFTER_REGION_CREATE(); // 5
@Immutable
public static final EnumListenerEvent AFTER_REGION_INVALIDATE = new AFTER_REGION_INVALIDATE(); // 6
@Immutable
public static final EnumListenerEvent AFTER_REGION_CLEAR = new AFTER_REGION_CLEAR(); // 7
@Immutable
public static final EnumListenerEvent AFTER_REGION_DESTROY = new AFTER_REGION_DESTROY(); // 8
@Immutable
public static final EnumListenerEvent AFTER_REMOTE_REGION_CREATE =
new AFTER_REMOTE_REGION_CREATE();// 9
@Immutable
public static final EnumListenerEvent AFTER_REMOTE_REGION_DEPARTURE =
new AFTER_REMOTE_REGION_DEPARTURE(); // 10
@Immutable
public static final EnumListenerEvent AFTER_REMOTE_REGION_CRASH = new AFTER_REMOTE_REGION_CRASH();// 11
@Immutable
public static final EnumListenerEvent AFTER_ROLE_GAIN = new AFTER_ROLE_GAIN();// 12
@Immutable
public static final EnumListenerEvent AFTER_ROLE_LOSS = new AFTER_ROLE_LOSS();// 13
@Immutable
public static final EnumListenerEvent AFTER_REGION_LIVE = new AFTER_REGION_LIVE();// 14
@Immutable
public static final EnumListenerEvent AFTER_REGISTER_INSTANTIATOR =
new AFTER_REGISTER_INSTANTIATOR();// 15
@Immutable
public static final EnumListenerEvent AFTER_REGISTER_DATASERIALIZER =
new AFTER_REGISTER_DATASERIALIZER();// 16
@Immutable
public static final EnumListenerEvent AFTER_TOMBSTONE_EXPIRATION =
new AFTER_TOMBSTONE_EXPIRATION(); // 17
@Immutable
public static final EnumListenerEvent TIMESTAMP_UPDATE = new TIMESTAMP_UPDATE(); // 18
@Immutable
private static final EnumListenerEvent[] instances =
new EnumListenerEvent[] {AFTER_CREATE, AFTER_UPDATE, AFTER_INVALIDATE, AFTER_DESTROY,
AFTER_REGION_CREATE, AFTER_REGION_INVALIDATE, AFTER_REGION_CLEAR, AFTER_REGION_DESTROY,
AFTER_REMOTE_REGION_CREATE, AFTER_REMOTE_REGION_DEPARTURE, AFTER_REMOTE_REGION_CRASH,
AFTER_ROLE_GAIN, AFTER_ROLE_LOSS, AFTER_REGION_LIVE, AFTER_REGISTER_INSTANTIATOR,
AFTER_REGISTER_DATASERIALIZER, AFTER_TOMBSTONE_EXPIRATION, TIMESTAMP_UPDATE};
static {
for (int i = 0; i < instances.length; i++) {
assert instances[i].getEventCode() == i + 1 : "event is in the wrong place: " + (i + 1);
}
}
private static class AFTER_CREATE extends EnumListenerEvent {
protected AFTER_CREATE() {
super("AFTER_CREATE");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {
listener.afterCreate((EntryEvent) event);
}
@Override
public byte getEventCode() {
return 1;
}
}
private static class AFTER_UPDATE extends EnumListenerEvent {
protected AFTER_UPDATE() {
super("AFTER_UPDATE");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {
listener.afterUpdate((EntryEvent) event);
}
@Override
public byte getEventCode() {
return 2;
}
}
private static class AFTER_INVALIDATE extends EnumListenerEvent {
protected AFTER_INVALIDATE() {
super("AFTER_INVALIDATE");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {
listener.afterInvalidate((EntryEvent) event);
}
@Override
public byte getEventCode() {
return 3;
}
}
private static class AFTER_DESTROY extends EnumListenerEvent {
protected AFTER_DESTROY() {
super("AFTER_DESTROY");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {
listener.afterDestroy((EntryEvent) event);
}
@Override
public byte getEventCode() {
return 4;
}
}
private static class AFTER_REGION_CREATE extends EnumListenerEvent {
protected AFTER_REGION_CREATE() {
super("AFTER_REGION_CREATE");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {
listener.afterRegionCreate((RegionEvent) event);
}
@Override
public byte getEventCode() {
return 5;
}
}
private static class AFTER_REGION_INVALIDATE extends EnumListenerEvent {
protected AFTER_REGION_INVALIDATE() {
super("AFTER_REGION_INVALIDATE");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {
listener.afterRegionInvalidate((RegionEvent) event);
}
@Override
public byte getEventCode() {
return 6;
}
}
private static class AFTER_REGION_CLEAR extends EnumListenerEvent {
protected AFTER_REGION_CLEAR() {
super("AFTER_REGION_CLEAR");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {
listener.afterRegionClear((RegionEvent) event);
}
@Override
public byte getEventCode() {
return 7;
}
}
private static class AFTER_REGION_DESTROY extends EnumListenerEvent {
protected AFTER_REGION_DESTROY() {
super("AFTER_REGION_DESTROY");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {
listener.afterRegionDestroy((RegionEvent) event);
// only now is the right time to call close() on the listener
((LocalRegion) event.getRegion()).closeCacheCallback(listener);
}
@Override
public byte getEventCode() {
return 8;
}
}
private static class AFTER_REMOTE_REGION_CREATE extends EnumListenerEvent {
protected AFTER_REMOTE_REGION_CREATE() {
super("AFTER_REMOTE_REGION_CREATE");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {
if (listener instanceof RegionMembershipListener) {
((RegionMembershipListener) listener).afterRemoteRegionCreate((RegionEvent) event);
}
}
@Override
public byte getEventCode() {
return 9;
}
}
private static class AFTER_REMOTE_REGION_DEPARTURE extends EnumListenerEvent {
protected AFTER_REMOTE_REGION_DEPARTURE() {
super("AFTER_REMOTE_REGION_DEPARTURE");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {
if (listener instanceof RegionMembershipListener) {
((RegionMembershipListener) listener).afterRemoteRegionDeparture((RegionEvent) event);
}
}
@Override
public byte getEventCode() {
return 10;
}
}
private static class AFTER_REMOTE_REGION_CRASH extends EnumListenerEvent {
protected AFTER_REMOTE_REGION_CRASH() {
super("AFTER_REMOTE_REGION_CRASH");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {
if (listener instanceof RegionMembershipListener) {
((RegionMembershipListener) listener).afterRemoteRegionCrash((RegionEvent) event);
}
}
@Override
public byte getEventCode() {
return 11;
}
}
private static class AFTER_ROLE_GAIN extends EnumListenerEvent {
protected AFTER_ROLE_GAIN() {
super("AFTER_ROLE_GAIN");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {
if (listener instanceof RegionRoleListener) {
((RegionRoleListener) listener).afterRoleGain((RoleEvent) event);
}
}
@Override
public byte getEventCode() {
return 12;
}
}
private static class AFTER_ROLE_LOSS extends EnumListenerEvent {
protected AFTER_ROLE_LOSS() {
super("AFTER_ROLE_LOSS");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {
if (listener instanceof RegionRoleListener) {
((RegionRoleListener) listener).afterRoleLoss((RoleEvent) event);
}
}
@Override
public byte getEventCode() {
return 13;
}
}
private static class AFTER_REGION_LIVE extends EnumListenerEvent {
protected AFTER_REGION_LIVE() {
super("AFTER_REGION_LIVE");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {
listener.afterRegionLive((RegionEvent) event);
}
@Override
public byte getEventCode() {
return 14;
}
}
private static class AFTER_REGISTER_INSTANTIATOR extends EnumListenerEvent {
protected AFTER_REGISTER_INSTANTIATOR() {
super("AFTER_REGISTER_INSTANTIATOR");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {}
@Override
public byte getEventCode() {
return 15;
}
}
private static class AFTER_REGISTER_DATASERIALIZER extends EnumListenerEvent {
protected AFTER_REGISTER_DATASERIALIZER() {
super("AFTER_REGISTER_DATASERIALIZER");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {}
@Override
public byte getEventCode() {
return 16;
}
}
private static class AFTER_TOMBSTONE_EXPIRATION extends EnumListenerEvent {
protected AFTER_TOMBSTONE_EXPIRATION() {
super("AFTER_TOMBSTONE_EXPIRATION");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {}
@Override
public byte getEventCode() {
return 17;
}
}
private static class TIMESTAMP_UPDATE extends EnumListenerEvent {
protected TIMESTAMP_UPDATE() {
super("TIMESTAMP_UPDATE");
}
@Override
public void dispatchEvent(CacheEvent event, CacheListener listener) {}
@Override
public byte getEventCode() {
return 18;
}
}
/**
*
* This method returns the EnumListenerEvent object corresponding to the cCode given.
*
* The mapping of cCode to EnumListenerEvent is :
* <ul>
* <li>1 - AFTER_CREATE
* <li>2 - AFTER_UPDATE
* <li>3 - AFTER_INVALIDATE
* <li>4 - AFTER_DESTROY
* <li>5 - AFTER_REGION_CREATE
* <li>6 - AFTER_REGION_INVALIDATE
* <li>7 - AFTER_REGION_CLEAR
* <li>8 - AFTER_REGION_DESTROY
* <li>9 - AFTER_REMOTE_REGION_CREATE
* <li>10 - AFTER_REMOTE_REGION_DEPARTURE
* <li>11 - AFTER_REMOTE_REGION_CRASH
* <li>12 - AFTER_ROLE_GAIN
* <li>13 - AFTER_ROLE_LOSS
* <li>14 - AFTER_REGION_LIVE
* <li>15 - AFTER_REGISTER_INSTANTIATOR
* <li>16 - AFTER_REGISTER_DATASERIALIZER
* <li>17 - AFTER_TOMBSTONE_EXPIRATION
* </ul>
*
* @param eventCode the eventCode corresponding to the EnumListenerEvent object desired
* @return the EnumListenerEvent object corresponding to the cCode
*/
public static EnumListenerEvent getEnumListenerEvent(int eventCode) {
if (eventCode > 0 && eventCode <= instances.length) {
return instances[eventCode - 1];
}
return null;
}
}