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();
}