listAsync() {
- return PagedConverter
+ return PagedConverterForMergedPagedFlux
.mapPage(PagedConverter.mergePagedFlux(this.manager().resourceManager().resourceGroups().listAsync(),
rg -> inner().listByResourceGroupAsync(rg.name())), this::wrapModel);
}
diff --git a/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/PagedConverterForMergedPagedFlux.java b/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/PagedConverterForMergedPagedFlux.java
new file mode 100644
index 000000000000..134b1c7c83a2
--- /dev/null
+++ b/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/PagedConverterForMergedPagedFlux.java
@@ -0,0 +1,51 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.resourcemanager.network.implementation;
+
+import com.azure.core.http.rest.PagedFlux;
+import com.azure.core.http.rest.PagedResponse;
+import com.azure.core.http.rest.PagedResponseBase;
+import com.azure.core.util.paging.PageRetriever;
+import reactor.core.publisher.Flux;
+
+import java.util.function.Function;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+
+/**
+ * Utility class for conversion of PagedResponse.
+ */
+final class PagedConverterForMergedPagedFlux {
+
+ private PagedConverterForMergedPagedFlux() {
+ }
+
+ /**
+ * Applies map transform to elements of PagedFlux.
+ *
+ * Use this mapPage (not the one in PagedConverter) when the PagedFlux is produced by PagedConverter.mergePagedFlux.
+ *
+ * @param pagedFlux the input of PagedFlux.
+ * @param mapper the map transform of element T to element S.
+ * @param input type of PagedFlux.
+ * @param return type of PagedFlux.
+ * @return the PagedFlux with elements in PagedResponse transformed.
+ */
+ static PagedFlux mapPage(PagedFlux pagedFlux, Function mapper) {
+ Supplier>> provider = () -> (continuationToken, pageSize) -> {
+ // take all the pages, do not use .take(1)
+ Flux> flux
+ = (continuationToken == null) ? pagedFlux.byPage() : pagedFlux.byPage(continuationToken);
+ return flux.map(mapPagedResponse(mapper));
+ };
+ return PagedFlux.create(provider);
+ }
+
+ private static Function, PagedResponse> mapPagedResponse(Function mapper) {
+ return pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(),
+ pagedResponse.getStatusCode(), pagedResponse.getHeaders(),
+ pagedResponse.getValue().stream().map(mapper).collect(Collectors.toList()),
+ pagedResponse.getContinuationToken(), null);
+ }
+}
diff --git a/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/PublicIpAddressImpl.java b/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/PublicIpAddressImpl.java
index 92d0003287e2..26255e6708a3 100644
--- a/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/PublicIpAddressImpl.java
+++ b/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/PublicIpAddressImpl.java
@@ -199,6 +199,7 @@ public Accepted beginCreate() {
dependencyTasksAsync.blockLast();
this.cleanupDnsSettings();
+ this.ensureStaticForStandardSku();
}, this::setInner, Context.NONE);
}
@@ -206,6 +207,7 @@ public Accepted beginCreate() {
@Override
public Mono createResourceAsync() {
this.cleanupDnsSettings();
+ this.ensureStaticForStandardSku();
return this.manager()
.serviceClient()
@@ -226,6 +228,14 @@ private void cleanupDnsSettings() {
}
}
+ private void ensureStaticForStandardSku() {
+ if (this.sku() != null
+ && this.sku() != PublicIPSkuType.BASIC
+ && this.innerModel().publicIpAllocationMethod() == null) {
+ this.withStaticIP();
+ }
+ }
+
private boolean equalsResourceType(String resourceType) {
IpConfigurationInner ipConfig = this.innerModel().ipConfiguration();
if (ipConfig == null || resourceType == null) {
diff --git a/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/VirtualNetworkGatewayConnectionsImpl.java b/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/VirtualNetworkGatewayConnectionsImpl.java
index 2f4ae8a73c45..95ab1f2910aa 100644
--- a/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/VirtualNetworkGatewayConnectionsImpl.java
+++ b/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/VirtualNetworkGatewayConnectionsImpl.java
@@ -80,7 +80,7 @@ public VirtualNetworkGateway parent() {
@Override
public PagedFlux listAsync() {
- return PagedConverter
+ return PagedConverterForMergedPagedFlux
.mapPage(PagedConverter.mergePagedFlux(this.manager().resourceManager().resourceGroups().listAsync(),
rg -> inner().listByResourceGroupAsync(rg.name())), this::wrapModel);
}
diff --git a/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/VirtualNetworkGatewayImpl.java b/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/VirtualNetworkGatewayImpl.java
index 7e2ed33fbe17..63b653ca55fd 100644
--- a/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/VirtualNetworkGatewayImpl.java
+++ b/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/VirtualNetworkGatewayImpl.java
@@ -8,6 +8,7 @@
import com.azure.resourcemanager.network.NetworkManager;
import com.azure.resourcemanager.network.models.BgpSettings;
import com.azure.resourcemanager.network.models.Network;
+import com.azure.resourcemanager.network.models.PublicIPSkuType;
import com.azure.resourcemanager.network.models.PublicIpAddress;
import com.azure.resourcemanager.network.models.TagsObject;
import com.azure.resourcemanager.network.models.VirtualNetworkGateway;
@@ -140,11 +141,22 @@ public VirtualNetworkGatewayImpl withNewPublicIpAddress(Creatable ensureDefaultPipDefinition() {
if (this.creatablePip == null) {
- final String pipName = this.manager().resourceManager().internalContext().randomResourceName("pip", 9);
- this.creatablePip = this.manager()
- .publicIpAddresses()
- .define(pipName)
- .withRegion(this.regionName())
- .withExistingResourceGroup(this.resourceGroupName());
+ this.withNewPublicIpAddress();
}
return this.creatablePip;
}
diff --git a/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/VirtualNetworkGatewaysImpl.java b/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/VirtualNetworkGatewaysImpl.java
index e504ecc08a0e..01848efaa657 100644
--- a/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/VirtualNetworkGatewaysImpl.java
+++ b/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/implementation/VirtualNetworkGatewaysImpl.java
@@ -36,7 +36,7 @@ public PagedIterable list() {
// TODO: Test this
@Override
public PagedFlux listAsync() {
- return PagedConverter
+ return PagedConverterForMergedPagedFlux
.mapPage(PagedConverter.mergePagedFlux(this.manager().resourceManager().resourceGroups().listAsync(),
rg -> inner().listByResourceGroupAsync(rg.name())), this::wrapModel);
}
diff --git a/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/models/PublicIPSkuType.java b/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/models/PublicIPSkuType.java
index 37cc465919bc..62cd62a3585e 100644
--- a/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/models/PublicIPSkuType.java
+++ b/sdk/network/azure-resourcemanager-network/src/main/java/com/azure/resourcemanager/network/models/PublicIPSkuType.java
@@ -19,6 +19,9 @@ public final class PublicIPSkuType {
/** Static value Standard for PublicIPSkuType. */
public static final PublicIPSkuType STANDARD = new PublicIPSkuType(PublicIpAddressSkuName.STANDARD);
+ /** Static value StandardV2 for PublicIPSkuType. */
+ public static final PublicIPSkuType STANDARD_V2 = new PublicIPSkuType(PublicIpAddressSkuName.STANDARD_V2);
+
/** The actual serialized value for a PublicIPSkuType instance. */
private final PublicIpAddressSkuName skuName;
diff --git a/sdk/network/azure-resourcemanager-network/src/test/java/com/azure/resourcemanager/network/NetworkManagementTest.java b/sdk/network/azure-resourcemanager-network/src/test/java/com/azure/resourcemanager/network/NetworkManagementTest.java
index aa426c75480b..edfcbec972b0 100644
--- a/sdk/network/azure-resourcemanager-network/src/test/java/com/azure/resourcemanager/network/NetworkManagementTest.java
+++ b/sdk/network/azure-resourcemanager-network/src/test/java/com/azure/resourcemanager/network/NetworkManagementTest.java
@@ -9,6 +9,7 @@
import com.azure.core.http.policy.HttpLogOptions;
import com.azure.core.http.policy.HttpPipelinePolicy;
import com.azure.core.http.policy.RetryPolicy;
+import com.azure.core.management.exception.ManagementException;
import com.azure.resourcemanager.keyvault.KeyVaultManager;
import com.azure.resourcemanager.msi.MsiManager;
import com.azure.core.management.profile.AzureProfile;
@@ -51,6 +52,10 @@ protected void initializeClients(HttpPipeline httpPipeline, AzureProfile profile
@Override
protected void cleanUpResources() {
- resourceManager.resourceGroups().beginDeleteByName(rgName);
+ try {
+ resourceManager.resourceGroups().beginDeleteByName(rgName);
+ } catch (ManagementException e) {
+ // ignore
+ }
}
}
diff --git a/sdk/network/azure-resourcemanager-network/src/test/java/com/azure/resourcemanager/network/PublicIpAddressTests.java b/sdk/network/azure-resourcemanager-network/src/test/java/com/azure/resourcemanager/network/PublicIpAddressTests.java
new file mode 100644
index 000000000000..4d3a206ffe41
--- /dev/null
+++ b/sdk/network/azure-resourcemanager-network/src/test/java/com/azure/resourcemanager/network/PublicIpAddressTests.java
@@ -0,0 +1,55 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.resourcemanager.network;
+
+import com.azure.core.management.Region;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.resourcemanager.network.models.IpAllocationMethod;
+import com.azure.resourcemanager.network.models.PublicIPSkuType;
+import com.azure.resourcemanager.network.models.PublicIpAddress;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+public class PublicIpAddressTests extends NetworkTests {
+
+ private static final Region REGION = Region.US_WEST3;
+
+ @Test
+ public void testStandardSku() {
+ String pipName = generateRandomResourceName("pip", 10);
+ // STANDARD
+ PublicIpAddress pip = networkManager.publicIpAddresses()
+ .define(pipName)
+ .withRegion(REGION)
+ .withNewResourceGroup(rgName)
+ .withSku(PublicIPSkuType.STANDARD)
+ .create();
+ Assertions.assertEquals(IpAllocationMethod.STATIC, pip.ipAllocationMethod());
+
+ networkManager.publicIpAddresses().deleteById(pip.id());
+
+ // STANDARD_V2
+ pip = networkManager.publicIpAddresses()
+ .define(pipName)
+ .withRegion(REGION)
+ .withExistingResourceGroup(rgName)
+ .withSku(PublicIPSkuType.STANDARD_V2)
+ .create();
+ Assertions.assertEquals(IpAllocationMethod.STATIC, pip.ipAllocationMethod());
+
+ networkManager.publicIpAddresses().deleteById(pip.id());
+
+ // If user explicitly sets "withDynamicIP", SDK will use it to create Public IP Address.
+ // In this case, service will return 400 StandardAndStandardV2SkuPublicIPAddressesMustBeStatic
+ Assertions.assertThrows(ManagementException.class, () -> {
+ PublicIpAddress pipToFail = networkManager.publicIpAddresses()
+ .define(pipName)
+ .withRegion(REGION)
+ .withNewResourceGroup(rgName)
+ .withDynamicIP()
+ .withSku(PublicIPSkuType.STANDARD)
+ .create();
+ });
+ }
+}
diff --git a/sdk/network/azure-resourcemanager-network/src/test/java/com/azure/resourcemanager/network/VirtualNetworkGatewayTests.java b/sdk/network/azure-resourcemanager-network/src/test/java/com/azure/resourcemanager/network/VirtualNetworkGatewayTests.java
new file mode 100644
index 000000000000..ce64b92a6442
--- /dev/null
+++ b/sdk/network/azure-resourcemanager-network/src/test/java/com/azure/resourcemanager/network/VirtualNetworkGatewayTests.java
@@ -0,0 +1,59 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.resourcemanager.network;
+
+import com.azure.core.management.Region;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.resourcemanager.network.models.VirtualNetworkGateway;
+import com.azure.resourcemanager.network.models.VirtualNetworkGatewaySkuName;
+import com.azure.resourcemanager.resources.fluentcore.arm.models.HasName;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+public class VirtualNetworkGatewayTests extends NetworkTests {
+
+ private static final Region REGION = Region.US_WEST3;
+
+ @Test
+ public void testListBySubscription() {
+ String group1 = rgName;
+ String group2 = generateRandomResourceName("rg2", 15);
+ String gatewayName1 = generateRandomResourceName("vngw1", 15);
+ String gatewayName2 = generateRandomResourceName("vngw2", 15);
+
+ try {
+ VirtualNetworkGateway gateway1 = createVirtualNetworkGateway(group1, gatewayName1);
+ VirtualNetworkGateway gateway2 = createVirtualNetworkGateway(group2, gatewayName2);
+
+ List gatewayList
+ = networkManager.virtualNetworkGateways().list().stream().collect(Collectors.toList());
+ Assertions.assertTrue(gatewayList.size() >= 2);
+ Set gatewayNames = gatewayList.stream().map(HasName::name).collect(Collectors.toSet());
+ Assertions.assertTrue(gatewayNames.containsAll(Arrays.asList(gatewayName1, gatewayName2)));
+ } finally {
+ // group1 would be deleted in cleanUpResources
+ try {
+ resourceManager.resourceGroups().beginDeleteByName(group2);
+ } catch (ManagementException e) {
+ // ignore
+ }
+ }
+ }
+
+ private VirtualNetworkGateway createVirtualNetworkGateway(String groupName, String name) {
+ return networkManager.virtualNetworkGateways()
+ .define(name)
+ .withRegion(REGION)
+ .withNewResourceGroup(groupName)
+ .withNewNetwork("10.0.0.0/25", "10.0.0.0/27")
+ .withRouteBasedVpn()
+ .withSku(VirtualNetworkGatewaySkuName.BASIC)
+ .create();
+ }
+}
diff --git a/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md b/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md
index 8282ee4762c9..cbf817b54da4 100644
--- a/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md
+++ b/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md
@@ -14,6 +14,16 @@
- Updated `api-version` to `2025-01-01`.
+#### Features Added
+
+- Added `STANDARD_V2` to `PublicIPSkuType`.
+
+#### Bugs Fixed
+
+- Fixed the bug that `list()` in `LocalNetworkGateways`, `VirtualNetworkGateways`, `VirtualNetworkGatewayConnections` only return resources from 1 resource group.
+- Improved `VirtualNetworkGateway` to create Public IP Address with Standard SKU (unless the gateway is Basic SKU).
+- Improved `PublicIpAddress` to set the public IP allocation method to Static (unless the Public IP Address is Basic SKU).
+
### azure-resourcemanager-containerservice
#### Dependency Updates
diff --git a/sdk/resourcemanager/azure-resourcemanager/assets.json b/sdk/resourcemanager/azure-resourcemanager/assets.json
index b65edcc38f64..49b27c3a32a3 100644
--- a/sdk/resourcemanager/azure-resourcemanager/assets.json
+++ b/sdk/resourcemanager/azure-resourcemanager/assets.json
@@ -2,5 +2,5 @@
"AssetsRepo": "Azure/azure-sdk-assets",
"AssetsRepoPrefixPath": "java",
"TagPrefix": "java/resourcemanager/azure-resourcemanager",
- "Tag": "java/resourcemanager/azure-resourcemanager_4644dcbbc3"
+ "Tag": "java/resourcemanager/azure-resourcemanager_9fd99177f1"
}
diff --git a/sdk/resourcemanager/azure-resourcemanager/pom.xml b/sdk/resourcemanager/azure-resourcemanager/pom.xml
index ea52f1c18f9f..36e397a213d6 100644
--- a/sdk/resourcemanager/azure-resourcemanager/pom.xml
+++ b/sdk/resourcemanager/azure-resourcemanager/pom.xml
@@ -107,7 +107,7 @@
com.azure.resourcemanager
azure-resourcemanager-network
- 2.55.0
+ 2.56.0
com.azure.resourcemanager
diff --git a/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestTemplate.java b/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestTemplate.java
index c48a1b7866ac..b2068803bbb5 100644
--- a/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestTemplate.java
+++ b/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestTemplate.java
@@ -131,13 +131,11 @@ public void runTest(CollectionT collection, ResourceGroups resourceGroups) throw
print(this.resource);
boolean failedUpdate = false;
- String message = "Update Failed";
// Verify update
try {
this.resource = updateResource(this.resource);
Assertions.assertNotNull(this.resource);
LOGGER.log(LogLevel.VERBOSE, () -> "\n------------\nUpdated resource:\n");
- message = "Print failed";
print(this.resource);
} catch (Exception e) {
LOGGER.log(LogLevel.VERBOSE, () -> "Update failed", e);
@@ -147,13 +145,12 @@ public void runTest(CollectionT collection, ResourceGroups resourceGroups) throw
// Verify deletion
boolean failedDelete = false;
try {
- message = "Delete failed";
verifyDeleting();
} catch (Exception e) {
LOGGER.log(LogLevel.VERBOSE, () -> "Delete failed", e);
failedDelete = true;
}
- Assertions.assertFalse(failedUpdate, message);
- Assertions.assertFalse(failedDelete, message);
+ Assertions.assertFalse(failedUpdate, "Update Failed");
+ Assertions.assertFalse(failedDelete, "Delete failed");
}
}
diff --git a/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualNetworkGateway.java b/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualNetworkGateway.java
index 40cd041a0bc0..259dba7738e8 100644
--- a/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualNetworkGateway.java
+++ b/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualNetworkGateway.java
@@ -82,7 +82,7 @@ public VirtualNetworkGateway updateResource(VirtualNetworkGateway resource) thro
.apply();
resource.refresh();
Assertions.assertTrue(resource.tags().containsKey("tag2"));
- Assertions.assertTrue(!resource.tags().containsKey("tag1"));
+ Assertions.assertFalse(resource.tags().containsKey("tag1"));
Map tagsMap = new HashMap<>();
tagsMap.put("tag3", "value3");
diff --git a/sdk/resources/azure-resourcemanager-resources/src/main/java/com/azure/resourcemanager/resources/fluentcore/utils/PagedConverter.java b/sdk/resources/azure-resourcemanager-resources/src/main/java/com/azure/resourcemanager/resources/fluentcore/utils/PagedConverter.java
index c8792ea97f64..2906f3011c2b 100644
--- a/sdk/resources/azure-resourcemanager-resources/src/main/java/com/azure/resourcemanager/resources/fluentcore/utils/PagedConverter.java
+++ b/sdk/resources/azure-resourcemanager-resources/src/main/java/com/azure/resourcemanager/resources/fluentcore/utils/PagedConverter.java
@@ -43,6 +43,9 @@ public static PagedIterable mapPage(PagedIterable pageIterable, Fun
/**
* Applies map transform to elements of PagedFlux.
+ *
+ * Do not use it over PagedFlux generated from mergePagedFlux, as the continuationToken in that case cannot be used
+ * to continue the outer PagedFlux.
*
* @param pagedFlux the input of PagedFlux.
* @param mapper the map transform of element T to element S.
diff --git a/sdk/resources/azure-resourcemanager-resources/src/test/java/com/azure/resourcemanager/resources/fluentcore/utils/PagedConverterTests.java b/sdk/resources/azure-resourcemanager-resources/src/test/java/com/azure/resourcemanager/resources/fluentcore/utils/PagedConverterTests.java
index ce460056f3a6..7d9417749a4e 100644
--- a/sdk/resources/azure-resourcemanager-resources/src/test/java/com/azure/resourcemanager/resources/fluentcore/utils/PagedConverterTests.java
+++ b/sdk/resources/azure-resourcemanager-resources/src/test/java/com/azure/resourcemanager/resources/fluentcore/utils/PagedConverterTests.java
@@ -122,6 +122,18 @@ public void testMergePagedFlux() {
Assertions.assertEquals(3 * 10, new PagedIterable<>(mergedPagedFlux).stream().count());
}
+ @Disabled("PagedConverter.mapPage should not be used with PagedConverter.mergePagedFlux (see PagedConverter documentation).")
+ @Test
+ public void testMergePagedFluxThenMapPage() {
+ PagedFlux pagedFlux = mockPagedFlux("base", 0, 3, 2);
+ PagedFlux mergedPagedFlux
+ = PagedConverter.mergePagedFlux(pagedFlux, item -> mockPagedFlux(item + "sub", 0, 10, 4));
+
+ PagedIterable iterable
+ = new PagedIterable<>(PagedConverter.mapPage(mergedPagedFlux, Function.identity()));
+ Assertions.assertEquals(3 * 10, iterable.stream().count());
+ }
+
@Test
public void testMergePagedFluxContainsEmptyPage() {
PagedFlux pagedFlux = mockPagedFlux("base", 0, 3, 2);
@@ -252,7 +264,7 @@ private static PagedFlux mockPagedFlux(String prefix, int startInclusive
return pages.get(continuationToken);
};
- return new PagedFlux<>(() -> Mono.just(nextPage.apply(prefix)),
- continuationToken -> Mono.just(nextPage.apply(continuationToken)));
+ return new PagedFlux<>(() -> Mono.justOrEmpty(nextPage.apply(prefix)),
+ continuationToken -> Mono.justOrEmpty(nextPage.apply(continuationToken)));
}
}