Hi,

I know you're all really busy right now with the spec updates, but I've got a new extension for possible inclusion into WebBeans, plus a new example app for SE which uses it.

== Quartz Extension ==

WebBeans-Quartz.zip

The extension is a Quartz extension. It basically fires events @Every Second, @Every Minute and @Every Hour, which can be observed like so:

public void updateSomething(@Observes @Every Hour hour) { // blah }

On startup the extension first checks for the presence of observers for each type of event and if there are no observers for a particular type of event, no events will be scheduled.

I intend to extend it by:
1)  introducing a way to define arbitrary schedules (in annotations or in a properties file which is then referenced by name in an annotation - which can then be made typesafe by subclassing the annotation). Eg:

    package org.jboss.webbeans.extension.scheduler;
    public @interface Scheduled {
        String name();
    }
-----------
    public @interface AfterHours extends Scheduled{
         String name() default "afterHours";
    }
-----------
    schedule.properties:
    afterHours=0 1 * * * *
-----------
    public void batchProcess(@Observes @AfterHours Schedule schedule) { ... }

2) Adding whatever is necessary to make this usable in EE environment. Any pointers?

3) Any other suggestions?

== Memory Graph Example ==

MemoryGrapher.zip

This is another Swing based example, which renders a graph of the VM's free memory, updating every second and calling garbage collection every minute using the above extension. It's a nice concise example of how to bootstrap and shutdown SE, how to observe events and how to use the injectable logger. Plus everyone loves a pretty graph!

I know there is some obvious clean up work required, and maybe removing the name Quartz (?) - which I'm happy to do prior to checking in.

What do you think?


Pete.