org.simpleframework.util.lease
Class LeaseManager<T>

java.lang.Object
  extended by org.simpleframework.util.lease.LeaseManager<T>
All Implemented Interfaces:
LeaseProvider<T>

public class LeaseManager<T>
extends java.lang.Object
implements LeaseProvider<T>

The LeaseManager is used to issue a lease for a named resource. This is effectively used to issue a request for a keyed resource to be released when a lease has expired. The use of a Lease simplifies the interface to the notification and also enables other objects to manage the lease without any knowledge of the resource it represents.

Author:
Niall Gallagher

Constructor Summary
LeaseManager(Cleaner<T> cleaner)
          Constructor for the LeaseManager object.
 
Method Summary
 void close()
          This is used to close the lease provider such that all of the outstanding leases are canceled.
 Lease<T> lease(T key, long duration, java.util.concurrent.TimeUnit unit)
          This method will issue a Lease object that can be used to manage the release of a keyed resource.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LeaseManager

public LeaseManager(Cleaner<T> cleaner)
Constructor for the LeaseManager object. This instance is created using a specified notification handler. The specified Cleaner will be notified when the lease for a named resource expires, which will allow the cleaner object to perform a clean up for that resource.

Parameters:
cleaner - the cleaner object receiving notifications
Method Detail

lease

public Lease<T> lease(T key,
                      long duration,
                      java.util.concurrent.TimeUnit unit)
This method will issue a Lease object that can be used to manage the release of a keyed resource. If the lease duration expires before it is renewed then the notification is sent, typically to a Cleaner implementation, to signify that the resource should be recovered. The issued lease can also be canceled.

Specified by:
lease in interface LeaseProvider<T>
Parameters:
key - this is the key for the leased resource
duration - this is the duration of the issued lease
unit - this is the time unit to issue the lease with
Returns:
a lease that can be used to manage notification

close

public void close()
This is used to close the lease provider such that all of the outstanding leases are canceled. This also ensures the provider can no longer be used to issue new leases, such that further invocations of the lease method will result in null leases. Once the provider has been closes all threads and other such resources are released.

Specified by:
close in interface LeaseProvider<T>