Class CachingRealm

    • Constructor Detail

      • CachingRealm

        public CachingRealm()
        Default no-argument constructor that defaults cachingEnabled (for general caching) to true and sets a default name based on the class name.

        Note that while in general, caching may be enabled by default, subclasses have control over if specific caching is enabled.

    • Method Detail

      • getCacheManager

        public org.apache.shiro.cache.CacheManager getCacheManager()
        Returns the CacheManager used for data caching to reduce EIS round trips, or null if caching is disabled.
        Returns:
        the CacheManager used for data caching to reduce EIS round trips, or null if caching is disabled.
      • setCacheManager

        public void setCacheManager​(org.apache.shiro.cache.CacheManager cacheManager)
        Sets the CacheManager to be used for data caching to reduce EIS round trips.

        This property is null by default, indicating that caching is turned off.

        Specified by:
        setCacheManager in interface org.apache.shiro.cache.CacheManagerAware
        Parameters:
        cacheManager - the CacheManager to use for data caching, or null to disable caching.
      • isCachingEnabled

        public boolean isCachingEnabled()
        Returns true if caching should be used if a CacheManager has been configured, false otherwise.

        The default value is true since the large majority of Realms will benefit from caching if a CacheManager has been configured. However, memory-only realms should set this value to false since they would manage account data in memory already lookups would already be as efficient as possible.

        Returns:
        true if caching will be globally enabled if a CacheManager has been configured, false otherwise
      • setCachingEnabled

        public void setCachingEnabled​(boolean cachingEnabled)
        Sets whether or not caching should be used if a CacheManager has been configured.
        Parameters:
        cachingEnabled - whether or not to globally enable caching for this realm.
      • getName

        public String getName()
        Description copied from interface: Realm
        Returns the (application-unique) name assigned to this Realm. All realms configured for a single application must have a unique name.
        Specified by:
        getName in interface Realm
        Returns:
        the (application-unique) name assigned to this Realm.
      • setName

        public void setName​(String name)
        Specified by:
        setName in interface org.apache.shiro.util.Nameable
      • afterCacheManagerSet

        protected void afterCacheManagerSet()
        Template method that may be implemented by subclasses should they wish to react to a CacheManager instance being set on the realm instance via the setCacheManager(org.apache.shiro.cache.CacheManager) mutator.
      • clearCache

        protected void clearCache​(PrincipalCollection principals)
        Clears out any cached data associated with the specified account identity/identities.

        This implementation will return quietly if the principals argument is null or empty. Otherwise it delegates to doClearCache(org.apache.shiro.subject.PrincipalCollection).

        Parameters:
        principals - the principals of the account for which to clear any cached data.
        Since:
        1.2
      • doClearCache

        protected void doClearCache​(PrincipalCollection principals)
        This implementation does nothing - it is a template to be overridden by subclasses if necessary.
        Parameters:
        principals - principals the principals of the account for which to clear any cached data.
        Since:
        1.2
      • getAvailablePrincipal

        protected Object getAvailablePrincipal​(PrincipalCollection principals)
        A utility method for subclasses that returns the first available principal of interest to this particular realm. The heuristic used to acquire the principal is as follows:
        • Attempt to get this particular Realm's 'primary' principal in the PrincipalCollection via a principals.fromRealm(getName()) call.
        • If the previous call does not result in any principals, attempt to get the overall 'primary' principal from the PrincipalCollection via PrincipalCollection.getPrimaryPrincipal().
        • If there are no principals from that call (or the PrincipalCollection argument was null to begin with), return null
        Parameters:
        principals - the PrincipalCollection holding all principals (from all realms) associated with a single Subject.
        Returns:
        the 'primary' principal attributed to this particular realm, or the fallback 'master' principal if it exists, or if not null.
        Since:
        1.2