Interface Store<T>


  • @API(status=EXPERIMENTAL,
         since="1.2.3")
    public interface Store<T>
    Experimental feature. Not ready for public usage yet.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Interface Description
      static interface  Store.CloseOnReset
      Any value that implements this interface will automatically be closed when its store goes out of scope.
      static class  Store.StoreFacade  
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      static <T> Store<T> create​(java.lang.Object identifier, Lifespan lifespan, java.util.function.Supplier<T> initialValueSupplier)
      Create a new store for storing and retrieving values and objects in lifecycle hooks and lifecycle-dependent methods.
      static <T> Store<T> free​(java.util.function.Supplier<T> initializer)
      Create a "free" store, i.e. one that lives independently from a test run, property or try.
      T get()  
      static <T> Store<T> get​(java.lang.Object identifier)
      Retrieve a store that must be created somewhere else.
      static <T> Store<T> getOrCreate​(java.lang.Object identifier, Lifespan lifespan, java.util.function.Supplier<T> initialValueSupplier)
      Find an existing store or create a new one if it doesn't exist.
      Lifespan lifespan()  
      void reset()  
      void update​(java.util.function.Function<T,​T> updater)  
    • Method Detail

      • get

        T get()
      • update

        void update​(java.util.function.Function<T,​T> updater)
      • reset

        @API(status=INTERNAL,
             since="1.6.3")
        void reset()
      • create

        static <T> Store<T> create​(java.lang.Object identifier,
                                   Lifespan lifespan,
                                   java.util.function.Supplier<T> initialValueSupplier)
        Create a new store for storing and retrieving values and objects in lifecycle hooks and lifecycle-dependent methods.

        Stores are created with respect to the current test / property. Therefore you _must not save created stores in member variables_, unless the containing object is unique per test / property.

        Type Parameters:
        T - The type of object to store
        Parameters:
        identifier - Any object to identify a store. Must be globally unique and stable, i.e. hashCode and equals must not change.
        lifespan - A stored object's lifespan
        initialValueSupplier - Supplies the value to be used for initializing the store depending on its lifespan
        Returns:
        New store instance
      • getOrCreate

        static <T> Store<T> getOrCreate​(java.lang.Object identifier,
                                        Lifespan lifespan,
                                        java.util.function.Supplier<T> initialValueSupplier)
        Find an existing store or create a new one if it doesn't exist.

        Stores are created with respect to the current test / property. Therefore you _must not save created stores in member variables_, unless the containing object is unique per test / property.

        Type Parameters:
        T - The type of object to store
        Parameters:
        identifier - Any object to identify a store. Must be globally unique and stable, i.e. hashCode and equals must not change.
        lifespan - A stored object's lifespan
        initialValueSupplier - Supplies the value to be used for initializing the store depending on its lifespan
        Returns:
        New or existing store instance
      • get

        static <T> Store<T> get​(java.lang.Object identifier)
        Retrieve a store that must be created somewhere else.
        Type Parameters:
        T - The type of object to store
        Parameters:
        identifier - Any object to identify a store. Must be globally unique and stable, i.e. hashCode and equals must not change.
        Returns:
        Existing store instance
        Throws:
        CannotFindStoreException
      • free

        @API(status=EXPERIMENTAL,
             since="1.5.0")
        static <T> Store<T> free​(java.util.function.Supplier<T> initializer)
        Create a "free" store, i.e. one that lives independently from a test run, property or try.
        Type Parameters:
        T - The type of object to store
        Parameters:
        initializer - Supplies the value to be used for initializing the store depending on its lifespan
        Returns:
        New store instance