Jetspeed Proposal: 0002
LAST MODIFIED: $Date: 2000/12/22 13:26:08 $
AUTHOR:  burton@apache.org
STATUS: DONE

********************************************************************************
* WARNING:  THIS DOCUMENT WAS INITIALLY A PROPOSAL.  PLEASE CHECK THE DATE AS  *
* THIS MAY HAVE BECOME OLD.                                                    * 
********************************************************************************

The recent OCS and RSS expiration problems (remote RSS URLs reporting
incorrect 
'Last-Modified' info) prompted this e-mail.  It is a new mechanism to
expire content.  Not really new but like a next generation.

--- Java changes --

// new interface

/**
I don't think I like name... someone propose another one please
*/
public interface Expire {
  
  /**
  Return true if this object has expired.
  */
  public boolean isExpired();
  
  public long getCreationTime();

  public void setProperty( String name, String value );

  public String getProperty( String name )

}

//changes to Cacheable
- public boolean expire() 

+ public Expire getExpire()
+ public void setExpire( Expire expire );

//implementations of Expire

- NoExpire //doesn't do anything.
- FileWatchExpire //isExpired() returns true if a URL it is watching
(usually local, in the cache) has changed
- StandardExpire //would implement the OCS version of expiration.. IE
the default.

-- XML changes --

We should mirror the OCS expiration.  It is totally fine for our
purposes.  This would be in registry markup.

<expire period="hourly" frequency="1"/>
        
The PortletFactory would respect these settings.  It will expire if it
goes past 

The ocs.xsl file would use the OCS info to produce an <expire> element
in registry PSML.

This should fix all our problems with OCS portlets not getting updated
and also provide deployment time expiration (so you don't have to code
it into the Portlet if you don't want to).

A lot of things will break because of this... I only want to do it
once.  If you have any suggestions let us know.

BTW.  I am glad this happened.  I didn't like our expiration mechanism
impl. 
