Class Caches


  • public class Caches
    extends java.lang.Object
    Static utility/helper factory methods for building CacheManagers and their associated cache regions, suitable for SINGLE-JVM APPLICATIONS.

    If your application is deployed on multiple JVMs (e.g. a distributed/clustered web app), you might not want to use the builders here and instead implement the CacheManager API directly to use your distributed/clustered cache technology of choice.

    See the CacheManagerBuilder JavaDoc for more information the effects of caching in single-jvm vs distributed-jvm applications.

    Usage Example

     import static com.okta.sdk.cache.Caches.*;
    
     ...
    
     Caches.newCacheManager()
         .withDefaultTimeToLive(1, TimeUnit.DAYS) //general default
         .withDefaultTimeToIdle(2, TimeUnit.HOURS) //general default
         .withCache(forResource(Account.class) //Account-specific cache settings
             .withTimeToLive(1, TimeUnit.HOURS)
             .withTimeToIdle(30, TimeUnit.MINUTES))
         .withCache(forResource(Group.class) //Group-specific cache settings
             .withTimeToLive(2, TimeUnit.HOURS))
    
         // ... etc ...
    
         .build(); //build the CacheManager
     

    The above TTL and TTI times are just examples showing API usage - the times themselves are not recommendations. Choose TTL and TTI times based on your application requirements.

    Since:
    0.5.0
    • Constructor Detail

      • Caches

        public Caches()
    • Method Detail

      • newCacheManager

        public static CacheManagerBuilder newCacheManager()
        Instantiates a new CacheManagerBuilder suitable for SINGLE-JVM APPLICATIONS. If your application is deployed on multiple JVMs (e.g. for a distributed/clustered web app), you might not want to use this method and instead implement the CacheManager API directly to use your distributed/clustered cache technology of choice.

        See the CacheManagerBuilder JavaDoc for more information the effects of caching in single-jvm vs distributed-jvm applications.

        Returns:
        a new CacheManagerBuilder suitable for SINGLE-JVM APPLICATIONS.
      • newDisabledCacheManager

        public static CacheManager newDisabledCacheManager()
        Instantiates a new CacheManager that disables caching entirely. While production applications will usually enable a working CacheManager, you might configure a disabled CacheManager for your Client when testing or debugging to remove 'moving parts' for better clarity into request/response behavior.
        Returns:
        a new disabled CacheManager instance. All caching
      • forResource

        public static <T extends ResourceCacheConfigurationBuilder forResource​(java.lang.Class<T> clazz)
        Returns a new CacheConfigurationBuilder to configure a cache region that will store data for instances of type clazz.

        This is a convenience method equivalent to named(clazz.getName()), but it could help with readability, for example:

         import static com.okta.sdk.cache.Caches.*
         ...
         newCacheManager()
             .withCache(forResource(Account.class).withTimeToIdle(10, TimeUnit.MINUTES))
             .build();
         
        Type Parameters:
        T - Resource sub-interface
        Parameters:
        clazz - the resource class that will have a backing cache region for storing data of that type
        Returns:
        a new CacheConfigurationBuilder to configure a cache region that will store data for instances of type clazz.
      • named

        public static CacheConfigurationBuilder named​(java.lang.String name)
        Returns a new CacheConfigurationBuilder used to configure a cache region with the specified name. For example:
         import static com.okta.sdk.cache.Caches.*
         ...
         newCacheManager()
             .withCache(named("myCacheRegion").withTimeToIdle(10, TimeUnit.MINUTES))
             .build();
         
        Parameters:
        name - the name of the cache region for which the configuration will apply
        Returns:
        a new CacheConfigurationBuilder used to configure a cache region with the specified name.