diff --git a/sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration/FeatureFlagConfigurationSettingSample.java b/sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration/FeatureFlagConfigurationSettingSample.java new file mode 100644 index 0000000000000..0e2805e9a75fb --- /dev/null +++ b/sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration/FeatureFlagConfigurationSettingSample.java @@ -0,0 +1,89 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.data.appconfiguration; + +import com.azure.core.http.rest.PagedIterable; +import com.azure.data.appconfiguration.models.ConfigurationSetting; +import com.azure.data.appconfiguration.models.FeatureFlagConfigurationSetting; +import com.azure.data.appconfiguration.models.FeatureFlagFilter; +import com.azure.data.appconfiguration.models.SettingSelector; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * Sample demonstrates how to add, get, list, and delete a feature flag configuration setting. + */ +public class FeatureFlagConfigurationSettingSample { + /** + * Runs the sample algorithm and demonstrates how to add, get, list, and delete a feature flag configuration + * setting. + * + * @param args Unused. Arguments to the program. + */ + public static void main(String[] args) { + // The connection string value can be obtained by going to your App Configuration instance in the Azure portal + // and navigating to "Access Keys" page under the "Settings" section. + String connectionString = "endpoint={endpoint_value};id={id_value};secret={secret_value}"; + final ConfigurationClient client = new ConfigurationClientBuilder() + .connectionString(connectionString) + .buildClient(); + + // Name of the key to add to the configuration service. + final String key = "hello"; + + System.out.println("Beginning of synchronous sample..."); + + FeatureFlagFilter percentageFilter = new FeatureFlagFilter("Microsoft.Percentage") + .addParameter("Value", 30); + FeatureFlagConfigurationSetting featureFlagConfigurationSetting = + new FeatureFlagConfigurationSetting(key, true) + .setClientFilters(Arrays.asList(percentageFilter)); + + // setConfigurationSetting adds or updates a setting to Azure App Configuration store. Alternatively, you can + // call addConfigurationSetting which only succeeds if the setting does not exist in the store. Or, + // you can call setConfigurationSetting to update a setting that is already present in the store. + System.out.println("[Set-FeatureFlagConfigurationSetting]"); + FeatureFlagConfigurationSetting setting = + (FeatureFlagConfigurationSetting) client.setConfigurationSetting(featureFlagConfigurationSetting); + printFeatureFlagSetting(setting); + + System.out.println("[Get-FeatureFlagConfigurationSetting]"); + setting = (FeatureFlagConfigurationSetting) client.getConfigurationSetting(setting); + printFeatureFlagSetting(setting); + + System.out.println("[List-FeatureFlagConfigurationSetting]"); + PagedIterable configurationSettings = + client.listConfigurationSettings(new SettingSelector()); + for (ConfigurationSetting configurationSetting : configurationSettings) { + if (configurationSetting instanceof FeatureFlagConfigurationSetting) { + System.out.println("-Listing-FeatureFlagConfigurationSetting"); + printFeatureFlagSetting((FeatureFlagConfigurationSetting) configurationSetting); + } else { + System.out.println("-Listing-non-FeatureFlagConfigurationSetting"); + System.out.printf("Key: %s, Value: %s%n", configurationSetting.getKey(), + configurationSetting.getValue()); + } + } + + System.out.println("[Delete-FeatureFlagConfigurationSetting"); + setting = (FeatureFlagConfigurationSetting) client.deleteConfigurationSetting(setting); + printFeatureFlagSetting(setting); + + System.out.println("End of synchronous sample."); + } + + private static void printFeatureFlagSetting(FeatureFlagConfigurationSetting setting) { + System.out.printf("Key: %s, Value: %s%n", setting.getKey(), setting.getValue()); + System.out.printf("\tFeature ID: %s, Content Type: %s%n", setting.getFeatureId(), setting.getContentType()); + final List clientFilters = setting.getClientFilters(); + for (FeatureFlagFilter filter : clientFilters) { + System.out.printf("\t\tFilter name: %s%n", filter.getName()); + final Map parameters = filter.getParameters(); + System.out.println("\t\t\tParameters:"); + parameters.forEach((k, v) -> System.out.printf("\t\t\t\tKey: %s, Value:%s%n", k, v)); + } + } +} diff --git a/sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration/FeatureFlagConfigurationSettingSampleAsync.java b/sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration/FeatureFlagConfigurationSettingSampleAsync.java new file mode 100644 index 0000000000000..bd6e8578ebf65 --- /dev/null +++ b/sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration/FeatureFlagConfigurationSettingSampleAsync.java @@ -0,0 +1,105 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.data.appconfiguration; + +import com.azure.data.appconfiguration.models.FeatureFlagConfigurationSetting; +import com.azure.data.appconfiguration.models.FeatureFlagFilter; +import com.azure.data.appconfiguration.models.SettingSelector; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +/** + * Sample demonstrates how to add, get, list, and delete a feature flag configuration setting asynchronous. + */ +public class FeatureFlagConfigurationSettingSampleAsync { + /** + * Runs the sample algorithm and demonstrates how to add, get, list, and delete a feature flag configuration + * setting asynchronous. + * + * @param args Unused. Arguments to the program. + * @throws InterruptedException when a thread is waiting, sleeping, or otherwise occupied, + * and the thread is interrupted, either before or during the activity. + */ + public static void main(String[] args) throws InterruptedException { + // The connection string value can be obtained by going to your App Configuration instance in the Azure portal + // and navigating to "Access Keys" page under the "Settings" section. + String connectionString = "endpoint={endpoint_value};id={id_value};secret={secret_value}"; + + // Asynchronous sample + // Instantiate a client that will be used to call the service. + final ConfigurationAsyncClient client = new ConfigurationClientBuilder() + .connectionString(connectionString) + .buildAsyncClient(); + + // Name of the key to add to the configuration service. + final String key = "hello"; + + System.out.println("Beginning of asynchronous sample..."); + + FeatureFlagFilter percentageFilter = new FeatureFlagFilter("Microsoft.Percentage") + .addParameter("Value", 30); + FeatureFlagConfigurationSetting featureFlagConfigurationSetting = + new FeatureFlagConfigurationSetting(key, true) + .setClientFilters(Arrays.asList(percentageFilter)); + + // setConfigurationSetting adds or updates a setting to Azure App Configuration store. Alternatively, you can + // call addConfigurationSetting which only succeeds if the setting does not exist in the store. Or, + // you can call setConfigurationSetting to update a setting that is already present in the store. + + // We subscribe and wait for the service call to complete then print out the contents of our newly added setting. + // If an error occurs, we print out that error. + System.out.println("[Set-SecretReferenceConfigurationSetting]"); + client.setConfigurationSetting(featureFlagConfigurationSetting).subscribe( + result -> printFeatureFlagSetting((FeatureFlagConfigurationSetting) result), + error -> System.err.println("There was an error adding the setting: " + error), + () -> System.out.println("Set setting finished")); + TimeUnit.MILLISECONDS.sleep(1000); + + System.out.println("[Get-FeatureFlagConfigurationSetting]"); + client.getConfigurationSetting(featureFlagConfigurationSetting).subscribe( + result -> printFeatureFlagSetting((FeatureFlagConfigurationSetting) result), + error -> System.err.println("There was an error getting the setting: " + error), + () -> System.out.println("Get setting finished")); + TimeUnit.MILLISECONDS.sleep(1000); + + System.out.println("[List-FeatureFlagConfigurationSetting]"); + client.listConfigurationSettings(new SettingSelector()).subscribe( + result -> { + if (result instanceof FeatureFlagConfigurationSetting) { + System.out.println("-Listing-FeatureFlagConfigurationSetting"); + printFeatureFlagSetting((FeatureFlagConfigurationSetting) result); + } else { + System.out.println("-Listing-non-FeatureFlagConfigurationSetting"); + System.out.printf("Key: %s, Value: %s%n", result.getKey(), result.getValue()); + } + }, + error -> System.err.println("There was an error adding the setting: " + error), + () -> System.out.println("List settings finished")); + TimeUnit.MILLISECONDS.sleep(1000); + + System.out.println("[Delete-FeatureFlagConfigurationSetting"); + client.getConfigurationSetting(featureFlagConfigurationSetting).subscribe( + result -> printFeatureFlagSetting((FeatureFlagConfigurationSetting) result), + error -> System.err.println("There was an error getting the setting: " + error), + () -> System.out.println("Delete setting finished")); + TimeUnit.MILLISECONDS.sleep(1000); + + System.out.println("End of asynchronous sample."); + } + + private static void printFeatureFlagSetting(FeatureFlagConfigurationSetting setting) { + System.out.printf("Key: %s, Value: %s%n", setting.getKey(), setting.getValue()); + System.out.printf("\tFeature ID: %s, Content Type: %s%n", setting.getFeatureId(), setting.getContentType()); + final List clientFilters = setting.getClientFilters(); + for (FeatureFlagFilter filter : clientFilters) { + System.out.printf("\t\tFilter name: %s%n", filter.getName()); + final Map parameters = filter.getParameters(); + System.out.println("\t\t\tParameters:"); + parameters.forEach((k, v) -> System.out.printf("\t\t\t\tKey: %s, Value:%s%n", k, v)); + } + } +} diff --git a/sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration/SecretReferenceConfigurationSettingSample.java b/sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration/SecretReferenceConfigurationSettingSample.java new file mode 100644 index 0000000000000..62e05464111b8 --- /dev/null +++ b/sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration/SecretReferenceConfigurationSettingSample.java @@ -0,0 +1,72 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.data.appconfiguration; + +import com.azure.core.http.rest.PagedIterable; +import com.azure.data.appconfiguration.models.ConfigurationSetting; +import com.azure.data.appconfiguration.models.SecretReferenceConfigurationSetting; +import com.azure.data.appconfiguration.models.SettingSelector; + +/** + * Sample demonstrates how to add, get, list, and delete a secret reference configuration setting. + */ +public class SecretReferenceConfigurationSettingSample { + /** + * Runs the sample algorithm and demonstrates how to add, get, list, and delete a secret reference configuration + * setting. + * + * @param args Unused. Arguments to the program. + */ + public static void main(String[] args) { + // The connection string value can be obtained by going to your App Configuration instance in the Azure portal + // and navigating to "Access Keys" page under the "Settings" section. + String connectionString = "endpoint={endpoint_value};id={id_value};secret={secret_value}"; + final ConfigurationClient client = new ConfigurationClientBuilder() + .connectionString(connectionString) + .buildClient(); + + // Name of the key to add to the configuration service. + final String key = "hello"; + final String secretIdValue = "{the-keyVault-secret-id-uri}"; + + System.out.println("Beginning of synchronous sample..."); + + SecretReferenceConfigurationSetting referenceConfigurationSetting = + new SecretReferenceConfigurationSetting(key, secretIdValue); + + // setConfigurationSetting adds or updates a setting to Azure App Configuration store. Alternatively, you can + // call addConfigurationSetting which only succeeds if the setting does not exist in the store. Or, + // you can call setConfigurationSetting to update a setting that is already present in the store. + System.out.println("[Set-SecretReferenceConfigurationSetting]"); + SecretReferenceConfigurationSetting setting = (SecretReferenceConfigurationSetting) client.setConfigurationSetting(referenceConfigurationSetting); + printSecretReferenceConfigurationSetting(setting); + + System.out.println("[Get-SecretReferenceConfigurationSetting]"); + setting = (SecretReferenceConfigurationSetting) client.getConfigurationSetting(setting); + printSecretReferenceConfigurationSetting(setting); + + System.out.println("[List-SecretReferenceConfigurationSetting]"); + final PagedIterable configurationSettings = client.listConfigurationSettings(new SettingSelector()); + for (ConfigurationSetting configurationSetting : configurationSettings) { + if (configurationSetting instanceof SecretReferenceConfigurationSetting) { + System.out.println("-Listing-SecretReferenceConfigurationSetting"); + printSecretReferenceConfigurationSetting((SecretReferenceConfigurationSetting) configurationSetting); + } else { + System.out.println("-Listing-non-SecretReferenceConfigurationSetting"); + System.out.printf("Key: %s, Value: %s%n", configurationSetting.getKey(), configurationSetting.getValue()); + } + } + + System.out.println("[Delete-SecretReferenceConfigurationSetting"); + setting = (SecretReferenceConfigurationSetting) client.deleteConfigurationSetting(setting); + printSecretReferenceConfigurationSetting(setting); + + System.out.println("End of synchronous sample."); + } + + private static void printSecretReferenceConfigurationSetting(SecretReferenceConfigurationSetting setting) { + System.out.printf("Key: %s, Secret ID: %s, Content Type: %s, Value: %s%n", setting.getKey(), + setting.getSecretId(), setting.getContentType(), setting.getValue()); + } +} diff --git a/sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration/SecretReferenceConfigurationSettingSampleAsync.java b/sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration/SecretReferenceConfigurationSettingSampleAsync.java new file mode 100644 index 0000000000000..613551fc63565 --- /dev/null +++ b/sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration/SecretReferenceConfigurationSettingSampleAsync.java @@ -0,0 +1,92 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.data.appconfiguration; + +import com.azure.data.appconfiguration.models.SecretReferenceConfigurationSetting; +import com.azure.data.appconfiguration.models.SettingSelector; + +import java.util.concurrent.TimeUnit; + +/** + * Sample demonstrates how to add, get, list, and delete a secret reference configuration setting asynchronous. + */ +public class SecretReferenceConfigurationSettingSampleAsync { + /** + * Runs the sample algorithm and demonstrates how to add, get, list, and delete a secret reference configuration + * setting asynchronous. + * + * @param args Unused. Arguments to the program. + * @throws InterruptedException when a thread is waiting, sleeping, or otherwise occupied, + * and the thread is interrupted, either before or during the activity. + */ + public static void main(String[] args) throws InterruptedException { + // The connection string value can be obtained by going to your App Configuration instance in the Azure portal + // and navigating to "Access Keys" page under the "Settings" section. + String connectionString = "endpoint={endpoint_value};id={id_value};secret={secret_value}"; + + // Asynchronous sample + // Instantiate a client that will be used to call the service. + final ConfigurationAsyncClient client = new ConfigurationClientBuilder() + .connectionString(connectionString) + .buildAsyncClient(); + + // Name of the key to add to the configuration service. + final String key = "hello"; + final String secretIdValue = "{the-keyVault-secret-id-uri}"; + + System.out.println("Beginning of asynchronous sample..."); + + SecretReferenceConfigurationSetting referenceConfigurationSetting = + new SecretReferenceConfigurationSetting(key, secretIdValue); + + // setConfigurationSetting adds or updates a setting to Azure App Configuration store. Alternatively, you can + // call addConfigurationSetting which only succeeds if the setting does not exist in the store. Or, + // you can call setConfigurationSetting to update a setting that is already present in the store. + + // We subscribe and wait for the service call to complete then print out the contents of our newly added setting. + // If an error occurs, we print out that error. + System.out.println("[Set-SecretReferenceConfigurationSetting]"); + client.setConfigurationSetting(referenceConfigurationSetting).subscribe( + result -> printSecretReferenceConfigurationSetting((SecretReferenceConfigurationSetting) result), + error -> System.err.println("There was an error adding the setting: " + error), + () -> System.out.println("Set setting finished")); + TimeUnit.MILLISECONDS.sleep(1000); + + System.out.println("[Get-SecretReferenceConfigurationSetting]"); + client.getConfigurationSetting(referenceConfigurationSetting).subscribe( + result -> printSecretReferenceConfigurationSetting((SecretReferenceConfigurationSetting) result), + error -> System.err.println("There was an error getting the setting: " + error), + () -> System.out.println("Get setting finished")); + TimeUnit.MILLISECONDS.sleep(1000); + + System.out.println("[List-SecretReferenceConfigurationSetting]"); + client.listConfigurationSettings(new SettingSelector()).subscribe( + result -> { + if (result instanceof SecretReferenceConfigurationSetting) { + System.out.println("-Listing-SecretReferenceConfigurationSetting"); + printSecretReferenceConfigurationSetting((SecretReferenceConfigurationSetting) result); + } else { + System.out.println("-Listing-non-SecretReferenceConfigurationSetting"); + System.out.printf("Key: %s, Value: %s%n", result.getKey(), result.getValue()); + } + }, + error -> System.err.println("There was an error adding the setting: " + error), + () -> System.out.println("List settings finished")); + TimeUnit.MILLISECONDS.sleep(1000); + + System.out.println("[Delete-SecretReferenceConfigurationSetting"); + client.getConfigurationSetting(referenceConfigurationSetting).subscribe( + result -> printSecretReferenceConfigurationSetting((SecretReferenceConfigurationSetting) result), + error -> System.err.println("There was an error getting the setting: " + error), + () -> System.out.println("Delete setting finished")); + TimeUnit.MILLISECONDS.sleep(1000); + + System.out.println("End of asynchronous sample."); + } + + private static void printSecretReferenceConfigurationSetting(SecretReferenceConfigurationSetting setting) { + System.out.printf("Key: %s, Secret ID: %s, Content Type: %s, Value: %s%n", setting.getKey(), + setting.getSecretId(), setting.getContentType(), setting.getValue()); + } +} diff --git a/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/SecretReferenceConfigurationSettingUnitTest.java b/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/SecretReferenceConfigurationSettingUnitTest.java index edf00eece9b2e..3d2de6f6383dd 100644 --- a/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/SecretReferenceConfigurationSettingUnitTest.java +++ b/sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/SecretReferenceConfigurationSettingUnitTest.java @@ -12,9 +12,9 @@ public class SecretReferenceConfigurationSettingUnitTest { // Original value static final String NEW_KEY = "newKey"; - static final String SECRET_ID_VALUE = "https://www.google.com/"; + static final String SECRET_ID_VALUE = "https://www.microsoft.com/"; // Updated value - static final String UPDATED_SECRET_ID_VALUE = "https://www.google.com/updated"; + static final String UPDATED_SECRET_ID_VALUE = "https://www.microsoft.com/updated"; @Test public void accessingStronglyTypedPropertiesAfterSettingDifferentSecretReferenceJSON() { // Create a new configuration setting,