The following table shows which actions are associated with each state. An action of {@code Wait} means this method will block until a statetransition occurs, upon which the new state will be evaluated in order to determine how to proceed. If a state transition does not occur in a reasonable time while waiting then no action is taken and a SubsystemException is thrown to indicate the subsystem was unable to be uninstalled. An action of {@code Return} means this method returnsimmediately without taking any other action.
State | Action |
---|---|
{@link State#INSTALLING INSTALLING} | {@code Wait} |
{@link State#INSTALLED INSTALLED} | {@code Uninstall} |
{@link State#INSTALL_FAILED INSTALL_FAILED} | {@code Wait} |
{@link State#RESOLVING RESOLVING} | {@code Wait} |
{@link State#RESOLVED RESOLVED} | {@code Uninstall} |
{@link State#STARTING STARTING} | {@code Wait} |
{@link State#ACTIVE ACTIVE} | {@code Stop}, {@code Uninstall} |
{@link State#STOPPING STOPPING} | {@code Wait} |
{@link State#UNINSTALLING UNINSTALLING} | {@code Wait} |
{@link State#UNINSTALLED UNINSTALLED} | {@code Return} |
All references to changing the state of this subsystem include both changing the state of the subsystem object as well as the state property of the subsystem service registration.
The following steps are required to uninstall this subsystem after being stopped if necessary.
Implementations should be sensitive to the potential for long running operations and periodically check the current thread for interruption, in which case a {@code SubsystemException} with an{@code InterruptedException} as the cause should be thrown. If aninterruption occurs while waiting, this method should terminate immediately. Once the transition to the {@link State#UNINSTALLING UNINSTALLING} state has occurred, however, this method must not terminatedue to an interruption until the uninstall process has completed. @throws SubsystemException If this subsystem fails to uninstall cleanly. @throws SecurityException If the caller does not have the appropriate{@link SubsystemPermission}[this,LIFECYCLE], and the runtime supports permissions.
|
|
|
|