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}