diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index f123135e4..cd26f00d1 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -21,7 +21,7 @@ jobs: run: ./run-benchmarks.sh working-directory: ./benchmark - name: Upload Results - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: Benchmark Results path: ./benchmark/jmh-result.json diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 4210ff2f9..9cae77047 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -37,13 +37,13 @@ jobs: shell: cmd if: matrix.os == 'windows-latest' - name: Upload Failed Test Report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: failure() with: name: Failed Test Report path: target/surefire-reports - name: Upload Coverage - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: matrix.os == 'ubuntu-latest' with: name: Coverage Report ${{ matrix.os }} diff --git a/src/main/java/com/aws/greengrass/clientdevices/auth/certificate/infra/BackgroundCertificateRefresh.java b/src/main/java/com/aws/greengrass/clientdevices/auth/certificate/infra/BackgroundCertificateRefresh.java index 3bdc90045..4bd2aa758 100644 --- a/src/main/java/com/aws/greengrass/clientdevices/auth/certificate/infra/BackgroundCertificateRefresh.java +++ b/src/main/java/com/aws/greengrass/clientdevices/auth/certificate/infra/BackgroundCertificateRefresh.java @@ -202,12 +202,12 @@ private Optional> getThingsAssociatedWithCoreDevice() { .build(); try { - Stream> cloudAssociatedDevices = + List cloudAssociatedDevices = RetryUtils.runWithRetry(retryConfig, iotAuthClient::getThingsAssociatedWithCoreDevice, "get-things-associated-with-core-device", logger); Set cloudThings = - cloudAssociatedDevices.flatMap(List::stream).map(AssociatedClientDevice::thingName) + cloudAssociatedDevices.stream().map(AssociatedClientDevice::thingName) .collect(Collectors.toSet()); return Optional.of(cloudThings); diff --git a/src/main/java/com/aws/greengrass/clientdevices/auth/iot/IotAuthClient.java b/src/main/java/com/aws/greengrass/clientdevices/auth/iot/IotAuthClient.java index a4c6ddf27..c3d4adca6 100644 --- a/src/main/java/com/aws/greengrass/clientdevices/auth/iot/IotAuthClient.java +++ b/src/main/java/com/aws/greengrass/clientdevices/auth/iot/IotAuthClient.java @@ -24,7 +24,6 @@ import software.amazon.awssdk.services.greengrassv2.GreengrassV2ClientBuilder; import software.amazon.awssdk.services.greengrassv2.model.AssociatedClientDevice; import software.amazon.awssdk.services.greengrassv2.model.ListClientDevicesAssociatedWithCoreDeviceRequest; -import software.amazon.awssdk.services.greengrassv2.model.ListClientDevicesAssociatedWithCoreDeviceResponse; import software.amazon.awssdk.services.greengrassv2.paginators.ListClientDevicesAssociatedWithCoreDeviceIterable; import software.amazon.awssdk.services.greengrassv2data.GreengrassV2DataClient; import software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException; @@ -37,7 +36,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; -import java.util.stream.Stream; +import java.util.stream.Collectors; import javax.inject.Inject; public interface IotAuthClient { @@ -50,7 +49,7 @@ public interface IotAuthClient { boolean isThingAttachedToCertificate(Thing thing, String certificateId) throws CloudServiceInteractionException; - Stream> getThingsAssociatedWithCoreDevice(); + List getThingsAssociatedWithCoreDevice(); class Default implements IotAuthClient { private static final Logger logger = LogManager.getLogger(Default.class); @@ -184,7 +183,7 @@ public boolean isThingAttachedToCertificate(Thing thing, String certificateId) } @Override - public Stream> getThingsAssociatedWithCoreDevice() { + public List getThingsAssociatedWithCoreDevice() { String thingName = Coerce.toString(deviceConfiguration.getThingName()); ListClientDevicesAssociatedWithCoreDeviceRequest request = @@ -194,8 +193,8 @@ public Stream> getThingsAssociatedWithCoreDevice() ListClientDevicesAssociatedWithCoreDeviceIterable responses = client.listClientDevicesAssociatedWithCoreDevicePaginator(request); - return responses.stream() - .map(ListClientDevicesAssociatedWithCoreDeviceResponse::associatedClientDevices); + return responses.stream().flatMap(response -> response.associatedClientDevices().stream()) + .collect(Collectors.toList()); } } @@ -203,11 +202,10 @@ public Stream> getThingsAssociatedWithCoreDevice() // are adding it here to avoid introducing new changes to the nucleus private GreengrassV2Client getGGV2Client() { String awsRegion = Coerce.toString(deviceConfiguration.getAWSRegion()); - GreengrassV2ClientBuilder clientBuilder = - GreengrassV2Client.builder().httpClientBuilder(ProxyUtils.getSdkHttpClientBuilder() - .useIdleConnectionReaper(false)) - .credentialsProvider(lazyCredentialProvider).overrideConfiguration( - ClientOverrideConfiguration.builder().retryPolicy(RetryMode.STANDARD).build()); + GreengrassV2ClientBuilder clientBuilder = GreengrassV2Client.builder() + .httpClientBuilder(ProxyUtils.getSdkHttpClientBuilder().useIdleConnectionReaper(false)) + .credentialsProvider(lazyCredentialProvider).overrideConfiguration( + ClientOverrideConfiguration.builder().retryPolicy(RetryMode.STANDARD).build()); if (Utils.isEmpty(awsRegion)) { return clientBuilder.build(); diff --git a/src/test/java/com/aws/greengrass/clientdevices/auth/iot/IotAuthClientFake.java b/src/test/java/com/aws/greengrass/clientdevices/auth/iot/IotAuthClientFake.java index 5032e5d8d..069230999 100644 --- a/src/test/java/com/aws/greengrass/clientdevices/auth/iot/IotAuthClientFake.java +++ b/src/test/java/com/aws/greengrass/clientdevices/auth/iot/IotAuthClientFake.java @@ -12,6 +12,7 @@ import java.time.Instant; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -22,7 +23,7 @@ import java.util.Optional; import java.util.Set; import java.util.function.Supplier; -import java.util.stream.Stream; +import java.util.stream.Collectors; /** * IoT Auth Client Fake allows test writers to set up valid and invalid certificates, as well as Thing <-> certificate @@ -126,11 +127,11 @@ public void detachThingFromCore(Supplier thingName) { } @Override - public Stream> getThingsAssociatedWithCoreDevice() { + public List getThingsAssociatedWithCoreDevice() { ThingsAttachedToCorePaginator paginator = new ThingsAttachedToCorePaginator( new ListClientDevicesAssociatedWithCoreDeviceResponseFetcher(this.thingsAttachedToCore)); - return paginator.stream(); + return paginator.stream().flatMap(Collection::stream).collect(Collectors.toList()); } /**