public ProgressEvent listKeysAndFilterByMetadata()

in common/src/main/java/software/amazon/kms/common/KeyHandlerHelper.java [339:366]


    public ProgressEvent<M, C> listKeysAndFilterByMetadata(
        final ProxyClient<KmsClient> proxyClient,
        final String nextToken,
        final Function<KeyMetadata, Boolean> filterFunction
    ) {
        final ListKeysResponse listKeysResponse =
            keyApiHelper.listKeys(keyTranslator.listKeysRequest(nextToken), proxyClient);

        final List<M> models = listKeysResponse.keys().stream()
            .filter(key -> {
                final KeyMetadata keyMetadata = keyApiHelper
                    .describeKey(keyTranslator.describeKeyRequest(key.keyArn()), proxyClient)
                    .keyMetadata();

                // Apply our metadata filter, and remove any pending deletion keys
                return filterFunction.apply(keyMetadata) &&
                    !keyMetadata.keyState().equals(KeyState.PENDING_DELETION) &&
                    !keyMetadata.keyState().equals(KeyState.PENDING_REPLICA_DELETION);
            })
            .map(keyTranslator::translateKeyListEntry)
            .collect(Collectors.toList());

        return ProgressEvent.<M, C>builder()
            .resourceModels(models)
            .nextToken(listKeysResponse.nextMarker())
            .status(OperationStatus.SUCCESS)
            .build();
    }