...
- Removal of "EventsPublishing" from uPortal core code base and into AOP advices as EventsPublishing is a cross-cutting concern
- Use AspectJ to completely decouple event handling aspects from the portal core:
Code Block Initial, brainstorm with the following infrastructure: - Abstract aspect to capture the the event handling protocol - Subaspects for each type of event This will be a true modular and non-intrusive solution completely decoupled from the core. Could even be compiled into a reusable aspect library and applied to the uP core as needed (LTW, etc.) public abstract aspect AbstractPortalEventHandler { abstract pointcut eventBoundary(Object eventSource); after(Object eventSource) : eventBoundary(eventSource) { handleEvent(eventSource); } protected abstract void handleEvent(Object eventSource); } ... and then have subaspects like: public aspect XxxPortalEventHandler extends AbstractPortalEventHandler {...}
What's Currently Included in the Patch
- Modifications to core code base to call Spring Events Publisher instead of StatsRecorder
- Addition of EventListener to capture PortalEvents
- All StatsRecorder methods have been mapped to appropriate PortalEvent
- ThreadedEventListener to mimic ThreadPool StatsRecorder
- SimpleEventListener for when threads are not needed (probably most cases)
- IStatsRecorderEventHandlerAdapter to convert a current StatsRecorder implementation to be used with the new system
- LoggingEventHandler to mimic behavior of LoggingStatsRecorder
- PrintingEventHandler to mimic behavior of PrintingStatsRecorder
NOTE: This patch was created from HEAD a couple of weeks ago. Its also slightly overzealous in its removal of classes that would probably most benefit from deprecation.