Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

  • 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.