package de.persosim.simulator.processing;
/**
* Instances of this interface carry data to update other entities within the
* card according to result of apdu processing. They are stored within the
* ProcessingData and referenced by their type.
*
* This provides a loose coupling between entities defining UpdatePropagation
* types and those who want to provide information within these updates. Also
* this allows the receiving entities to enforce conditions regarding their
* updates or to allow further propagation of this information in order to
* update other entities within the system with the same data.
*
* As an {@link UpdatePropagation} is passed to several entities within the
* system instances of this interface are expected to be immutable.
*
* @author amay
*
*/
public interface UpdatePropagation {
/**
* Returns the class used as key of this update.
*
* Generally this should be this.getClass(). Under some circumstances it may
* be useful to rely on a superclass/super interface as key.
*
* Usage of a key that this instance is not "instanceof" is not allowed.
*
* @return
*/
public Class<? extends UpdatePropagation> getKey();
}