private List<TenantDefinition> readFromJsonResource() {
        return FunctionUtils.doAndHandle((CheckedSupplier<List<TenantDefinition>>) () -> {
            if (ResourceUtils.doesResourceExist(jsonResource)) {
                try (val reader = new InputStreamReader(jsonResource.getInputStream(), StandardCharsets.UTF_8)) {
                    val tenantsList = new TypeReference<List<TenantDefinition>>() {
                    };
                    return objectMapper.readValue(JsonValue.readHjson(reader).toString(), tenantsList);
                }
            }
            return new ArrayList<>();
        }, throwable -> new ArrayList<>()).get();
    }
This is {@link DefaultTenantsManager}.

@author Misagh Moayyed
@since 7.2.0
core/cas-server-core-multitenancy/src/main/java/org/apereo/cas/multitenancy/DefaultTenantsManager.java