class KsqlCacheAccessValidator implements KsqlAccessValidator {

  @Override
  public void checkAccess(
      final KsqlSecurityContext securityContext,
      final String topicName,
      final AclOperation operation
  ) {
    final CacheKey cacheKey = new CacheKey(securityContext, topicName, operation);
    final CacheValue cacheValue = cache.getUnchecked(cacheKey);
    if (!cacheValue.allowAccess) {
      throw cacheValue.denialReason.get();
    }
  }

  public  KsqlCacheAccessValidator(
      final KsqlConfig ksqlConfig,
      final KsqlAccessValidator backendValidator
  );
  @VisibleForTesting  KsqlCacheAccessValidator(
      final KsqlConfig ksqlConfig,
      final KsqlAccessValidator backendValidator,
      final Ticker cacheTicker
  );

}