Package org.simpleframework.common.lease
Class ContractMaintainer<T>
java.lang.Object
org.simpleframework.common.lease.ContractMaintainer<T>
- All Implemented Interfaces:
ContractController<T>
The
ContractMaintainer
is used provide a controller
uses a cleaner. This simple delegates to the cleaner queue when
a renewal is required. Renewals are performed by revoking the
contract and then reissuing it. This will ensure that the delay
for expiry of the contract is reestablished within the queue.- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final LeaseCleaner
<T> The queue that is used to issue and revoke contracts. -
Constructor Summary
ConstructorsConstructorDescriptionContractMaintainer
(Cleaner<T> cleaner) Constructor for theContractMaintainer
object. -
Method Summary
Modifier and TypeMethodDescriptionvoid
This will cancel the lease and release the resource.void
close()
This method is used to cancel all outstanding leases and to close the controller.void
This method will establish a contract for the given duration.void
This ensures that the contract is renewed for the duration on the contract, which may have changed since it was issued or last renewed.
-
Field Details
-
queue
The queue that is used to issue and revoke contracts.
-
-
Constructor Details
-
ContractMaintainer
Constructor for theContractMaintainer
object. This is used to create a controller for contracts which will ensure that the lease expiry durations are met. All notifications of expiry will be delivered to the provided cleaner instance.- Parameters:
cleaner
- this is used to receive expiry notifications
-
-
Method Details
-
issue
This method will establish a contract for the given duration. If the contract duration expires before it is renewed then a notification is sent, typically to aCleaner
to to signify that the resource should be released. The contract can also be cancelled by providing a zero length duration.- Specified by:
issue
in interfaceContractController<T>
- Parameters:
contract
- a contract representing a leased resource
-
renew
This ensures that the contract is renewed for the duration on the contract, which may have changed since it was issued or last renewed. If the duration on the contract has changed this will insure the previous contract duration is revoked and the new duration is used to maintain the leased resource.- Specified by:
renew
in interfaceContractController<T>
- Parameters:
contract
- a contract representing a leased resource
-
cancel
This will cancel the lease and release the resource. This has the same effect as therenew
method with a zero length duration. Once this has been called theCleaner
used should be notified immediately. If the lease has already expired this throws an exception.- Specified by:
cancel
in interfaceContractController<T>
- Parameters:
contract
- a contract representing a leased resource
-
close
public void close()This method is used to cancel all outstanding leases and to close the controller. Closing the controller ensures that it can no longer be used to issue or renew leases. All resources occupied by the controller are released, including threads, memory, and all leased resources occupied by the instance.- Specified by:
close
in interfaceContractController<T>
- Throws:
LeaseException
- if the controller can not be closed
-