package com.voxeo.moho.presence.impl; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import com.voxeo.moho.presence.PresenceStore; import com.voxeo.moho.presence.StoreRetrieveListener; public abstract class AbstractPresenceStore implements PresenceStore { private Map<Class<?>, StoreRetrieveListener<?>> _listeners = new ConcurrentHashMap<Class<?>, StoreRetrieveListener<?>>(); @Override public <T> void addRetrieveListener(Class<?> clazz, StoreRetrieveListener<T> listener) { _listeners.put(clazz, listener); } @Override public <T> void removeRetrieveListener(Class<?> clazz) { _listeners.remove(clazz); } protected <T> void triggerRetrieveListener(Class<?> clazz, T resource) { @SuppressWarnings("unchecked") StoreRetrieveListener<T> retrieveListener = (StoreRetrieveListener<T>) _listeners.get(clazz); if (retrieveListener != null) { retrieveListener.onRetrieve(resource); } } }