From d2bfb6fdd103e3b73ead3c505c45220e6238148b Mon Sep 17 00:00:00 2001 From: Muyao Date: Mon, 3 Jul 2023 10:44:42 +0800 Subject: [PATCH] improve AzureSpringIdentifier --- .../util/AzureSpringIdentifier.java | 16 +++++++++++++++ .../util/AzureSpringIdentifierTests.java | 20 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 sdk/spring/spring-cloud-azure-core/src/test/java/com/azure/spring/cloud/core/implementation/util/AzureSpringIdentifierTests.java diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/util/AzureSpringIdentifier.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/util/AzureSpringIdentifier.java index 036e42ec8f9d..392c0fc91a3b 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/util/AzureSpringIdentifier.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/util/AzureSpringIdentifier.java @@ -39,6 +39,7 @@ private AzureSpringIdentifier() { // b2c: for AAD B2C private static final Logger LOGGER = LoggerFactory.getLogger(AzureSpringIdentifier.class); public static final String VERSION = getVersion(); + public static final int MAX_VERSION_LENGTH = 12; public static final String AZURE_SPRING_APP_CONFIG = "az-sp-cfg/" + VERSION; public static final String AZURE_SPRING_EVENT_HUBS = "az-sp-eh/" + VERSION; @@ -92,9 +93,24 @@ private static String getVersion() { Properties properties = PropertiesLoaderUtils.loadProperties( new ClassPathResource("azure-spring-identifier.properties")); version = properties.getProperty("version"); + //Add this logic to avoid creating app id failed + version = formatVersion(version); } catch (IOException e) { LOGGER.warn("Can not get version."); } return version; } + + static String formatVersion(String version) { + if (version.length() > MAX_VERSION_LENGTH) { + if (version.contains("beta")) { + version = version.replace("beta", "b"); + } else if (version.contains("alpha")) { + version = version.replace("alpha", "a"); + } else { + throw new RuntimeException("version is too long to create application id"); + } + } + return version; + } } diff --git a/sdk/spring/spring-cloud-azure-core/src/test/java/com/azure/spring/cloud/core/implementation/util/AzureSpringIdentifierTests.java b/sdk/spring/spring-cloud-azure-core/src/test/java/com/azure/spring/cloud/core/implementation/util/AzureSpringIdentifierTests.java new file mode 100644 index 000000000000..358b4fbb3b01 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-core/src/test/java/com/azure/spring/cloud/core/implementation/util/AzureSpringIdentifierTests.java @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.core.implementation.util; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class AzureSpringIdentifierTests { + + @Test + void testFormatVersion() { + Assertions.assertEquals(AzureSpringIdentifier.formatVersion("4.10.0"), "4.10.0"); + Assertions.assertEquals(AzureSpringIdentifier.formatVersion("4.9.0-beta.1"), "4.9.0-beta.1"); + Assertions.assertEquals(AzureSpringIdentifier.formatVersion("4.10.0-beta.1"), "4.10.0-b.1"); + Assertions.assertEquals(AzureSpringIdentifier.formatVersion("4.10.0-alpha.1"), "4.10.0-a.1"); + Assertions.assertThrows(RuntimeException.class, () -> AzureSpringIdentifier.formatVersion("4.10.0-SNAPSHOT")); + } + +}