001    package net.sf.tacos.annotations;
002    
003    import java.lang.annotation.Target;
004    import java.lang.annotation.ElementType;
005    import java.lang.annotation.Retention;
006    import java.lang.annotation.RetentionPolicy;
007    import java.lang.annotation.Documented;
008    
009    /**
010     * Annotation used on any (non-abstract) page or component method that returns a value.
011     * <p/>
012     * It caches the method result during the current request cycle, meaning that subsequent calls
013     * do not reevaluate the method's body.
014     * 
015     * @author Andreas Andreou
016     */
017    @Target(
018    { ElementType.METHOD })
019    @Retention(RetentionPolicy.RUNTIME)
020    @Documented
021    public @interface Cached {
022    
023        /**
024         * Set to true if you want to reset the cached value when
025         * the rewind ends (and normal rendering starts).<p/>
026         *
027         * This can be helpful when new values should be calculated for the
028         * new rendering (which perhaps didn't exist while rewinding). 
029         * @return
030         */
031        boolean resetAfterRewind() default false;
032    
033    }
034