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 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(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  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)
        Description copied from interface: Nameable
        Sets the (preferably application unique) name for this component.
        Specified by:
        setName in interface  Nameable
        Parameters:
        name - the preferably application unique name for this component.
      • 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