WikiPageEvent extends the abstract class WikiEvent to indicate a change in the state or processing of a WikiPage.
There are two main categories of events:
- Phase Boundary Events
- Those considered as "beginning-of-phase", and those as "end-of-phase" events (as designated by *_BEGIN and *_END), as generated by the WikiEngine. The phases include pre-save, post-save, pre-translate, and post-translate.
- In-Phase Events
- In-phase events are generated as specific events from the PageEventFilter (or elsewhere), on a per-listener basis. There may be many such events during a particular phase.
E.g., a typical event sequence for the pre-translate phase would be:
PRE_TRANSLATE_BEGIN
PRE_TRANSLATE
PRE_TRANSLATE
...
PRE_TRANSLATE_END
There are eighteen WikiPageEvent types (in six groups):
Page locking events#
- WikiPageEvent.PAGE_LOCK
- indicates a page lock event. This is based on events generated by PageManager
- WikiPageEvent.PAGE_UNLOCK
- indicates a page unlock event. This is based on events generated by PageManager
Pre-translate events#
- WikiPageEvent.PRE_TRANSLATE_BEGIN
- indicates the beginning of all wiki pre-translate page events. This is based on events generated by FilterManager
- WikiPageEvent.PRE_TRANSLATE
- indicates a wiki pre-translate page event. This is based on events generated by PageEventFilter
- WikiPageEvent.PRE_TRANSLATE_END
- indicates the end of all wiki pre-translate page events. This is based on events generated by FilterManager
Post-translate events#
- WikiPageEvent.POST_TRANSLATE_BEGIN
- indicates the beginning of all wiki post-translate page events. This is based on events generated by FilterManager
- WikiPageEvent.POST_TRANSLATE
- indicates a wiki post-translate page event. This is based on events generated by PageEventFilter
- WikiPageEvent.POST_TRANSLATE_END
- indicates the end of all wiki post-translate page events. This is based on events generated by FilterManager
Pre-save events#
- WikiPageEvent.PRE_SAVE_BEGIN
- indicates the beginning of all wiki pre-save page events. This is based on events generated by FilterManager
- WikiPageEvent.PRE_SAVE
- indicates a wiki pre-save page event. This is based on events generated by PageEventFilter
- WikiPageEvent.PRE_SAVE_END
- indicates the end of all wiki pre-save page events. This is based on events generated by FilterManager
Post-save events#
- WikiPageEvent.POST_SAVE_BEGIN
- indicates the beginning of all wiki post-save page events. This is based on events generated by FilterManager
- WikiPageEvent.POST_SAVE
- indicates a wiki post-save page event. This is based on events generated by PageEventFilter
- WikiPageEvent.POST_SAVE_END
- indicates the end of all wiki post-save page events. This is based on events generated by FilterManager
Page request events#
- WikiPageEvent.PAGE_REQUESTED
- indicates a wiki page request event (the start of a request). This is based on events generated by WikiServletFilter
- WikiPageEvent.PAGE_DELIVERED
- indicates a wiki page delivery event (the end of a request). This is based on events generated by WikiServletFilter
- WikiPageEvent.PAGE_DELETE_REQUEST
- indicates a wiki page delete event (the beginning of a delete request). This is based on events generated by WikiServletFilter
- WikiPageEvent.PAGE_DELETED
- indicates a wiki page deleted event (after the delete has been completed). This is based on events generated by WikiServletFilter
Notes#
Page Requested and Delivered Events#
These two events are fired once per page request, at the beginning and after delivery of the page (respectively). They are generated by the WikiServletFilter.
Page Lock and Unlock Events#
Page lock and unlock events occur only once during an editing session, so there are no begin and end events. They are generated by the PageManager.
WikiPageEvents#
Other WikiPageEvents include both phase boundary and in-phase events for saving, pre- and post-translating content. These are very noisy event types, but are not fired unless a listener is available. They are generated by the FilterManager, PageEventFilter, and potentially other implementing classes.
Firing Order and Phase Boundaries#
Note that due to the asynchronous nature of event processing, any threads spawned by such events will not necessarily have completed during their specific phase; we can assume only that no more events of that phase will be fired after its *_END event has been fired.
See also: WikiEvent, PageEventFilter, WikiEventListener, WikiEventManager