diff --git a/eng/versioning/external_dependencies.txt b/eng/versioning/external_dependencies.txt
index 616f212a45a9..a921d3da2380 100644
--- a/eng/versioning/external_dependencies.txt
+++ b/eng/versioning/external_dependencies.txt
@@ -208,4 +208,4 @@ media_com.microsoft.azure:adal4j;1.2.0
servicebus_com.microsoft.azure:azure-client-authentication;1.6.7
# sdk\storage\azure-storage-blob-cryptography\pom.xml
-storage_com.microsoft.azure:azure-storage;8.4.0
\ No newline at end of file
+storage_com.microsoft.azure:azure-storage;8.4.0
diff --git a/eng/versioning/version_client_java_files.txt b/eng/versioning/version_client_java_files.txt
index b59b8ee005c9..9f2721aa11ba 100644
--- a/eng/versioning/version_client_java_files.txt
+++ b/eng/versioning/version_client_java_files.txt
@@ -4,12 +4,3 @@
# The file format here should be the relative path from the root of the azure-sdk-for-java
sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/ClientConstants.java
-sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/AzureKeyVaultConfiguration.java
-sdk/keyvault/azure-security-keyvault-keys/src/main/java/com/azure/security/keyvault/keys/implementation/AzureKeyVaultConfiguration.java
-sdk/keyvault/azure-security-keyvault-secrets/src/main/java/com/azure/security/keyvault/secrets/AzureKeyVaultConfiguration.java
-sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/util/BuilderHelper.java
-sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/BlobCryptographyConfiguration.java
-sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/implementation/util/BuilderHelper.java
-sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/FileConfiguration.java
-sdk/storage/azure-storage-queue/src/main/java/com/azure/storage/queue/implementation/util/BuilderHelper.java
-sdk/storage/azure-storage-queue/src/main/java/com/azure/storage/queue/QueueConfiguration.java
diff --git a/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/ConfigurationClient.java b/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/ConfigurationClient.java
index d3a3a8b58bbf..cc68fd2e2aa2 100644
--- a/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/ConfigurationClient.java
+++ b/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/ConfigurationClient.java
@@ -334,7 +334,7 @@ public ConfigurationSetting setReadOnly(String key, String label, boolean isRead
*
*
Set the setting to read-only with the key-label "prodDBConnection"-"westUS".
*
- * {@codesnippet com.azure.data.applicationconfig.configurationclient.setReadOnlyWithResponse#ConfigurationSetting-boolean-Context}
+ * {@codesnippet com.azure.data.applicationconfig.configurationclient.setReadOnlyWithResponse#ConfigurationSetting-Boolean-Context}
*
* Clear read-only of the setting with the key-label "prodDBConnection"-"westUS".
*
diff --git a/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/ConfigurationClientBuilder.java b/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/ConfigurationClientBuilder.java
index df4d670d247e..259c633c4507 100644
--- a/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/ConfigurationClientBuilder.java
+++ b/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/ConfigurationClientBuilder.java
@@ -22,6 +22,7 @@
import com.azure.core.http.policy.UserAgentPolicy;
import com.azure.core.util.Configuration;
import com.azure.core.util.CoreUtils;
+import com.azure.core.util.UserAgentProperties;
import com.azure.core.util.logging.ClientLogger;
import com.azure.data.appconfiguration.implementation.ConfigurationClientCredentials;
import com.azure.data.appconfiguration.implementation.ConfigurationCredentialsPolicy;
@@ -34,7 +35,6 @@
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import java.util.Objects;
/**
@@ -76,16 +76,14 @@ public final class ConfigurationClientBuilder {
private static final String CONTENT_TYPE_HEADER_VALUE = "application/json";
private static final String ACCEPT_HEADER = "Accept";
private static final String ACCEPT_HEADER_VALUE = "application/vnd.microsoft.azconfig.kv+json";
+ // This is properties file's name.
private static final String APP_CONFIG_PROPERTIES = "azure-appconfig.properties";
- private static final String NAME = "name";
- private static final String VERSION = "version";
private static final RetryPolicy DEFAULT_RETRY_POLICY = new RetryPolicy("retry-after-ms", ChronoUnit.MILLIS);
private final ClientLogger logger = new ClientLogger(ConfigurationClientBuilder.class);
private final List policies;
private final HttpHeaders headers;
- private final String clientName;
- private final String clientVersion;
+ private final UserAgentProperties properties;
private ConfigurationClientCredentials credential;
private TokenCredential tokenCredential;
@@ -105,9 +103,7 @@ public ConfigurationClientBuilder() {
policies = new ArrayList<>();
httpLogOptions = new HttpLogOptions();
- Map properties = CoreUtils.getProperties(APP_CONFIG_PROPERTIES);
- clientName = properties.getOrDefault(NAME, "UnknownName");
- clientVersion = properties.getOrDefault(VERSION, "UnknownVersion");
+ properties = CoreUtils.getUserAgentProperties(APP_CONFIG_PROPERTIES);
headers = new HttpHeaders()
.put(ECHO_REQUEST_ID_HEADER, "true")
@@ -175,8 +171,8 @@ public ConfigurationAsyncClient buildAsyncClient() {
// Closest to API goes first, closest to wire goes last.
final List policies = new ArrayList<>();
- policies.add(new UserAgentPolicy(httpLogOptions.getApplicationId(), clientName, clientVersion,
- buildConfiguration));
+ policies.add(new UserAgentPolicy(httpLogOptions.getApplicationId(), properties.getName(),
+ properties.getVersion(), buildConfiguration));
policies.add(new RequestIdPolicy());
policies.add(new AddHeadersPolicy(headers));
policies.add(new AddDatePolicy());
diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/CoreUtils.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/CoreUtils.java
index b9b34cdd8be9..7931bca14101 100644
--- a/sdk/core/azure-core/src/main/java/com/azure/core/util/CoreUtils.java
+++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/CoreUtils.java
@@ -24,6 +24,10 @@
*/
public final class CoreUtils {
private static final String COMMA = ",";
+ private static final String NAME = "name";
+ private static final String VERSION = "version";
+ private static final String UNKNOWN_NAME = "UnknownName";
+ private static final String UNKNOWN_VERSION = "UnknownVersion";
private CoreUtils() {
// Exists only to defeat instantiation.
@@ -161,6 +165,19 @@ public static Publisher extractAndFetch(PagedResponse page, Context co
}
+ /**
+ * Helper method that returns {@link UserAgentProperties} from properties defined in {@code propertiesFileName}.
+ *
+ * @param propertiesFileName The file name defining the properties.
+ * @return {@link UserAgentProperties}.
+ */
+ public static UserAgentProperties getUserAgentProperties(String propertiesFileName) {
+ Map propertyMap = getProperties(propertiesFileName);
+ String name = propertyMap.getOrDefault(NAME, UNKNOWN_NAME);
+ String version = propertyMap.getOrDefault(VERSION, UNKNOWN_VERSION);
+ return new UserAgentProperties(name, version);
+ }
+
/**
* Helper method that returns an immutable {@link Map} of properties defined in {@code propertiesFileName}.
*
diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/util/CoreUtilsTests.java b/sdk/core/azure-core/src/test/java/com/azure/core/util/CoreUtilsTests.java
index ca1052fae5fa..9842599eb15a 100644
--- a/sdk/core/azure-core/src/test/java/com/azure/core/util/CoreUtilsTests.java
+++ b/sdk/core/azure-core/src/test/java/com/azure/core/util/CoreUtilsTests.java
@@ -3,7 +3,7 @@
package com.azure.core.util;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -40,16 +40,18 @@ public void findFirstOfTypeWithNoneOfType() {
@Test
public void testProperties() {
- assertNotNull(CoreUtils.getProperties("azure-core.properties").get("version"));
- assertNotNull(CoreUtils.getProperties("azure-core.properties").get("name"));
- assertTrue(CoreUtils.getProperties("azure-core.properties").get("version")
+ UserAgentProperties properties =
+ CoreUtils.getUserAgentProperties("azure-core.properties");
+ assertFalse(properties.getName().matches("UnknownName"));
+ assertTrue(CoreUtils.getUserAgentProperties("azure-core.properties").getVersion()
.matches("\\d.\\d.\\d([-a-zA-Z0-9.])*"));
}
@Test
public void testMissingProperties() {
- assertNotNull(CoreUtils.getProperties("foo.properties"));
- assertTrue(CoreUtils.getProperties("foo.properties").isEmpty());
- assertNull(CoreUtils.getProperties("azure-core.properties").get("foo"));
+ assertTrue(CoreUtils.getUserAgentProperties("foo.properties")
+ .getVersion().matches("UnknownVersion"));
+ assertTrue(CoreUtils.getUserAgentProperties("foo.properties")
+ .getName().matches("UnknownName"));
}
}
diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/resources/azure-messaging-eventhubs.properties b/sdk/eventhubs/azure-messaging-eventhubs/src/main/resources/azure-messaging-eventhubs.properties
new file mode 100644
index 000000000000..ca812989b4f2
--- /dev/null
+++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/resources/azure-messaging-eventhubs.properties
@@ -0,0 +1,2 @@
+name=${project.artifactId}
+version=${project.version}
diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/AzureKeyVaultConfiguration.java b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/AzureKeyVaultConfiguration.java
deleted file mode 100644
index 802163cc7f08..000000000000
--- a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/AzureKeyVaultConfiguration.java
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-package com.azure.security.keyvault.certificates;
-
-class AzureKeyVaultConfiguration {
- //TODO: Eventually remove these hardcoded strings with https://github.com/Azure/azure-sdk-for-java/issues/3141
- static final String SDK_NAME = "Azure-Keyvault";
- // {x-version-update-start;com.azure:azure-security-keyvault-certificates;current}
- static final String SDK_VERSION = "4.0.0-beta.6";
- // {x-version-update-end}
-}
diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateClientBuilder.java b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateClientBuilder.java
index 8fbc0583e74e..ce34e7c25435 100644
--- a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateClientBuilder.java
+++ b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateClientBuilder.java
@@ -17,6 +17,7 @@
import com.azure.core.http.policy.UserAgentPolicy;
import com.azure.core.util.CoreUtils;
import com.azure.core.util.Configuration;
+import com.azure.core.util.UserAgentProperties;
import com.azure.core.util.logging.ClientLogger;
import com.azure.security.keyvault.certificates.implementation.KeyVaultCredentialPolicy;
@@ -57,8 +58,10 @@
@ServiceClientBuilder(serviceClients = {CertificateClient.class, CertificateAsyncClient.class})
public final class CertificateClientBuilder {
private final ClientLogger logger = new ClientLogger(CertificateClientBuilder.class);
-
+ // This is properties file's name.
+ private static final String AZURE_KEY_VAULT_CERTIFICATES_PROPERTIES = "azure-key-vault-certificates.properties";
private final List policies;
+ private final UserAgentProperties properties;
private TokenCredential credential;
private HttpPipeline pipeline;
private URL vaultUrl;
@@ -75,6 +78,7 @@ public CertificateClientBuilder() {
retryPolicy = new RetryPolicy();
httpLogOptions = new HttpLogOptions();
policies = new ArrayList<>();
+ properties = CoreUtils.getUserAgentProperties(AZURE_KEY_VAULT_CERTIFICATES_PROPERTIES);
}
/**
@@ -110,11 +114,13 @@ public CertificateClient buildClient() {
* {@link CertificateClientBuilder#vaultUrl(String)} have not been set.
*/
public CertificateAsyncClient buildAsyncClient() {
- Configuration buildConfiguration = (configuration == null) ? Configuration.getGlobalConfiguration().clone() : configuration;
+ Configuration buildConfiguration = (configuration == null) ? Configuration.getGlobalConfiguration().clone()
+ : configuration;
URL buildEndpoint = getBuildEndpoint(buildConfiguration);
if (buildEndpoint == null) {
- throw logger.logExceptionAsError(new IllegalStateException(KeyVaultErrorCodeStrings.getErrorString(KeyVaultErrorCodeStrings.VAULT_END_POINT_REQUIRED)));
+ throw logger.logExceptionAsError(new IllegalStateException(
+ KeyVaultErrorCodeStrings.getErrorString(KeyVaultErrorCodeStrings.VAULT_END_POINT_REQUIRED)));
}
CertificateServiceVersion serviceVersion = version != null ? version : CertificateServiceVersion.getLatest();
@@ -123,12 +129,14 @@ public CertificateAsyncClient buildAsyncClient() {
}
if (credential == null) {
- throw logger.logExceptionAsError(new IllegalStateException(KeyVaultErrorCodeStrings.getErrorString(KeyVaultErrorCodeStrings.CREDENTIALS_REQUIRED)));
+ throw logger.logExceptionAsError(new IllegalStateException(
+ KeyVaultErrorCodeStrings.getErrorString(KeyVaultErrorCodeStrings.CREDENTIALS_REQUIRED)));
}
// Closest to API goes first, closest to wire goes last.
final List policies = new ArrayList<>();
- policies.add(new UserAgentPolicy(httpLogOptions.getApplicationId(), AzureKeyVaultConfiguration.SDK_NAME, AzureKeyVaultConfiguration.SDK_VERSION, buildConfiguration));
+ policies.add(new UserAgentPolicy(httpLogOptions.getApplicationId(), properties.getName(),
+ properties.getVersion(), buildConfiguration));
HttpPolicyProviders.addBeforeRetryPolicies(policies);
policies.add(retryPolicy);
policies.add(new KeyVaultCredentialPolicy(credential));
diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/main/resources/azure-key-vault-certificates.properties b/sdk/keyvault/azure-security-keyvault-certificates/src/main/resources/azure-key-vault-certificates.properties
new file mode 100644
index 000000000000..ca812989b4f2
--- /dev/null
+++ b/sdk/keyvault/azure-security-keyvault-certificates/src/main/resources/azure-key-vault-certificates.properties
@@ -0,0 +1,2 @@
+name=${project.artifactId}
+version=${project.version}
diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/main/resources/kvErrorStrings.properties b/sdk/keyvault/azure-security-keyvault-certificates/src/main/resources/kvErrorStrings.properties
index ffced4746fc3..df9cd43cfcc1 100644
--- a/sdk/keyvault/azure-security-keyvault-certificates/src/main/resources/kvErrorStrings.properties
+++ b/sdk/keyvault/azure-security-keyvault-certificates/src/main/resources/kvErrorStrings.properties
@@ -1,2 +1,3 @@
credentials_required=Azure Key Vault credentials are required.
vault_endpoint_required=Azure Key Vault endpoint url is required.
+
diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/CertificateClientTestBase.java b/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/CertificateClientTestBase.java
index f7d2d5be365e..f7003dbf352e 100644
--- a/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/CertificateClientTestBase.java
+++ b/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/CertificateClientTestBase.java
@@ -57,6 +57,8 @@
import static org.junit.jupiter.api.Assertions.fail;
public abstract class CertificateClientTestBase extends TestBase {
+ private static final String SDK_NAME = "client_name";
+ private static final String SDK_VERSION = "client_version";
@Override
protected String getTestName() {
@@ -80,7 +82,7 @@ T clientSetup(Function clientBuilder) {
HttpClient httpClient;
// Closest to API goes first, closest to wire goes last.
final List policies = new ArrayList<>();
- policies.add(new UserAgentPolicy(AzureKeyVaultConfiguration.SDK_NAME, AzureKeyVaultConfiguration.SDK_VERSION,
+ policies.add(new UserAgentPolicy(SDK_NAME, SDK_VERSION,
Configuration.getGlobalConfiguration().clone(), CertificateServiceVersion.getLatest()));
HttpPolicyProviders.addBeforeRetryPolicies(policies);
policies.add(new RetryPolicy());
diff --git a/sdk/keyvault/azure-security-keyvault-keys/src/main/java/com/azure/security/keyvault/keys/KeyClientBuilder.java b/sdk/keyvault/azure-security-keyvault-keys/src/main/java/com/azure/security/keyvault/keys/KeyClientBuilder.java
index 986fe3c7d0c3..dc2c90c77878 100644
--- a/sdk/keyvault/azure-security-keyvault-keys/src/main/java/com/azure/security/keyvault/keys/KeyClientBuilder.java
+++ b/sdk/keyvault/azure-security-keyvault-keys/src/main/java/com/azure/security/keyvault/keys/KeyClientBuilder.java
@@ -17,8 +17,8 @@
import com.azure.core.http.policy.RetryPolicy;
import com.azure.core.http.policy.UserAgentPolicy;
import com.azure.core.annotation.ServiceClientBuilder;
+import com.azure.core.util.UserAgentProperties;
import com.azure.core.util.logging.ClientLogger;
-import com.azure.security.keyvault.keys.implementation.AzureKeyVaultConfiguration;
import com.azure.security.keyvault.keys.implementation.KeyVaultCredentialPolicy;
import java.net.MalformedURLException;
@@ -60,8 +60,11 @@
@ServiceClientBuilder(serviceClients = KeyClient.class)
public final class KeyClientBuilder {
private final ClientLogger logger = new ClientLogger(KeyClientBuilder.class);
+ // This is properties file's name.
+ private static final String AZURE_KEY_VAULT_KEYS = "azure-key-vault-keys.properties";
private final List policies;
+ private final UserAgentProperties properties;
private TokenCredential credential;
private HttpPipeline pipeline;
private URL vaultUrl;
@@ -78,6 +81,7 @@ public KeyClientBuilder() {
retryPolicy = new RetryPolicy();
httpLogOptions = new HttpLogOptions();
policies = new ArrayList<>();
+ properties = CoreUtils.getUserAgentProperties(AZURE_KEY_VAULT_KEYS);
}
/**
@@ -136,7 +140,7 @@ public KeyAsyncClient buildAsyncClient() {
// Closest to API goes first, closest to wire goes last.
final List policies = new ArrayList<>();
- policies.add(new UserAgentPolicy(httpLogOptions.getApplicationId(), AzureKeyVaultConfiguration.SDK_NAME, AzureKeyVaultConfiguration.SDK_VERSION,
+ policies.add(new UserAgentPolicy(httpLogOptions.getApplicationId(), properties.getName(), properties.getVersion(),
buildConfiguration));
HttpPolicyProviders.addBeforeRetryPolicies(policies);
policies.add(retryPolicy);
diff --git a/sdk/keyvault/azure-security-keyvault-keys/src/main/java/com/azure/security/keyvault/keys/cryptography/CryptographyClientBuilder.java b/sdk/keyvault/azure-security-keyvault-keys/src/main/java/com/azure/security/keyvault/keys/cryptography/CryptographyClientBuilder.java
index 5a76313f4fc8..3343309705c9 100644
--- a/sdk/keyvault/azure-security-keyvault-keys/src/main/java/com/azure/security/keyvault/keys/cryptography/CryptographyClientBuilder.java
+++ b/sdk/keyvault/azure-security-keyvault-keys/src/main/java/com/azure/security/keyvault/keys/cryptography/CryptographyClientBuilder.java
@@ -16,9 +16,10 @@
import com.azure.core.annotation.ServiceClientBuilder;
import com.azure.core.http.policy.HttpPolicyProviders;
import com.azure.core.util.Configuration;
+import com.azure.core.util.CoreUtils;
+import com.azure.core.util.UserAgentProperties;
import com.azure.core.util.logging.ClientLogger;
import com.azure.security.keyvault.keys.implementation.KeyVaultCredentialPolicy;
-import com.azure.security.keyvault.keys.implementation.AzureKeyVaultConfiguration;
import com.azure.security.keyvault.keys.models.JsonWebKey;
import java.util.ArrayList;
@@ -63,7 +64,10 @@
@ServiceClientBuilder(serviceClients = CryptographyClient.class)
public final class CryptographyClientBuilder {
final List policies;
+ final UserAgentProperties properties;
private final ClientLogger logger = new ClientLogger(CryptographyClientBuilder.class);
+ // This is properties file's name.
+ private static final String AZURE_KEY_VAULT_KEYS = "azure-key-vault-keys.properties";
private TokenCredential credential;
private HttpPipeline pipeline;
private JsonWebKey jsonWebKey;
@@ -81,6 +85,7 @@ public CryptographyClientBuilder() {
retryPolicy = new RetryPolicy();
httpLogOptions = new HttpLogOptions();
policies = new ArrayList<>();
+ properties = CoreUtils.getUserAgentProperties(AZURE_KEY_VAULT_KEYS);
}
/**
@@ -153,8 +158,8 @@ HttpPipeline setupPipeline() {
// Closest to API goes first, closest to wire goes last.
final List policies = new ArrayList<>();
- policies.add(new UserAgentPolicy(httpLogOptions.getApplicationId(), AzureKeyVaultConfiguration.SDK_NAME, AzureKeyVaultConfiguration.SDK_VERSION,
- buildConfiguration));
+ policies.add(new UserAgentPolicy(httpLogOptions.getApplicationId(), properties.getName(),
+ properties.getVersion(), buildConfiguration));
HttpPolicyProviders.addBeforeRetryPolicies(policies);
policies.add(retryPolicy);
policies.add(new KeyVaultCredentialPolicy(credential));
diff --git a/sdk/keyvault/azure-security-keyvault-keys/src/main/java/com/azure/security/keyvault/keys/implementation/AzureKeyVaultConfiguration.java b/sdk/keyvault/azure-security-keyvault-keys/src/main/java/com/azure/security/keyvault/keys/implementation/AzureKeyVaultConfiguration.java
deleted file mode 100644
index 46296bf3478b..000000000000
--- a/sdk/keyvault/azure-security-keyvault-keys/src/main/java/com/azure/security/keyvault/keys/implementation/AzureKeyVaultConfiguration.java
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-package com.azure.security.keyvault.keys.implementation;
-
-public final class AzureKeyVaultConfiguration {
- //TODO: Eventually remove these hardcoded strings with https://github.com/Azure/azure-sdk-for-java/issues/3141
- public static final String SDK_NAME = "Azure-Keyvault";
- // {x-version-update-start;com.azure:azure-security-keyvault-keys;current}
- public static final String SDK_VERSION = "4.1.0-beta.1";
- // {x-version-update-end}
-}
diff --git a/sdk/keyvault/azure-security-keyvault-keys/src/main/resources/azure-key-vault-keys.properties b/sdk/keyvault/azure-security-keyvault-keys/src/main/resources/azure-key-vault-keys.properties
new file mode 100644
index 000000000000..ca812989b4f2
--- /dev/null
+++ b/sdk/keyvault/azure-security-keyvault-keys/src/main/resources/azure-key-vault-keys.properties
@@ -0,0 +1,2 @@
+name=${project.artifactId}
+version=${project.version}
diff --git a/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/KeyClientTestBase.java b/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/KeyClientTestBase.java
index 89d86b36d0d3..16bcf9b89b7c 100644
--- a/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/KeyClientTestBase.java
+++ b/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/KeyClientTestBase.java
@@ -21,7 +21,6 @@
import com.azure.core.test.TestBase;
import com.azure.core.util.Configuration;
import com.azure.identity.DefaultAzureCredentialBuilder;
-import com.azure.security.keyvault.keys.implementation.AzureKeyVaultConfiguration;
import com.azure.security.keyvault.keys.models.CreateKeyOptions;
import com.azure.security.keyvault.keys.models.KeyType;
import com.azure.security.keyvault.keys.models.KeyVaultKey;
@@ -47,6 +46,8 @@ public abstract class KeyClientTestBase extends TestBase {
private static final String KEY_NAME = "javaKeyTemp";
private static final KeyType RSA_KEY_TYPE = KeyType.RSA;
private static final KeyType EC_KEY_TYPE = KeyType.EC;
+ private static final String SDK_NAME = "client_name";
+ private static final String SDK_VERSION = "client_version";
@Override
protected String getTestName() {
@@ -70,7 +71,7 @@ T clientSetup(Function clientBuilder) {
HttpClient httpClient;
// Closest to API goes first, closest to wire goes last.
final List policies = new ArrayList<>();
- policies.add(new UserAgentPolicy(AzureKeyVaultConfiguration.SDK_NAME, AzureKeyVaultConfiguration.SDK_VERSION, Configuration.getGlobalConfiguration().clone(), KeyServiceVersion.getLatest()));
+ policies.add(new UserAgentPolicy(SDK_NAME, SDK_VERSION, Configuration.getGlobalConfiguration().clone(), KeyServiceVersion.getLatest()));
HttpPolicyProviders.addBeforeRetryPolicies(policies);
policies.add(new RetryPolicy());
if (credential != null) {
diff --git a/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/KeyVaultKeysUserAgentPropertiesTest.java b/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/KeyVaultKeysUserAgentPropertiesTest.java
new file mode 100644
index 000000000000..af1ecc5c9b28
--- /dev/null
+++ b/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/KeyVaultKeysUserAgentPropertiesTest.java
@@ -0,0 +1,21 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.security.keyvault.keys;
+
+import com.azure.core.util.CoreUtils;
+import com.azure.core.util.UserAgentProperties;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class KeyVaultKeysUserAgentPropertiesTest {
+
+ @Test
+ public void testAzureConfiguration() {
+ UserAgentProperties properties = CoreUtils.getUserAgentProperties("azure-key-vault-keys.properties");
+ assertFalse(properties.getName().matches("UnknownName"));
+ assertTrue(properties.getVersion().matches("(\\d)+.(\\d)+.(\\d)+([-a-zA-Z0-9.])*"));
+ }
+}
diff --git a/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/cryptography/CryptographyClientTestBase.java b/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/cryptography/CryptographyClientTestBase.java
index 5709682a81ab..7aef1f6c4f36 100644
--- a/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/cryptography/CryptographyClientTestBase.java
+++ b/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/cryptography/CryptographyClientTestBase.java
@@ -20,7 +20,6 @@
import com.azure.core.test.TestBase;
import com.azure.core.util.Configuration;
import com.azure.identity.DefaultAzureCredentialBuilder;
-import com.azure.security.keyvault.keys.implementation.AzureKeyVaultConfiguration;
import org.junit.jupiter.api.Test;
import java.math.BigInteger;
@@ -45,6 +44,8 @@
public abstract class CryptographyClientTestBase extends TestBase {
+ private static final String SDK_NAME = "client_name";
+ private static final String SDK_VERSION = "client_version";
@Override
protected String getTestName() {
@@ -77,7 +78,7 @@ T clientSetup(Function clientBuilder) {
// Closest to API goes first, closest to wire goes last.
final List policies = new ArrayList<>();
- policies.add(new UserAgentPolicy(AzureKeyVaultConfiguration.SDK_NAME, AzureKeyVaultConfiguration.SDK_VERSION, Configuration.getGlobalConfiguration().clone(), CryptographyServiceVersion.getLatest()));
+ policies.add(new UserAgentPolicy(SDK_NAME, SDK_VERSION, Configuration.getGlobalConfiguration().clone(), CryptographyServiceVersion.getLatest()));
HttpPolicyProviders.addBeforeRetryPolicies(policies);
policies.add(new RetryPolicy());
if (credential != null) {
diff --git a/sdk/keyvault/azure-security-keyvault-secrets/src/main/java/com/azure/security/keyvault/secrets/AzureKeyVaultConfiguration.java b/sdk/keyvault/azure-security-keyvault-secrets/src/main/java/com/azure/security/keyvault/secrets/AzureKeyVaultConfiguration.java
deleted file mode 100644
index 6fb1ecc77507..000000000000
--- a/sdk/keyvault/azure-security-keyvault-secrets/src/main/java/com/azure/security/keyvault/secrets/AzureKeyVaultConfiguration.java
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-package com.azure.security.keyvault.secrets;
-
-class AzureKeyVaultConfiguration {
- //TODO: Eventually remove these hardcoded strings with https://github.com/Azure/azure-sdk-for-java/issues/3141
- static final String SDK_NAME = "Azure-Keyvault";
- // {x-version-update-start;com.azure:azure-security-keyvault-secrets;current}
- static final String SDK_VERSION = "4.0.1";
- // {x-version-update-end}
-}
diff --git a/sdk/keyvault/azure-security-keyvault-secrets/src/main/java/com/azure/security/keyvault/secrets/SecretClientBuilder.java b/sdk/keyvault/azure-security-keyvault-secrets/src/main/java/com/azure/security/keyvault/secrets/SecretClientBuilder.java
index 2cc1c59a4a52..1726b90c19ca 100644
--- a/sdk/keyvault/azure-security-keyvault-secrets/src/main/java/com/azure/security/keyvault/secrets/SecretClientBuilder.java
+++ b/sdk/keyvault/azure-security-keyvault-secrets/src/main/java/com/azure/security/keyvault/secrets/SecretClientBuilder.java
@@ -17,6 +17,7 @@
import com.azure.core.http.policy.RetryPolicy;
import com.azure.core.http.policy.UserAgentPolicy;
import com.azure.core.util.CoreUtils;
+import com.azure.core.util.UserAgentProperties;
import com.azure.core.util.logging.ClientLogger;
import com.azure.security.keyvault.secrets.implementation.KeyVaultCredentialPolicy;
@@ -58,8 +59,11 @@
@ServiceClientBuilder(serviceClients = SecretClient.class)
public final class SecretClientBuilder {
private final ClientLogger logger = new ClientLogger(SecretClientBuilder.class);
+ // This is properties file's name.
+ private static final String AZURE_KEY_VAULT_SECRETS = "azure-key-vault-secrets.properties";
private final List policies;
+ final UserAgentProperties properties;
private TokenCredential credential;
private HttpPipeline pipeline;
private URL vaultUrl;
@@ -76,6 +80,7 @@ public SecretClientBuilder() {
retryPolicy = new RetryPolicy();
httpLogOptions = new HttpLogOptions();
policies = new ArrayList<>();
+ properties = CoreUtils.getUserAgentProperties(AZURE_KEY_VAULT_SECRETS);
}
/**
@@ -137,8 +142,8 @@ public SecretAsyncClient buildAsyncClient() {
// Closest to API goes first, closest to wire goes last.
final List policies = new ArrayList<>();
- policies.add(new UserAgentPolicy(httpLogOptions.getApplicationId(), AzureKeyVaultConfiguration.SDK_NAME, AzureKeyVaultConfiguration.SDK_VERSION,
- buildConfiguration));
+ policies.add(new UserAgentPolicy(httpLogOptions.getApplicationId(), properties.getName(),
+ properties.getVersion(), buildConfiguration));
HttpPolicyProviders.addBeforeRetryPolicies(policies);
policies.add(retryPolicy);
policies.add(new KeyVaultCredentialPolicy(credential));
diff --git a/sdk/keyvault/azure-security-keyvault-secrets/src/main/resources/azure-key-vault-secrets.properties b/sdk/keyvault/azure-security-keyvault-secrets/src/main/resources/azure-key-vault-secrets.properties
new file mode 100644
index 000000000000..ca812989b4f2
--- /dev/null
+++ b/sdk/keyvault/azure-security-keyvault-secrets/src/main/resources/azure-key-vault-secrets.properties
@@ -0,0 +1,2 @@
+name=${project.artifactId}
+version=${project.version}
diff --git a/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/KeyVaultSecretsUserAgentPropertiesTest.java b/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/KeyVaultSecretsUserAgentPropertiesTest.java
new file mode 100644
index 000000000000..d3410876b23c
--- /dev/null
+++ b/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/KeyVaultSecretsUserAgentPropertiesTest.java
@@ -0,0 +1,21 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.security.keyvault.secrets;
+
+import com.azure.core.util.CoreUtils;
+import com.azure.core.util.UserAgentProperties;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class KeyVaultSecretsUserAgentPropertiesTest {
+
+ @Test
+ public void testAzureConfiguration() {
+ UserAgentProperties properties = CoreUtils.getUserAgentProperties("azure-key-vault-secrets.properties");
+ assertFalse(properties.getName().matches("UnknownName"));
+ assertTrue(properties.getVersion().matches("(\\d)+.(\\d)+.(\\d)+([-a-zA-Z0-9.])*"));
+ }
+}
diff --git a/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/SecretClientTestBase.java b/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/SecretClientTestBase.java
index 7bc64e3579f2..1af14cd26fe1 100644
--- a/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/SecretClientTestBase.java
+++ b/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/SecretClientTestBase.java
@@ -45,6 +45,9 @@ public abstract class SecretClientTestBase extends TestBase {
private static final String SECRET_NAME = "javaSecretTemp";
private static final String SECRET_VALUE = "Chocolate is hidden in the toothpaste cabinet";
+ private static final String SDK_NAME = "client_name";
+ private static final String SDK_VERSION = "client_version";
+
@Override
protected String getTestName() {
return "";
@@ -63,7 +66,7 @@ T clientSetup(Function clientBuilder) {
HttpClient httpClient;
// Closest to API goes first, closest to wire goes last.
final List policies = new ArrayList<>();
- policies.add(new UserAgentPolicy(AzureKeyVaultConfiguration.SDK_NAME, AzureKeyVaultConfiguration.SDK_VERSION, Configuration.getGlobalConfiguration().clone(), SecretServiceVersion.getLatest()));
+ policies.add(new UserAgentPolicy(SDK_NAME, SDK_VERSION, Configuration.getGlobalConfiguration().clone(), SecretServiceVersion.getLatest()));
HttpPolicyProviders.addBeforeRetryPolicies(policies);
policies.add(new RetryPolicy());
if (credential != null) {
diff --git a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/BlobCryptographyConfiguration.java b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/BlobCryptographyConfiguration.java
deleted file mode 100644
index 49a15917659e..000000000000
--- a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/BlobCryptographyConfiguration.java
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-package com.azure.storage.blob.specialized.cryptography;
-
-class BlobCryptographyConfiguration {
- static final String NAME = "azure-storage-blob-cryptography";
- // {x-version-update-start;com.azure:azure-storage-blob-cryptography;current}
- static final String VERSION = "12.1.0";
- // {x-version-update-end}
-}
diff --git a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/CryptographyConstants.java b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/CryptographyConstants.java
index b6dd0dce1187..b617093b9837 100644
--- a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/CryptographyConstants.java
+++ b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/CryptographyConstants.java
@@ -4,6 +4,9 @@
package com.azure.storage.blob.specialized.cryptography;
+import com.azure.core.util.CoreUtils;
+import com.azure.core.util.UserAgentProperties;
+
final class CryptographyConstants {
static final String ENCRYPTION_PROTOCOL_V1 = "1.0";
@@ -15,7 +18,12 @@ final class CryptographyConstants {
static final String AES = "AES";
- static final String AGENT_METADATA_VALUE = "JavaTrack2" + BlobCryptographyConfiguration.VERSION;
+ // This is properties file's name.
+ private static final String AZURE_STORAGE_PROPERTIES = "azure-storage-blob.properties";
+
+ static final UserAgentProperties USER_AGENT_PROPERTIES = CoreUtils.getUserAgentProperties(AZURE_STORAGE_PROPERTIES);
+
+ static final String AGENT_METADATA_VALUE = "JavaTrack2" + USER_AGENT_PROPERTIES.getVersion();
static final String ENCRYPTION_DATA_KEY = "encryptiondata";
@@ -34,6 +42,8 @@ final class CryptographyConstants {
static final String DECRYPT_UNENCRYPTED_BLOB = "Encryption client is being used but the blob metadata indicates "
+ "that it is not encrypted.";
+
private CryptographyConstants() {
}
+
}
diff --git a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
index c2a6cb419d90..225cde011f16 100644
--- a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
@@ -45,6 +45,8 @@
import java.util.List;
import java.util.Objects;
+import static com.azure.storage.blob.specialized.cryptography.CryptographyConstants.USER_AGENT_PROPERTIES;
+
/**
* This class provides a fluent builder API to help aid the configuration and instantiation of Storage Blob clients.
*
@@ -151,16 +153,14 @@ private HttpPipeline getHttpPipeline() {
return httpPipeline;
}
- String userAgentName = BlobCryptographyConfiguration.NAME;
- String userAgentVersion = BlobCryptographyConfiguration.VERSION;
Configuration userAgentConfiguration = (configuration == null) ? Configuration.NONE : configuration;
// Closest to API goes first, closest to wire goes last.
List policies = new ArrayList<>();
policies.add(new BlobDecryptionPolicy(keyWrapper, keyResolver));
- policies.add(new UserAgentPolicy(logOptions.getApplicationId(), userAgentName, userAgentVersion,
- userAgentConfiguration));
+ policies.add(new UserAgentPolicy(logOptions.getApplicationId(), USER_AGENT_PROPERTIES.getName(),
+ USER_AGENT_PROPERTIES.getVersion(), userAgentConfiguration));
policies.add(new RequestIdPolicy());
policies.add(new AddDatePolicy());
diff --git a/sdk/storage/azure-storage-blob-cryptography/src/test/java/com/azure/storage/blob/specialized/cryptography/BlobCryptographyUserAgentPropertiesTest.groovy b/sdk/storage/azure-storage-blob-cryptography/src/test/java/com/azure/storage/blob/specialized/cryptography/BlobCryptographyUserAgentPropertiesTest.groovy
new file mode 100644
index 000000000000..9494d059a704
--- /dev/null
+++ b/sdk/storage/azure-storage-blob-cryptography/src/test/java/com/azure/storage/blob/specialized/cryptography/BlobCryptographyUserAgentPropertiesTest.groovy
@@ -0,0 +1,20 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.storage.blob.specialized.cryptography
+
+import com.azure.core.util.CoreUtils
+import com.azure.core.util.UserAgentProperties
+import spock.lang.Specification
+
+class BlobCryptographyUserAgentPropertiesTest extends Specification {
+
+ def "User agent properties not null"() {
+ given:
+ UserAgentProperties properties = CoreUtils.getUserAgentProperties(
+ "azure-storage-blob.properties")
+ expect:
+ !properties.getName().matches("UnknownName")
+ properties.getVersion().matches("(\\d)+.(\\d)+.(\\d)+([-a-zA-Z0-9.])*")
+ }
+}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/util/BuilderHelper.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/util/BuilderHelper.java
index 9598ccf5f203..9535f1a224c5 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/util/BuilderHelper.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/util/BuilderHelper.java
@@ -16,6 +16,8 @@
import com.azure.core.http.policy.RequestIdPolicy;
import com.azure.core.http.policy.UserAgentPolicy;
import com.azure.core.util.Configuration;
+import com.azure.core.util.CoreUtils;
+import com.azure.core.util.UserAgentProperties;
import com.azure.core.util.logging.ClientLogger;
import com.azure.storage.blob.BlobUrlParts;
import com.azure.storage.common.StorageSharedKeyCredential;
@@ -37,10 +39,8 @@
* RESERVED FOR INTERNAL USE.
*/
public final class BuilderHelper {
- private static final String DEFAULT_USER_AGENT_NAME = "azure-storage-blob";
- // {x-version-update-start;com.azure:azure-storage-blob;current}
- private static final String DEFAULT_USER_AGENT_VERSION = "12.1.0";
- // {x-version-update-end}
+ private static final UserAgentProperties PROPERTIES =
+ CoreUtils.getUserAgentProperties("azure-storage-blob.properties");
/**
* Constructs a {@link HttpPipeline} from values passed from a builder.
@@ -153,8 +153,8 @@ public static void httpsValidation(Object objectToCheck, String objectName, Stri
private static UserAgentPolicy getUserAgentPolicy(Configuration configuration) {
configuration = (configuration == null) ? Configuration.NONE : configuration;
- return new UserAgentPolicy(getDefaultHttpLogOptions().getApplicationId(), DEFAULT_USER_AGENT_NAME,
- DEFAULT_USER_AGENT_VERSION, configuration);
+ return new UserAgentPolicy(getDefaultHttpLogOptions().getApplicationId(), PROPERTIES.getName(),
+ PROPERTIES.getVersion(), configuration);
}
/*
diff --git a/sdk/storage/azure-storage-blob/src/main/resources/azure-storage-blob.properties b/sdk/storage/azure-storage-blob/src/main/resources/azure-storage-blob.properties
new file mode 100644
index 000000000000..ca812989b4f2
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/main/resources/azure-storage-blob.properties
@@ -0,0 +1,2 @@
+name=${project.artifactId}
+version=${project.version}
diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/BlobUserAgentPropertiesTest.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/BlobUserAgentPropertiesTest.groovy
new file mode 100644
index 000000000000..67fc96cb840c
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/BlobUserAgentPropertiesTest.groovy
@@ -0,0 +1,20 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.storage.blob
+
+import com.azure.core.util.CoreUtils
+import com.azure.core.util.UserAgentProperties
+import spock.lang.Specification
+
+class BlobUserAgentPropertiesTest extends Specification {
+
+ def "User agent properties not null"() {
+ given:
+ UserAgentProperties properties = CoreUtils.getUserAgentProperties(
+ "azure-storage-blob.properties")
+ expect:
+ !properties.getName().matches("UnknownName")
+ properties.getVersion().matches("(\\d)+.(\\d)+.(\\d)+([-a-zA-Z0-9.])*")
+ }
+}
diff --git a/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/FileConfiguration.java b/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/FileConfiguration.java
deleted file mode 100644
index 272939249d3b..000000000000
--- a/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/FileConfiguration.java
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-package com.azure.storage.file.share;
-
-/*
- * Gets the SDK information for this library component.
- */
-class FileConfiguration {
- //TODO: Eventually remove these hardcoded strings with https://github.com/Azure/azure-sdk-for-java/issues/3141
- static final String NAME = "azure-storage-file-share";
- // {x-version-update-start;com.azure:azure-storage-file-share;current}
- static final String VERSION = "12.0.0";
- // {x-version-update-end}
-}
diff --git a/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/implementation/util/BuilderHelper.java b/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/implementation/util/BuilderHelper.java
index 66f8722672c8..518eaae5de9b 100644
--- a/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/implementation/util/BuilderHelper.java
+++ b/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/implementation/util/BuilderHelper.java
@@ -15,6 +15,7 @@
import com.azure.core.http.policy.UserAgentPolicy;
import com.azure.core.util.Configuration;
import com.azure.core.util.CoreUtils;
+import com.azure.core.util.UserAgentProperties;
import com.azure.storage.common.implementation.Constants;
import com.azure.storage.common.policy.RequestRetryOptions;
import com.azure.storage.common.policy.RequestRetryPolicy;
@@ -31,10 +32,8 @@
* This class provides helper methods for common builder patterns.
*/
public final class BuilderHelper {
- private static final String DEFAULT_USER_AGENT_NAME = "azure-storage-file-share";
- // {x-version-update-start;com.azure:azure-storage-file-share;current}
- private static final String DEFAULT_USER_AGENT_VERSION = "12.0.0";
- // {x-version-update-end}
+ private static final UserAgentProperties PROPERTIES =
+ CoreUtils.getUserAgentProperties("azure-storage-file-share.properties");
private static final Pattern IP_URL_PATTERN = Pattern
.compile("(?:\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})|(?:localhost)");
@@ -95,7 +94,7 @@ private static UserAgentPolicy getUserAgentPolicy(Configuration configuration) {
configuration = (configuration == null) ? Configuration.NONE : configuration;
return new UserAgentPolicy(getDefaultHttpLogOptions().getApplicationId(),
- DEFAULT_USER_AGENT_NAME, DEFAULT_USER_AGENT_VERSION, configuration);
+ PROPERTIES.getName(), PROPERTIES.getVersion(), configuration);
}
/**
diff --git a/sdk/storage/azure-storage-file-share/src/main/resources/azure-storage-file-share.properties b/sdk/storage/azure-storage-file-share/src/main/resources/azure-storage-file-share.properties
new file mode 100644
index 000000000000..ca812989b4f2
--- /dev/null
+++ b/sdk/storage/azure-storage-file-share/src/main/resources/azure-storage-file-share.properties
@@ -0,0 +1,2 @@
+name=${project.artifactId}
+version=${project.version}
diff --git a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileShareUserAgentPropertiesTest.groovy b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileShareUserAgentPropertiesTest.groovy
new file mode 100644
index 000000000000..d4f8af956cc6
--- /dev/null
+++ b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileShareUserAgentPropertiesTest.groovy
@@ -0,0 +1,20 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.storage.file.share
+
+import com.azure.core.util.CoreUtils
+import com.azure.core.util.UserAgentProperties
+import spock.lang.Specification
+
+class FileShareUserAgentPropertiesTest extends Specification {
+
+ def "User agent properties not null"() {
+ given:
+ UserAgentProperties properties = CoreUtils.getUserAgentProperties(
+ "azure-storage-file-share.properties")
+ expect:
+ !properties.getName().matches("UnknownName")
+ properties.getVersion().matches("(\\d)+.(\\d)+.(\\d)+([-a-zA-Z0-9.])*")
+ }
+}
diff --git a/sdk/storage/azure-storage-queue/src/main/java/com/azure/storage/queue/QueueConfiguration.java b/sdk/storage/azure-storage-queue/src/main/java/com/azure/storage/queue/QueueConfiguration.java
deleted file mode 100644
index 983e7f833b3b..000000000000
--- a/sdk/storage/azure-storage-queue/src/main/java/com/azure/storage/queue/QueueConfiguration.java
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-package com.azure.storage.queue;
-
-/*
- * Gets the SDK information for this library component.
- */
-class QueueConfiguration {
- //TODO: Eventually remove these hardcoded strings with https://github.com/Azure/azure-sdk-for-java/issues/3141
- static final String NAME = "azure-storage-queue";
- // {x-version-update-start;com.azure:azure-storage-queue;current}
- static final String VERSION = "12.1.0";
- // {x-version-update-end}
-}
diff --git a/sdk/storage/azure-storage-queue/src/main/java/com/azure/storage/queue/implementation/util/BuilderHelper.java b/sdk/storage/azure-storage-queue/src/main/java/com/azure/storage/queue/implementation/util/BuilderHelper.java
index 2a14ca7f402c..fb0ecb71288d 100644
--- a/sdk/storage/azure-storage-queue/src/main/java/com/azure/storage/queue/implementation/util/BuilderHelper.java
+++ b/sdk/storage/azure-storage-queue/src/main/java/com/azure/storage/queue/implementation/util/BuilderHelper.java
@@ -17,6 +17,7 @@
import com.azure.core.http.policy.UserAgentPolicy;
import com.azure.core.util.Configuration;
import com.azure.core.util.CoreUtils;
+import com.azure.core.util.UserAgentProperties;
import com.azure.core.util.logging.ClientLogger;
import com.azure.storage.common.StorageSharedKeyCredential;
import com.azure.storage.common.implementation.Constants;
@@ -41,10 +42,8 @@
* This class provides helper methods for common builder patterns.
*/
public final class BuilderHelper {
- private static final String DEFAULT_USER_AGENT_NAME = "azure-storage-queue";
- // {x-version-update-start;com.azure:azure-storage-queue;current}
- private static final String DEFAULT_USER_AGENT_VERSION = "12.1.0";
- // {x-version-update-end}
+ private static final UserAgentProperties PROPERTIES =
+ CoreUtils.getUserAgentProperties("azure-storage-queue.properties");
private static final Pattern IP_URL_PATTERN = Pattern
.compile("(?:\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})|(?:localhost)");
@@ -202,7 +201,7 @@ private static UserAgentPolicy getUserAgentPolicy(Configuration configuration) {
configuration = (configuration == null) ? Configuration.NONE : configuration;
return new UserAgentPolicy(getDefaultHttpLogOptions().getApplicationId(),
- DEFAULT_USER_AGENT_NAME, DEFAULT_USER_AGENT_VERSION, configuration);
+ PROPERTIES.getName(), PROPERTIES.getVersion(), configuration);
}
/*
diff --git a/sdk/storage/azure-storage-queue/src/main/resources/azure-storage-queue.properties b/sdk/storage/azure-storage-queue/src/main/resources/azure-storage-queue.properties
new file mode 100644
index 000000000000..ca812989b4f2
--- /dev/null
+++ b/sdk/storage/azure-storage-queue/src/main/resources/azure-storage-queue.properties
@@ -0,0 +1,2 @@
+name=${project.artifactId}
+version=${project.version}
diff --git a/sdk/storage/azure-storage-queue/src/test/java/com/azure/storage/queue/QueueUserAgentPropertiesTest.groovy b/sdk/storage/azure-storage-queue/src/test/java/com/azure/storage/queue/QueueUserAgentPropertiesTest.groovy
new file mode 100644
index 000000000000..523a6b626407
--- /dev/null
+++ b/sdk/storage/azure-storage-queue/src/test/java/com/azure/storage/queue/QueueUserAgentPropertiesTest.groovy
@@ -0,0 +1,20 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.storage.queue;
+
+import com.azure.core.util.CoreUtils
+import com.azure.core.util.UserAgentProperties
+import spock.lang.Specification
+
+class QueueUserAgentPropertiesTest extends Specification {
+
+ def "User agent properties not null"() {
+ given:
+ UserAgentProperties properties = CoreUtils.getUserAgentProperties(
+ "azure-storage-queue.properties")
+ expect:
+ !properties.getName().matches("UnknownName")
+ properties.getVersion().matches("(\\d)+.(\\d)+.(\\d)+([-a-zA-Z0-9.])*")
+ }
+}