Overview

This Service functions as a Template component.

It is written for use in Turbine but it can be used in any container compatible with Avalon's ECM container.

Configuration

First, here is the role configuration.

    
        <role
            name="org.apache.fulcrum.bsf.BSFService"
            shorthand="cache"
            default-class="org.apache.fulcrum.bsf.TurbineBSFService"/>
    
    

And here is the configuration:


    
        <cache cacheInitialSize="20" cacheCheckFrequency="5"/>
    
    

Usage


    GlobalCacheService gs = null;
    try
    {
        /*
         * Look for the item in the cache.
         * If it doesn't exist or the item is stale,
         * the cache will throw an exception.
         */
        gs = (GlobalCacheService)avalonComponentService.lookup(GlobalCacheService.ROLE)

        CachedObject obj = gs.getObject("cached_object");

        data.setMessage( data.getScreen() + " Got " +
            obj.getContents().toString() + " from global cache!" );
    }
    catch(ObjectExpiredException gone)
    {
        /*
         * Add the item to the cache.
         */
        gs.addObject("cached_object",
            new CachedObject("in_the_cache",5000));

        data.setMessage( data.getScreen() +
            " Refreshed/or added new item to" +
            " the cache! Expires in 5 seconds" );
    }

    

You can also place an expiration time on your objects so the Service will automatically remove them when they expire. If you don't specify an expiration time, the Service uses 5 seconds. To see an example, look at the test case CacheTest