Class RunLevelControllerImpl

java.lang.Object
org.glassfish.hk2.runlevel.internal.RunLevelControllerImpl
All Implemented Interfaces:
RunLevelController

@Service @ContractsProvided(RunLevelController.class) @Visibility(LOCAL) public class RunLevelControllerImpl extends Object implements RunLevelController
This is the implementation of the RunLevelController
  • Field Details

  • Constructor Details

    • RunLevelControllerImpl

      public RunLevelControllerImpl()
  • Method Details

    • proceedTo

      public void proceedTo(int runLevel)
      Description copied from interface: RunLevelController
      This method will move to the given run level synchronously as per RunLevelController.proceedToAsync(int).
      Specified by:
      proceedTo in interface RunLevelController
      Parameters:
      runLevel - The level that should be proceeded to
    • proceedToAsync

      public RunLevelFuture proceedToAsync(int runLevel) throws CurrentlyRunningException, IllegalStateException
      Description copied from interface: RunLevelController
      Causes this RunLevelController to move to the specified run level for all RunLevel instances, orchestrating the appropriate lifecycle events.

      If the run level specified is the same as the current run level then the RunLevelController may return immediately

      Specified by:
      proceedToAsync in interface RunLevelController
      Parameters:
      runLevel - the run level to move to
      Returns:
      The future that can be used to wait for this object
      Throws:
      CurrentlyRunningException - if there is currently a job running this exception will be thrown with the currently running job
      IllegalStateException - if this method is called when the USE_NO_THREADS policy is in effect
    • getCurrentProceeding

      public RunLevelFuture getCurrentProceeding()
      Description copied from interface: RunLevelController
      This method will return the current proceedTo that the RunLevelController is working on, or it will return null if the controller is not currently moving up or down
      Specified by:
      getCurrentProceeding in interface RunLevelController
      Returns:
      the current job the run level controller is working on or null if the system is not currently in flight
    • cancel

      public void cancel()
      Description copied from interface: RunLevelController
      If there is a current procedure in process this method will get it and cancel it
      Specified by:
      cancel in interface RunLevelController
    • getCurrentRunLevel

      public int getCurrentRunLevel()
      Description copied from interface: RunLevelController
      The current run level state. This represents the last run level successfully achieved by the underlying RunLevelController responsible for this scope.
      Specified by:
      getCurrentRunLevel in interface RunLevelController
      Returns:
      the current run level, or null if no run level has been been achieved
    • setMaximumUseableThreads

      public void setMaximumUseableThreads(int maximumThreads)
      Description copied from interface: RunLevelController
      This sets the maximum number of threads that the system can create for creation and/or destruction of threads. This number must be one or greater
      Specified by:
      setMaximumUseableThreads in interface RunLevelController
      Parameters:
      maximumThreads - The maximum number of threads that can be used by the system for creation or destruction of services
    • getMaximumUseableThreads

      public int getMaximumUseableThreads()
      Description copied from interface: RunLevelController
      Returns the current number of maximum useable threads
      Specified by:
      getMaximumUseableThreads in interface RunLevelController
      Returns:
      the current number of maximum useable threads
    • setThreadingPolicy

      public void setThreadingPolicy(RunLevelController.ThreadingPolicy policy)
      Description copied from interface: RunLevelController
      Sets the threading policy that will be used by this controller. The values can be:
      1. FULLY_THREADED: Use maximumUseableThreads to complete any task
      2. USE_NO_THREADS: Never create a thread, use the callers thread always
      Specified by:
      setThreadingPolicy in interface RunLevelController
      Parameters:
      policy - The policy that should be used by this controller
    • getThreadingPolicy

      public RunLevelController.ThreadingPolicy getThreadingPolicy()
      Description copied from interface: RunLevelController
      Returns the threading policy currently being used by this controller
      Specified by:
      getThreadingPolicy in interface RunLevelController
      Returns:
      The threading policy currently in use with this controller
    • setExecutor

      public void setExecutor(Executor executor)
      Description copied from interface: RunLevelController
      Sets the executor to use for the next job. This value will be used even if the policy is USE_NO_THREADS in order to support canceling hung threads
      Specified by:
      setExecutor in interface RunLevelController
      Parameters:
      executor - The executor to use for the next job. If null a default executor will be used
    • getExecutor

      public Executor getExecutor()
      Description copied from interface: RunLevelController
      Gets the executor that will be used by the system when executing tasks. This value will be used even if the policy is USE_NO_THREADS in order to support canceling hung threads
      Specified by:
      getExecutor in interface RunLevelController
      Returns:
      The currently installed executor. Will not return null (the default executor implementation will be returned if the user has not supplied an executor)
    • getCancelTimeoutMilliseconds

      public long getCancelTimeoutMilliseconds()
      Description copied from interface: RunLevelController
      Returns the amount of time in milliseconds the run level service will wait after a cancel call before orphaning services that have not yet completed execution
      Specified by:
      getCancelTimeoutMilliseconds in interface RunLevelController
      Returns:
      The amount of time in milliseconds that cancel will wait for running services
    • setCancelTimeoutMilliseconds

      public void setCancelTimeoutMilliseconds(long cancelTimeout)
      Description copied from interface: RunLevelController
      Sets the amount of time in milliseconds the run level service will wait after a cancel call before orphaning services that have not yet completed execution

      The default value is 5000 (5 seconds). In general this value should be set to be longer than than the running time of the longest service that may be cancelled

      Specified by:
      setCancelTimeoutMilliseconds in interface RunLevelController
      Parameters:
      cancelTimeout - The amount of time in milliseconds that cancel will wait for running services. Must be greater than 0
    • getValidationOverride

      public Integer getValidationOverride()
      Description copied from interface: RunLevelController
      Returns the override value for the RunLevel.mode() field in RunLevel services. If this value is non-null then the mode will be forced to this value. This is useful in testing scenarios where the test would like to instantiate a run-level service without having to instantiate all the others at a certain level
      Specified by:
      getValidationOverride in interface RunLevelController
      Returns:
      null if there is no override or the value that the RunLevel.mode() value should be
    • setValidationOverride

      public void setValidationOverride(Integer validationMode)
      Description copied from interface: RunLevelController
      Sets the override value for the RunLevel.mode() field in RunLevel services. If this value is non-null then the mode will be forced to this value. This is useful in testing scenarios where the test would like to instantiate a run-level service without having to instantiate all the others at a certain level
      Specified by:
      setValidationOverride in interface RunLevelController
      Parameters:
      validationMode - null if there is no override or the value that the RunLevel.mode() value should be