001package com.nimbusds.jose.jwk.source;
002
003import com.nimbusds.jose.jwk.JWKSet;
004
005
006/**
007 * Evaluates whether a JWK set cache requires refreshing.
008 *
009 * @author Thomas Rørvik Skjølberg
010 * @author Vladimir Dzhuvinov
011 * @version 2024-05-08
012 */
013public abstract class JWKSetCacheRefreshEvaluator {
014        
015        
016        /**
017         * Returns a force-refresh evaluator.
018         *
019         * @return The force-refresh evaluator.
020         */
021        public static JWKSetCacheRefreshEvaluator forceRefresh() {
022                return ForceRefreshJWKSetCacheEvaluator.getInstance();
023        }
024        
025        
026        /**
027         * Returns a no-refresh evaluator.
028         *
029         * @return The no-refresh evaluator.
030         */
031        public static JWKSetCacheRefreshEvaluator noRefresh() {
032                return NoRefreshJWKSetCacheEvaluator.getInstance();
033        }
034        
035        
036        /**
037         * Returns a reference comparison evaluator for the specified JWK set.
038         *
039         * @param jwtSet The JWK set.
040         *
041         * @return The reference comparison evaluator.
042         */
043        public static JWKSetCacheRefreshEvaluator referenceComparison(final JWKSet jwtSet) {
044                return new ReferenceComparisonRefreshJWKSetEvaluator(jwtSet);
045        }
046        
047        
048        /**
049         * Returns {@code true} if refresh of the JWK set is required.
050         *
051         * @param jwkSet The JWK set. Must not be {@code null}.
052         *
053         * @return {@code true} if refresh is required, {@code false} if not.
054         */
055        public abstract boolean requiresRefresh(final JWKSet jwkSet);
056}