There is a need for an application to be notified when an event takes place within a Context. The types of events, the amount of detail, and the level of ubiquity of sensed events are all up for discussion. We will try to explore all these things, and note the desirability of each requirement.
|Different Context||An application with one instance of a Context wants the ability to be notified of events happening to a different instance of that same Context.||2|
|Different JVM||This extends the "Different Context" requirement in that the application wishes to be notified of events happening to a different instance of the Context it holds, even when the other Context(s) is/are exist in a different JVM||2|
|External Changes||This extends the "Different JVM" requirement in that the application wishes to be notified of events happening to data within the Context even if those changes are being made through non-IdAS channels. For example, a Context could hold its data in a file or database. If that file or database is accessed through low-level mechanisms which bypass IdAS, the application still wishes to be notified.||2|
|Update Operations||The application wishes to be notified when updates(changes) happen. This requirement is general (we'll get into the granularity of an update operation later).||1|
|Updated Data||This extends the "Update Operations" requirement in that the application wishes to be notified not only "that an event happened", but also with the details of the event (e.g. if an attribute value changes, the notification could include the old and new value).||3|
|Authentication Operations||The application wishes to be notified when authentication happens (today that's just IContext.open, but there has been talk of some kind of "verifyCredentials" operation as well.||3|
|Query Operations||The application wishes to be notified when search and compare operations happen.||3|
|Detail: Add/Remove Entity||The application wishes to be notified when Entities are added or removed.||1|
|Detail: Add/Remove Attribute||The application wishes to be notified when Attributes are added or removed.||2|
|Detail: Add/Remove Attribute Value||The application wishes to be notified when Attribute values are added or removed.||2|
IEventListener would be extended by specific things like IAddEntityListener, etc.