Class ThreadLocalTenantGate


  • public abstract class ThreadLocalTenantGate
    extends Object
    A wrapper around a thread-local flag which indicates if the current thread has a permit to access tenanted resources regardless of the state of the TenantRegistry.
    Since:
    7.5
    • Constructor Detail

      • ThreadLocalTenantGate

        public ThreadLocalTenantGate()
    • Method Detail

      • hasTenantPermit

        public static boolean hasTenantPermit()
      • wrap

        public static <T> Callable<T> wrap​(boolean permitted,
                                           Callable<T> callback)
      • withTenantPermit

        public static <T> Callable<T> withTenantPermit​(Callable<T> callback)
        Open all gates for the given closure on the current thread.

        This only makes sense in a pre-tenanted state, e.g. during setup allow code to prepare the database before it's made available to a broader audience.

        Parameters:
        callback - the function allowed to pass through the gate
        Returns:
        the permitted function
      • withoutTenantPermit

        public static <T> Callable<T> withoutTenantPermit​(Callable<T> callback)
        Close all gates for the given closure on the current thread.

        This only makes sense in a pre-tenanted state, if you want to ensure that the given code can not access tenanted resources even though an outer closure might have granted that access, e.g. loading DefaultPluginManager.earlyStartup() plugins which should not be able to eagerly access tenanted resources.

        Parameters:
        callback - the function allowed to pass through the gate
        Returns:
        the permitted function